Skip to main content

Furniture (Floor & Wall Items)

Place Furniture + Toggle flow:

Placer (client) Server Room (all clients incl. placer)
│ │ │
│── [1258] PlaceItem ────>│ │
│ body: "12345 3 4 2" │ parse: itemId=12345, │
│ (itemId x y rotation) │ tile=(3,4), rot=2 │
│ │ validate rights + placement │
│ │ move item from inventory │
│ │ to room DB │
│ │ │
│ │── [1534] AddFloorItem ───────>│
│ │ body: full floor item entry │
│ │ including ownerName:string │
│ │ (broadcast - placer │
│ │ receives this too, same as │
│ │ [1778] bulk but single item)│
│ │ │
│── [99] ToggleFloor ────>│ │
│ body: itemId=12345, │ run interaction handler │
│ state=1 │ (e.g. turn on, switch state) │
│ │ │
│ │── [2376] ItemState ──────────>│
│ │ body: itemId:int, state:str │
│ │ (broadcast current state) │

Note on [1534] vs [1778]: AddFloorItem has an extra trailing ownerName:string field that the bulk RoomFloorItems [1778] does not have. The client uses the owner name from the add-event to populate the furniture context menu ("Pick up - Owner: X") without a separate lookup. The [3776] FloorItemUpdate (sent on move/rotate) shares the same layout as AddFloorItem.

Note on ToggleFloorItem vs ToggleWallItem: Both [99] and [210] read itemId:int, state:int. The response depends on the item's interaction type - most items broadcast [2376] ItemState, but some (e.g. wired triggers) broadcast [3776] FloorItemUpdate with the full item entry instead.

Wall position format

":w=<wallX>,<wallY> l=<localX>,<localY> <direction>"

Example: :w=3,3 l=10,55 r (right wall, column 3 row 3, local offset 10,55)

C→S 1258 - RoomPlaceItem (place from inventory)

Nitro: FURNITURE_PLACE - Room context dropped; Item→FURNITURE. Source: RoomPlaceItemEvent, FurniturePlaceComposer

Places a furniture item from inventory into the room at a specified position and rotation.

Body:
placementData: string Format: "{itemId} {x} {y} {rotation}" for floor items

C→S 248 - RotateMoveItem

Nitro: FURNITURE_FLOOR_UPDATE - Rotate/move→FLOOR_UPDATE (more abstract name). Source: RotateMoveItemEvent, FurnitureFloorUpdateComposer

Moves or rotates a floor furniture item to a new tile position and rotation.

Body:
itemId: int
x: int
y: int

C→S 168 - MoveWallItem

Nitro: FURNITURE_WALL_UPDATE / ITEM_WALL_UPDATE - Move→UPDATE. Two Nitro aliases for the same packet ID. Source: MoveWallItemEvent

Moves a wall item to a new wall position.

Body:
itemId: int Wall item ID (read as int, not string)

C→S 3456 - RoomPickupItem

Nitro: FURNITURE_PICKUP

Source: RoomPickupItemEvent, FurniturePickupComposer

FieldTypeNotes
categoryint10 = floor item, 20 = wall item
itemIdintID of the item to pick up

Picks up (returns to inventory) a floor or wall furniture item placed in the room.

C→S 99 - ToggleFloorItem

Nitro: FURNITURE_MULTISTATE - Toggle (verb) vs MULTISTATE (noun). Nitro treats this as a multi-state furniture, not a toggle action.

Source: ToggleFloorItemEvent, FurnitureMultiStateComposer

FieldTypeNotes
itemIdintID of the floor item to toggle
stateintNew state value

Interacts with a floor furniture item - toggles its state (e.g. on/off, next state).

C→S 210 - ToggleWallItem

Nitro: FURNITURE_WALL_MULTISTATE / ITEM_WALL_CLICK - Two Nitro aliases. Toggle→MULTISTATE or CLICK depending on context.

Source: ToggleWallItemEvent

FieldTypeNotes
itemIdintID of the wall item to toggle
stateintNew state value

Interacts with a wall furniture item - toggles its state.

C→S 3617 - UseRandomStateItem

Nitro: FURNITURE_RANDOMSTATE

Source: UseRandomStateItemEvent, FurnitureRandomStateComposer

FieldTypeNotes
itemIdintID of the item
stateintTarget state index

Activates a floor furniture item that transitions to a random state (e.g. dice roll without explicit trigger).

C→S 1990 - TriggerDice

Nitro: ITEM_DICE_CLICK

Source: TriggerDiceEvent, FurnitureDiceActivateComposer

FieldTypeNotes
itemIdintID of the dice item to roll

Rolls a dice furniture item, triggering its animation and random result.

C→S 1533 - CloseDice

Nitro: ITEM_DICE_CLOSE

Source: CloseDiceEvent, FurnitureDiceDeactivateComposer

FieldTypeNotes
itemIdintID of the dice item to close/freeze

Notes: Triggers scripter detection if the item is not a dice or is not in the current room.

Closes (locks) a dice furniture item to fix its current face value.

C→S 2144 - TriggerColorWheel

Nitro: ITEM_COLOR_WHEEL_CLICK

Source: TriggerColorWheelEvent, FurnitureColorWheelComposer

FieldTypeNotes
itemIdintID of the color wheel item

Spins a colour-wheel furniture item to select a random colour.

C→S 2765 - TriggerOneWayGate

Nitro: ONE_WAY_DOOR_CLICK

Source: TriggerOneWayGateEvent, FurnitureOneWayDoorComposer

FieldTypeNotes
itemIdintID of the one-way gate item

Activates a one-way gate furniture item to open/close passage.

C→S 2813 - MoodLightSettings

Nitro: ITEM_DIMMER_SETTINGS

Source: MoodLightSettingsEvent, MoodlightSettingsComposer

FieldTypeNotes
(empty)-No body fields read

Notes: Requests the current moodlight settings. Response is ITEM_DIMMER_SETTINGS (S→C 2710).

Requests the current mood light (coloured dimmer) configuration for the room.

C→S 2296 - MoodLightTurnOn

Nitro: ITEM_DIMMER_TOGGLE

Source: MoodLightTurnOnEvent, MoodlightTogggleStateComposer

FieldTypeNotes
(empty)-No body fields read

Notes: Toggles the moodlight on/off; the server looks up the active item in the room.

Toggles the mood light furniture on or off.

C→S 1648 - MoodLightSaveSettings

Nitro: ITEM_DIMMER_SAVE

Source: MoodLightSaveSettingsEvent, MoodlightSettingsSaveComposer

FieldTypeNotes
presetIdintPreset slot to save (1–3)
backgroundOnlyint1 = apply to background only, 0 = full room
colorstringHex color string (e.g. #FF0000)
brightnessintBrightness value
applybooleanWhether to apply this preset immediately

Saves new mood light settings (colour, brightness, background mode) to the furniture item.

C→S 2209 - MannequinSaveLook

Nitro: MANNEQUIN_SAVE_LOOK

Source: MannequinSaveLookEvent, FurnitureMannequinSaveLookComposer

FieldTypeNotes
itemIdintID of the mannequin furniture item

Notes: The handler uses the interacting user's current look - no look string is sent in the packet. The mannequin copies the user's figure directly.

Saves the user's current avatar figure and gender to a mannequin furniture item.

C→S 2850 - MannequinSaveName

Nitro: MANNEQUIN_SAVE_NAME

Source: MannequinSaveNameEvent, FurnitureMannequinSaveNameComposer

FieldTypeNotes
itemIdintID of the mannequin item
namestringNew display name for the mannequin

Saves a display name to a mannequin furniture item.

C→S 2248 - PostItPlace

Nitro: FURNITURE_POSTIT_PLACE

Source: PostItPlaceEvent, FurniturePostItPlaceComposer

FieldTypeNotes
itemIdintID of the post-it item from inventory
locationstringWall position string (e.g. :w=3,2 l=9,43 l)

Places (creates) a new post-it sticky note on the room floor at specified coordinates.

C→S 3666 - PostItSaveData

Nitro: SET_ITEM_DATA

Source: PostItSaveDataEvent, SetItemDataMessageComposer

FieldTypeNotes
itemIdintID of the post-it item
colorstringPost-it color code
textstringPost-it message text (word-filtered)

Saves text and colour data to an existing post-it sticky note.

C→S 3964 - PostItRequestData

Nitro: GET_ITEM_DATA

Source: PostItRequestDataEvent, GetItemDataComposer

FieldTypeNotes
itemIdintID of the post-it item to read

Requests the content of a post-it sticky note by item ID.


C→S 3336 - PostItDelete

Nitro: REMOVE_WALL_ITEM

Source: PostItDeleteEvent, RemoveWallItemComposer

FieldTypeNotes
itemIdintID of the post-it item to delete

Notes: Despite the Nitro name REMOVE_WALL_ITEM, this handler is specifically for post-it notes. Standard wall items use MoveWallItemEvent (C→S 168) / TakeBackItem (C→S 434).

Deletes a post-it sticky note from the room.

C→S 3839 - SetStackHelperHeight

Nitro: ITEM_STACK_HELPER

Source: SetStackHelperHeightEvent, FurnitureStackHeightComposer

FieldTypeNotes
itemIdintID of the stack tile item
heightintTarget stack height (divided internally, matches tile height units)

Sets the height of the stack tile (magic tile) furniture item used to stack other items at a custom Z position.

C→S 711 - RoomPlacePaint

Nitro: ITEM_PAINT

Source: RoomPlacePaintEvent, FurniturePlacePaintComposer

FieldTypeNotes
itemIdintID of the paint/decoration item to apply

Notes: Used for placing room decoration items (wallpaper, floor, landscape). The server determines which of the three slots to apply based on the item type.

Paints the room floor/wall/landscape using a decoration item in the user's inventory.

C→S 2880 - RoomBackground

Nitro: ROOM_TONER_APPLY

Source: RoomBackgroundEvent, ApplyTonerComposer

FieldTypeNotes
itemIdintID of the background toner item
hueintHue adjustment (0–360)
saturationintSaturation adjustment
brightnessintBrightness adjustment

Applies a background toner / colour effect to the room. Sends RGB toner values.

C→S 924 - FootballGateSaveLook

Nitro: SET_CLOTHING_CHANGE_DATA

Source: FootballGateSaveLookEvent, SetClothingChangeDataMessageComposer

FieldTypeNotes
itemIdintID of the football gate furniture item
genderstringGender code ("M" or "F")
lookstringHabbo figure string for the costume

Saves the team colour / look to a football gate furniture item.

C→S 2941 - RoomUserGiveHandItem

Nitro: UNIT_GIVE_HANDITEM

Source: RoomUserGiveHandItemEvent, RoomUnitGiveHandItemComposer

FieldTypeNotes
userIdintRoom unit ID of the target user to give the hand item to

Gives the hand-held item the user is currently carrying to another user in the room.

C→S 2651 - RequestGuildFurniWidget

Nitro: FURNITURE_GROUP_INFO

Source: RequestGuildFurniWidgetEvent, FurnitureGroupInfoComposer

FieldTypeNotes
(empty)-No body fields; server uses context from current room

Notes: Requests guild context-menu info for the guild furniture the user is interacting with. Response is FURNITURE_GROUP_CONTEXT_MENU_INFO (S→C 3293).

Requests guild-related data (badge, name, membership info) for a guild furniture item (e.g. guild gate, forum terminal).

C→S 3608 - AdvertisingSave

Nitro: SET_OBJECT_DATA

Source: AdvertisingSaveEvent, SetObjectDataMessageComposer

FieldTypeNotes
itemIdintID of the advertising/info-poster item
countintNumber of key-value pairs that follow
data[]repeatedPer entry: key:string, value:string

Saves advertising data (URL, image) to a clickable advertising furniture item.

C→S 2768 - UnitGiveHanditemPet

Nitro: UNIT_GIVE_HANDITEM_PET Note: No Arcturus handler - Nitro only. Source: RoomUnitGiveHandItemPetComposer

FieldTypeNotes
unitIdintRoom entity ID of the pet to give the held hand item to

Gives a hand-held item to a pet in the room.

Gives the hand item the current user is holding to a pet in the room. Nitro-only.

S→C 1778 - RoomFloorItems (bulk floor furniture)

Source: RoomFloorItemsComposer, FurnitureFloorEvent

Delivers the bulk floor furniture list for a room at load time, including all item data and current states.

Body:
ownerCount: int
[ownerCount]:
ownerId: int
ownerName: string
itemCount: int
[itemCount floor items]:
itemId: int
spriteId: int Base item sprite ID
x: int
y: int
rotation: int 0, 2, 4, 6
z: string Z height as string
stackHeight: string Walk/sit height or "" or "1.0" for trophies
extraData: int Gift: (colorId*1000 + ribbonId), MusicDisc: songId, else: 1
extraInfo: * Limited edition: [sells:int, stack:int]; else absent
unknownInt: int Always -1
usable: int 0=not usable, 1=usable, 2=trigger type

S→C 1369 - RoomWallItems (bulk wall furniture)

Source: RoomWallItemsComposer, FurnitureWallEvent

Delivers the bulk wall furniture list for a room at load time.

Body:
ownerCount: int
[ownerCount]:
ownerId: int
ownerName: string
itemCount: int
[itemCount wall items]:
itemId: string Wall item ID as string
spriteId: int
wallPosition: string Position in ":w=x,y l=x,y" format
extraData: string Post-it: just the color; others: extra data string
unknown: int Always -1
usable: int

S→C 1534 - AddFloorItem (single item placed)

Source: AddFloorItemComposer, FurnitureFloorAddEvent

AddFloorItem has one extra trailing field compared to the bulk RoomFloorItems:

Notifies clients that a single floor item has been placed in the room (real-time update).

Body:
itemId: int
spriteId: int
x: int
y: int
rotation: int
z: string Z height as string
stackHeight: string Walk/sit height or "" or "1.0" for trophies
extraData: int Gift: (colorId*1000+ribbonId), MusicDisc: songId, else: 1
*[limited edition]: limitedSells:int, limitedStack:int
unknownInt: int Always -1
usable: int 0=not usable, 1=usable, 2=trigger type
ownerId: int

S→C 2187 - AddWallItem (single item placed)

Source: AddWallItemComposer, FurnitureWallAddEvent

Same field structure as a single entry in RoomWallItems above.

S→C 3776 - FloorItemUpdate (item state change)

Source: FloorItemUpdateComposer, FurnitureFloorUpdateEvent

Notifies clients of an updated state for a floor furniture item (e.g. after interaction).

S→C 2009 - WallItemUpdate

Source: WallItemUpdateComposer, FurnitureWallUpdateEvent

Notifies clients of an updated state for a wall furniture item.

S→C 2376 - ItemState

Source: ItemStateComposer, OneWayDoorStatusMessageEvent

Delivers a state-change event for a single furniture item (e.g. one-way door open/close).

Body:
itemId: int

S→C 3431 - ItemsDataUpdate

Nitro: FURNITURE_STATE_2

Source: ItemsDataUpdate, DiceValueMessageEvent

FieldTypeNotes
itemCountintNumber of items whose data is being updated
itemIds[]int[]IDs of the updated items

Notes: Sent when multiple items' extra-data changes simultaneously (e.g. wired effect batch update). Only sends IDs; clients must re-request item data individually.

Pushes updated extra data (state strings) for one or more furniture items currently in the room.

S→C 2547 - ItemExtraData

Source: ItemExtraDataComposer, FurnitureDataEvent

Delivers updated extra-data (state string) for a furniture item in the room.

Body:
itemId: string
type: int

S→C 2703 - RemoveFloorItem

Source: RemoveFloorItemComposer, FurnitureFloorRemoveEvent

Body:
itemId: string Item ID as string (e.g. "12345")
expired: boolean Always false
ownerId: int Account ID of item owner (0 if noUser flag set)
unknown: int Always 0

Notifies clients that a floor furniture item has been removed from the room.

S→C 3208 - RemoveWallItem

Source: RemoveWallItemComposer, FurnitureWallRemoveEvent

Notifies clients that a wall furniture item has been removed from the room.

Body:
itemId: string Wall item ID as string

S→C 1474 - RoomUserHandItem

Nitro: UNIT_HAND_ITEM

Source: RoomUserHandItemComposer, RoomUnitHandItemEvent

FieldTypeNotes
roomUnitIdintRoom unit ID of the user holding the item
handItemIdintID of the held hand item (0 = empty hands)

Notifies clients that a room user is now carrying a specific hand item (e.g. a drink or carryable).

S→C 2324 - RoomUserReceivedHandItem

Nitro: UNIT_NUMBER

Source: FreezeLivesComposer, RoomUnitNumberEvent

FieldTypeNotes
fromRoomUnitIdintRoom unit ID of the giver
handItemIdintID of the received hand item

Notes: Nitro constant UNIT_NUMBER appears misnamed - this composer sends hand-item-received data, not a unit number.

Notifies the recipient that they have received a hand item from another user.

S→C 1501 - PostItStickyPoleOpen

Nitro: USER_FURNITURE_POSTIT_PLACED

Source: UnknownFurniModelComposer, FurniturePostItPlacedEvent

FieldTypeNotes
itemIdintID of the sticky-pole item (−1234 if null)
unknownstringAlways empty

Delivers the content of a post-it note to the requesting user (initial open).

S→C 2366 - PostItStickyPoleOpen (variant)

Nitro: FURNITURE_POSTIT_STICKY_POLE_OPEN

Source: PostItStickyPoleOpenComposer, RequestSpamWallPostItMessageEvent

FieldTypeNotes
itemIdintID of the sticky-pole item (−1234 if null)
unknownstringAlways empty

Notes: Same composer class as S→C 1501 (USER_FURNITURE_POSTIT_PLACED) - the same Java class sends to two different IDs depending on context.

Variant post-it open response - used for a different post-it format or second open event.

S→C 2202 - PostItData

Nitro: FURNITURE_ITEMDATA

Source: PostItDataComposer, ItemDataUpdateMessageEvent

FieldTypeNotes
itemIdstringID of the post-it item (sent as string)
extraDatastringThe post-it's stored extra-data (color + text joined)

Notes: Discrepancy: itemId is sent as a string here, unlike most item packets which use int. This is confirmed in PostItDataComposer.java.

Delivers the text and colour data of a post-it sticky note.

S→C 2710 - MoodLightData

Nitro: ITEM_DIMMER_SETTINGS

Source: MoodLightDataComposer, RoomDimmerPresetsEvent

FieldTypeNotes
presetCountintAlways 3
presets[]repeated (3×)Per preset: id:int, backgroundOnly:int(1=bg only/2=full), color:string, brightness:int
activePresetIndexintCurrently active preset (1–3)
unknownintAlways 1
defaultColorstringAlways #000000

Delivers current mood light configuration (presets, active preset, colour, brightness, background mode) for the room.

S→C 2816 - UpdateStackHeightTileHeight

Nitro: ITEM_STACK_HELPER

Source: UpdateStackHeightTileHeightComposer, FurnitureStackHeightEvent

FieldTypeNotes
itemIdintID of the stack tile item
heightintNew height value (in tile height units)

Updates the displayed height of a stack tile (magic tile) furniture item on a specific room tile after its height was changed.