Remco Epicnabbo 9a3fa1eb6b Replace README with catalog DB reference
Replace previous EpicNabbo v2 development README with a comprehensive Catalog Database Reference. The new document details core tables (items_base, catalog_pages, catalog_items), additional catalog tables, full column schemas, compatibility with Arcturus emulator, Nitro-V3 client and Nitro_Render_V3 renderer, schema differences, data flow diagram, and reference counts from FullDatabase.sql. Removes the prior development warning/marketing content and provides actionable technical documentation and links to relevant files for developers.
2026-06-11 16:11:52 +02:00
2026-06-09 20:19:33 +02:00

Catalog Database Reference

This document describes the core catalog tables (catalog_items, catalog_pages, items_base) and their compatibility across the Habbo retro stack.

Overview

The catalog system consists of three core database tables shared between the emulator (Arcturus Morningstar Extended), Nitro-V3 (React client), and Nitro_Render_V3 (renderer):

items_base        → defines every furniture item (interaction type, dimensions, stack behavior, etc.)
catalog_pages     → defines the catalog tree structure (pages, sub-pages, layouts)
catalog_items     → defines what items are sold on which pages and at what price

Additional tables for special catalog features:

  • catalog_pages_bc / catalog_items_bc — Builders Club catalog
  • catalog_items_limited — tracks limited-edition (RARE) item sales
  • catalog_club_offers — HC/VIP/BC subscription offers
  • catalog_clothing — wearable clothing items
  • catalog_featured_pages — front page featured slots
  • catalog_target_offers — targeted promotional offers

Table Schemas

items_base

Defines the base properties of every furniture item. Referenced by catalog_items.item_ids, items.id, and many other tables via foreign key.

Column Type Description
id int(10) unsigned Primary key, matches sprite ID in FurnitureData
sprite_id int(11) Sprite identifier (usually same as id)
public_name varchar(56) Display name shown in the client
item_name varchar(70) Internal classname (matches FurnitureData classname)
type varchar(3) s = floor item, i = wall item, r = robot/bot, e = effect
width int(11) Tile width
length int(11) Tile length
stack_height double(4,2) Stack height (0.00 = flat, 1.00 = normal stack)
allow_stack tinyint(1) Can other items be stacked on top
allow_sit tinyint(1) Can avatars sit on this
allow_lay tinyint(1) Can avatars lay on this
allow_walk tinyint(1) Can avatars walk through this
allow_gift tinyint(1) Can this be wrapped as a gift
allow_trade tinyint(1) Can players trade this
allow_recycle tinyint(1) Can this be recycled
allow_marketplace_sell tinyint(1) Can this be sold on the marketplace
allow_inventory_stack tinyint(1) Does this stack in inventory
interaction_type varchar(500) Behavior type (e.g. default, gate, teleport, wired_trigger, dimmer, postit, bed, chair, football_counter, etc.)
interaction_modes_count int(11) Number of interaction states (e.g. 2 for toggleable items)
vending_ids varchar(255) Vending machine reward item IDs
multiheight varchar(50) Multi-height stack data
customparams varchar(256) Custom parameters (e.g. clothing set IDs)
effect_id_male int(11) Male avatar effect ID
effect_id_female int(11) Female avatar effect ID
clothing_on_walk varchar(255) Clothing effect applied on walk

catalog_pages

Defines the hierarchical catalog tree structure visible in the Nitro client.

Column Type Description
id int(11) Primary key
parent_id int(11) Parent page ID (-1 = root page)
caption_save varchar(25) Internal caption key
caption varchar(128) Display caption
page_layout enum Layout type: default_3x3, frontpage, club_buy, club_gift, spaces, spaces_new, recycler, trophies, plasto, soundmachine, guilds, guild_furni, bots, pets, single_bundle, productpage1, room_bundle, sold_ltd_items, badge_display, vip_buy, default_3x3_color_grouping, frontpage_featured, petcustomization, collectibles, info_duckets, info_rentables, info_pets, recent_purchases, marketplace, marketplace_own_items, roomads, guild_forum, info_loyalty, loyalty_vip_buy
icon_color int(11) Catalog icon color (1-255)
icon_image int(11) Catalog icon image ID
min_rank int(11) Minimum rank to view
order_num int(11) Sort order
visible enum('0','1') Is the page visible
enabled enum('0','1') Is the page enabled
club_only enum('0','1') HC/VIP only
vip_only enum('1','0') VIP only
page_headline varchar(1024) Headline image/text key
page_teaser varchar(64) Teaser image key
page_special varchar(2048) Special layout data
page_text1 text Primary page text
page_text2 text Secondary page text
page_text_details text Detail text
page_text_teaser text Teaser text
room_id int(11) Room ID (for room bundle pages)
includes varchar(128) Sem colon separated page IDs to include (1;2;3)
catalog_mode enum('NORMAL','BUILDER','BOTH') Catalog mode

catalog_items

Links items_base entries to catalog_pages with pricing and availability.

Column Type Description
id int(11) Primary key
item_ids varchar(666) Comma-separated items_base IDs (usually single ID)
page_id int(11) FK → catalog_pages.id
offer_id int(11) Offer ID (-1 = default)
song_id int(10) unsigned Trax song ID
order_number int(11) Sort order within the page
catalog_name varchar(100) Catalog name / offer identifier
cost_credits int(11) Credit cost
cost_points int(11) Points/currency cost
points_type int(11) 0 = duckets, 5 = diamonds, others = seasonal currencies
amount int(11) Amount received per purchase
limited_sells int(11) How many have been sold (auto-tracked)
limited_stack int(11) Total limited quantity (0 = unlimited)
extradata varchar(500) Extra data (e.g. badge code, preset data)
badge varchar(500) Badge code (AtomCMS extension, always null for emulator)
have_offer enum('0','1') Is the offer active
club_only enum('0','1') HC/VIP only
rate varchar(255) Rate info (AtomCMS extension, always null for emulator)

Compatibility Matrix

Emulator (Arcturus Morningstar Extended)

Table Status Notes
items_base Full native The emulator reads this directly for furniture definitions. Full schema match.
catalog_pages Full native The emulator reads from this for catalog tree. Full schema match.
catalog_items Full native The emulator reads this for offers/pricing. Full schema match.

The emulator directly queries all three tables via its DAO layer. No translation or mapping layer is needed.

Nitro-V3 (React Client)

Table Status Notes
items_base Full native via emulator Client never reads DB directly. Data flows: DB → emulator → Nitro protocol → client. public_name is used by FurniEditor (see src/hooks/furni-editor/useFurniEditor.ts:11).
catalog_pages Full native via emulator Catalog tree is served by the emulator through CatalogModeComposer / CatalogPageComposer protocol messages.
catalog_items Full native via emulator Offer data is served by the emulator through CatalogOfferComposer protocol messages.

The client does not require any direct database access. All catalog data is served real-time via the emulator's Nitro WebSocket protocol.

Nitro_Render_V3 (Renderer)

Table Status Notes
items_base Compatible via client The renderer receives furniture rendering data (dimensions, interaction type, states) from the client, which receives it from the emulator.
catalog_pages Not applicable The renderer does not deal with catalog pages.
catalog_items Not applicable The renderer does not deal with catalog offers.

The renderer consumes FurnitureData.json (gamedata) for sprite/asset mapping. The items_base.interaction_type must match the interaction logic in the renderer's room engine.

Schema Differences

The AtomCMS schema has two extra columns on catalog_items compared to the emulator's reference schema:

Column AtomCMS Emulator Impact
badge varchar(500) Not present Backward compatible — extra column ignored by emulator
rate varchar(255) Not present Backward compatible — extra column ignored by emulator
PRIMARY KEY (id, extradata) (id) AtomCMS composite PK does not break emulator FK constraints (fk_catitems_page references page_id)

These are safe additions. The emulator only reads the columns it knows about.

Data Flow

┌──────────────┐     SQL      ┌──────────────┐   Nitro Protocol   ┌──────────┐   Render Cmds   ┌────────────────┐
│  MySQL/Maria │ ◄──────────► │  Emulator    │ ◄────────────────► │ Nitro-V3 │ ◄──────────────► │ Nitro_Render_V3│
│  (items_base,│              │  (Arcturus   │   (WebSocket)      │  (React)  │                  │  (PixiJS)      │
│   catalog_*, │              │   Morningstar│                    │           │                  │                │
│   ...)       │              │   Extended)  │                    │           │                  │                │
└──────────────┘              └──────────────┘                    └──────────┘                  └────────────────┘

Reference Data

The FullDatabase.sql shipped with the emulator contains:

  • ~10,420 items_base rows
  • ~769 catalog_pages rows
  • ~10,790 catalog_items rows

This is the complete, production-ready catalog for Arcturus Morningstar Extended, fully compatible with Nitro-V3 and Nitro_Render_V3 out of the box.

See Also

  • /var/www/emulator/Default Database/FullDatabase.sql — reference database
  • /var/www/emulator/docs/builders_club_catalog_reference.md — BC catalog docs
  • /var/www/atomcms/database/schema/mysql-schema.sql — AtomCMS schema
  • /var/www/atomcms/app/Services/CatalogService.php — CMS catalog sync tools
  • /var/www/Nitro-V3/src/hooks/furni-editor/useFurniEditor.ts — client furni editor
S
Description
A complete catalogue for the habbo enviroment
Readme 9.7 GiB
Languages
SQL 100%