Import a Minecraft structure file (.nbt) into Blockbench and convert it into an editable model.
- Imports Minecraft structure NBT files (
Tools > STM: Import Structure) - Resolves blockstates (
variantsandmultipart) using block properties from the structure palette - Resolves model parent chains and texture variable references (
#texture_var) - Neighbor-aware face culling using a sweep-line rectangle coverage algorithm to eliminate hidden geometry
- Transparent block culling exceptions (glass, panes, stained glass, trapdoors, leaves)
- Tinted texture support with biome presets (Plains, Jungle, Swamp, Desert, Snowy) and custom hex color
- Texture, model, and tinted-texture caching for faster imports
- Configurable world-to-model scale (default
16) - Progress bar and block count summary during import
- Blockbench 5.0.0 or newer
- Blockbench Desktop (the plugin requires direct access to the filesystem to read assets and save tinted textures)
- Minecraft assets folder arranged by namespace:
<asset_root>/minecraft/blockstates/...<asset_root>/minecraft/models/...<asset_root>/minecraft/textures/...
asset_root is the folder that contains namespace folders (minecraft, mod namespaces, etc.), not the textures folder itself.
Install dependencies:
bun installProduction build:
bun run buildDevelopment build with inline sourcemap:
bun run build:devOutput: dist/structure_to_model.js
- Load/install the built plugin file (
dist/structure_to_model.js) in Blockbench. - Open
Tools > STM: Settingsand configure:- Asset Root — your Minecraft assets root folder
- Scale — coordinate divisor (default
16) - Tint Preset — biome tint applied to grass/leaf textures: None, Plains, Jungle, Swamp, Desert, Snowy, or Custom
- Custom Tint Color — hex color used when Tint Preset is set to Custom
- Open
Tools > STM: Import Structureand select a.nbtstructure file. - Wait for import to complete. The plugin creates a root group named after the structure file.
- If tinted textures were generated, you will be prompted to save them to a resource pack (provide a namespace and path).
Block coordinates and voxel-local coordinates are combined as:
(block_pos * 16 + local_voxel_pos) / scale
Common values:
16— 1 block = 1 model unit1— 1 Minecraft voxel = 1 model unit
- Missing blockstate, model, or texture files are silently skipped for that block
- For weighted blockstate variant entries, only the first candidate is used (weights are ignored)
- Transparent block culling exceptions are hardcoded; custom modded blocks are not automatically recognized
- Elements with X or Z axis rotation bypass face culling to avoid incorrect occlusion
- A rotation correction whitelist is applied to buttons and levers to fix specific x-rotation cases; custom blocks in similar configurations may not be covered
- No entity, tile-entity, or biome data is imported — geometry only
- "Asset Root Not Set" — configure
Tools > STM: Settingsfirst. - Blocks missing in output — verify corresponding
blockstates,models, andtexturesexist underasset_root/<namespace>/.... - Unexpected orientation on some blocks — check whether that block is covered by the rotation fix whitelist (buttons, levers).
- Tinted textures not appearing — ensure Tint Preset is set and save the generated textures to your resource pack when prompted.