Skip to content

passengers: visual entities

Read visual entity data in BDEngine exports. Learn how passengers stores SNBT strings, transformation matrices, Minecraft entity properties, and tags.

content.passengers contains the model’s visual parts: blocks, items, and text represented by block_display, item_display, and text_display entities.

An array of strings

The field is an array of strings. Each string contains SNBT, Minecraft’s text representation of NBT data. A single entry can combine several comma-separated entities:

{
"passengers": [
"{id:\"minecraft:block_display\",block_state:{Name:\"minecraft:stone\"},Tags:[\"my_model_0\"]},{id:\"minecraft:block_display\",block_state:{Name:\"minecraft:oak_planks\"},Tags:[\"my_model_1\"]}"
]
}

This abbreviated example omits transforms and additional properties. The array length does not tell you how many entities it contains. Do not split a string at commas: commas also occur inside nested SNBT values.

Parsing the outer JSON gives you a string, not an entity object or a summon command. Understanding its structure requires SNBT parsing, not another call to JSON.parse().

Inside a visual entity

After removing JSON escaping, one entity string can look like this:

{id:"minecraft:block_display",block_state:{Name:"minecraft:stone"},transformation:[1f,0f,0f,0f,0f,1f,0f,0f,0f,0f,1f,0f,0f,0f,0f,1f],Tags:["my_model_0"]}
SNBT field Purpose
id Minecraft entity type
block_state Block type and, where applicable, block states for block_display
item Item data for item_display
text and text properties Content and formatting for text_display
transformation Visual transform; the current exporter writes a 16-number matrix
Tags Tags, including the part tag referenced by animation commands

Strings may also include brightness, glow, and custom NBT properties. The fields depend on the object. Item and text syntax changes between Minecraft versions, so an example for one version does not define the format for all others.

Coordinates and part tags

The transform already incorporates the object’s position in the scene and its parent groups’ transforms. The matrix describes the visual part in the model’s coordinate system. Your integration determines where the model appears in the world. Do not apply the editor’s group transforms a second time.

The exporter assigns visual parts tags such as [BDESERVERTAG]_0, [BDESERVERTAG]_1, and so on. With tag=my_model, these become my_model_0, my_model_1, and so on. Frame commands reference these tags. The indices identify parts within a particular export, not persistent editor object IDs.

Custom tags may also be retained. Substitution replaces [BDESERVERTAG]; it does not rename every custom tag. See The tag parameter.

Empty and unsupported data

If there are no visual parts, passengers may be absent: the current exporter does not add a field containing an empty string. An empty array also contains no visual parts, but you should not require that representation for absent data.

Real structure blocks are not automatically converted to block_display entities. Server export does not support real structures. Hitboxes are described separately in hitbox and should not be counted as the model’s visual parts.

Related pages: Field types and Export support and limitations.