Zum Hauptinhalt springen

craftengine_set_quest_furniture

Type: action entry Exact entry ID: craftengine_set_quest_furniture

Role

This TypeWriter entry is registered in code with the exact display name Hide or show one piece of the world's furniture, for one player, inside a quest zone.

It takes a piece of furniture the builder placed out of one player's view, or puts it back. The world keeps the furniture; this player's scope simply stops being shown it. Everyone else still sees it.

furnitureId says which furniture at the block is meant. Two pieces can share an anchor block — the intact seal and the broken one placed at the same spot — and hiding by position alone hid both, which read as the furniture vanishing altogether. Name the id, and the other piece stays in view.

Like every deviation in a quest zone, this is remembered — the player finds the same view when they come back — and the world is never written to.

Verified fields

Exact fieldTypeField guidance
artifactRef<QuestStateArtifactEntry>Where this artifact's state is stored. Must be the artifact the zone uses.
zoneIdStringThe zone this deviation belongs to, as named on the zone audience.
groupRef<GroupEntry>The group the zone shares its state with, if any. Must match the zone audience.
locationVar<Position>The block the furniture is anchored on — where it was placed, not where its model appears to sit.
furnitureIdVar<String>Which furniture at that block ('namespace:id'). Empty means every piece anchored there.
visibilityQuestFurnitureVisibilityWhether this player is shown the furniture.

visibility values

ValueBehaviour
HIDDENThe player is not shown it. Everyone else still is.
VISIBLEThe player is shown it again. With an empty furnitureId, everything hidden at that block is shown again.

In practice

Empty a crate for whoever looted it, take down a barrier for whoever holds the key, or swap a cracked seal for an intact one as a quest step is undone.

To change what a player sees rather than remove it, pair this with craftengine_set_quest_block: hide the world's intact seal here, and raise the broken one as a ghost on the same block there. The ghost exists for that player only, and the world never changes.

Common issue

The furniture vanishes instead of changing. furnitureId was left empty while two pieces share the block, so both were hidden. Name the one to hide.

A replaced piece stays hidden. The hiding is filed by block and by id and re-applied on a cadence, so a furniture removed and placed again at the same spot is hidden again for that player. That is by design — the player's state persists until craftengine_clear_quest_state drops it, or a VISIBLE action lifts it.

A hidden piece still stops the player. Its collision belongs to the server, not to anyone's view. Hide furniture that is there to be looked at, not furniture that is in the way.

Technical reference

Source moduleSource file
TypeWriter-CraftEngineExtensionqueststate/QuestStateActions.kt
TypeWriter-CraftEngineExtensionqueststate/PlayerFurnitureView.kt