Troubleshooting Structory
Start with the server console. Many problems are caused by a valid YAML file whose key or section is not what Structory expects. For production changes, use a full restart and keep a backup of plugins/Structory/.
The structure isn't recognized
Check the clicked check-block, Shift + Right Click, and the actual layout including negative Y levels. The levels belong under layout.levels. Start with orientation: false for a symmetrical altar and use /structory admin preview <key> to compare the loaded layout against the real build.
If the structure is already registered nearby, the minimum distance setting can also prevent another instance from being created.
BlockDisplay doesn't appear
Work through these checks in order:
- Check
plugins/Structory/blockdisplay/<model>.jsonexists and is valid JSON. - Make sure the structure entry references the filename without
.json:key: diamond_core. - Confirm you are using a
blockdisplayentry beneathoptions, withcore:(or another entry name) beneath it. - On startup, look for
BlockDisplay definitions loadedandBlockDisplay structure '...': registered ... model(s). - When the instance is created/loaded, look for
BlockDisplay spawned ... UUID=.... If this line is missing, the issue is before entity rendering. - Test with a simple one-passenger
minecraft:block_displaymodel and no animation before adding complex models.
If an option key can't be resolved, the plugin reports Block display key '...' is not registered. A missing model might simply be an old JSON: existing files are not overwritten by bundled updates.
The BlockDisplay guide includes a minimal JSON and a working configuration shape.
The display appears, but rotates around a corner
ROTATE and FLOAT_ROTATE are meant to spin a simple BlockDisplay about its visual center, while ORBIT deliberately moves it around a larger circle.
If your model spins around a corner, check that your JAR contains the newest 26.2 center-pivot fix, then retest with the bundled Diamond Core. Custom multi-passenger models may need careful transformation matrices.
Don't blindly add 0.5 to every YAML offset: the JSON transformation can already include the centering translation.
Particles are offset by half a block
Regular shapes play from the center of the structure's center block. STRUCTURE_OUTLINE is different: it deliberately traces block edges instead. Check that the effect's offset hasn't already been manually compensated for an older version.
The recipe doesn't craft
Verify options.crafting.recipe, the recipe's discovers key, available recipe slots, ingredients and listener types. If you configure custom listeners, remember to include interact if you still want right-click crafting.
options:
crafting:
listeners:
interact: {}
entity-death:
range: 8
Custom items also require the corresponding dependency plugin to be installed and enabled. Hooked to 0 item loaders is not an error when you use only vanilla items.
Saved item or recipe icon is missing
Check plugins/Structory/customitem/, the saved item key, and the recipe's item-display. Use /structory admin recipes to inspect registered recipes.
A structure or default example disappeared after an update
Don't delete your entire config folder. Structory can restore missing bundled files, but it never overwrites existing user files. Check that the example is actually bundled with your installed JAR, and look for custom YAML parsing warnings. Re-create missing examples from a backup if you've customized them.
Instances disappear after a restart
Look for Structure instance persistence backend: yaml / sqlite / mariadb and the loaded instance count. If the count is zero when it shouldn't be, check the configured backend before changing any files.
See Persistence and Backups for safe migration and recovery.
Particles lag the server
The cost grows with amount × density × active instances and update frequency. Decrease density, increase period and schedule-period, and avoid overlapping long-running effects. STRUCTURE_OUTLINE caches its geometry, but it still emits particles when drawn.
Build fails because Maven is using Java 8
On Windows use the current scripts/build-release.ps1. It searches for an installed JDK 21 and selects it temporarily. If it can't find one, provide -JavaHome21 "C:\path\to\jdk-21". The build requirement is separate from the runtime Java version required by your Minecraft server.
Useful admin diagnostics
/structory admin validate
/structory admin fix
/structory admin debug <instance-uuid>
/structory performance
/structory cluster
Use fix without apply first so you can inspect proposed changes. For a difficult problem, test the same setup on a clean server with only Structory and the required dependencies.