Skip to main content

Creating content


Creating the build

There are no restrictions with what you can build for BetterStructures, although it is recommended to keep the size of the structures under 100x100x100 blocks for general world fit and performance reasons. That being said, it can easily handle much larger structures.


Special blocks

BetterStructures has two special blocks: barriers and bedrock. Any other block that WorldEdit can paste will be pasted normally, but barriers and bedrock blocks are the exception.

BlockBehaviorUse Case
BarrierDoes not place any block at that location - preserves original terrainRound edges of paste, mold walls to caves, natural integration
BedrockGuarantees a solid block exists. If air/liquid, replaces with pedestal materialCreate floors for rails, guarantee floor exists without overriding existing blocks

Spawn signs

BetterStructures can use signs with specific text to spawn mobs and bosses from EliteMobs and MythicMobs at specific locations.

Note: spawn signs are consumed when the structure is pasted - BetterStructures replaces the sign block with air at the moment it spawns the entity, so players never see them. A sign whose tag is not recognised is simply pasted as an ordinary sign and stays visible.

Sign TypeLine 1Line 2-4Plugin Required
Vanilla Mobs[spawn]Entity type on line 2None
EliteMobs[elitemobs]Boss filename, spread across lines 2-4EliteMobs
MythicMobs[mythicmobs]Mob name on line 2, optional level on line 3MythicMobs

Any sign works. All wood types and both standing and wall variants are accepted, including hanging signs and signs from wood types added after the plugin was written - the check is on the block being a sign, not on a fixed list of materials.

The MythicMobs level line is optional. Leave line 3 empty and the mob spawns at level 1.

Spawn Sign Examples

Vanilla Mobs

[spawn]

ZOMBIE

Spawns a persistent zombie at that location. Works for any Spigot EntityType including armor stands and ender crystals.

EliteMobs

[elitemobs]

test_boss_with

_a_long_name

.yml

Long filenames can span multiple lines. Combat arenas are protected by WorldGuard until all bosses are killed.

MythicMobs

[mythicmobs]

SkeletalKnight

10

Spawns SkeletalKnight at level 10.


Schematics

Schematics are files generated by WorldEdit or FastAsyncWorldEdit which contain the blocks for the build that BetterStructures will be using. BetterStructures uses the .schem file format (the modern WorldEdit standard). Make sure to save your schematics using the .schem format, not the legacy .schematic format.

Detailed instructions on how to make a schematic are not included here, as they are thoroughly detailed on the WorldEdit and FastAsyncWorldEdit documentations, but it is generally done by:

  1. pick a corner of the build and use the command //pos1
  2. pick the diagonally opposite corner and use the command //pos2
  3. use the //copy command
  4. use the command /schem save <schematicname> where <schematicName> is the filename you want to use for your schematic.
worldedit documentation image from their docs

Make sure you run the command //pos1 on point 1 and //pos2 on point 2!


Anchor point

Anchor points are where you run the //copy command for the schematic. They determine the origin point of the structure when placed in the world.

Build TypeRecommended Anchor PositionReason
SurfaceLowest point of the floorEnsures proper ground alignment
UndergroundOn top of the buildAllows correct burial depth determination
LiquidOn top of the waterProper water surface placement
Air/SkyOn top of the buildCorrect altitude positioning

Important: Always be very close or directly on top of the builds when copying. The farther away you are, the laggier the paste operation will be.


Schematic configurations

Every schematic file has a schematic configuration. If a schematic file has just been added to the server, the configuration will be generated after a restart or after a /betterstructures reload.

The .yml is generated in the same folder as the .schem. plugins/BetterStructures/schematics is scanned recursively, so a content pack that ships its schematics in a subfolder gets its configs written into that same subfolder. Filenames must be unique across the whole schematics tree: two .schem files with the same name in different folders make configuration lookup ambiguous, and BetterStructures now refuses to start rather than guess which one you meant.

A .yml with no matching .schem is skipped with a warning, and the structure is not registered.

These configurations allow you to set the following settings for the schematic paste:

KeyDefaultMandatoryDescription
isEnabledtrueWhether the schematic is enabled. If disabled, it will not be placed anywhere.
weight1.0Selection weight. Higher = more likely to be picked. 2.0 = 2x more likely, 0.5 = half as likely.
pedestalMaterialAuto-detectMaterial for pedestal blocks (Spigot Material names). Auto-detects best fit if not set.
generatorConfigFilename-Generator config filename including .yml extension. Schematics without this will not spawn.
treasureFileGenerator defaultOverride treasure file for this structure's chests. Generally better to modify the generator instead.
barrelTreasureFilenameGenerator defaultOverride treasure file for this structure's barrels. Defaults to whatever the generator (or its fallback treasure_barrel_food.yml) provides.

Loot containers: BetterStructures automatically detects chests, trapped chests and plain (uncoloured) shulker boxes placed inside schematics and fills them with the chest treasure file. Barrels are filled separately using the barrel treasure file (default treasure_barrel_food.yml), and can be disabled per-generator with generateLootInBarrels: false. No special signs or configuration are needed to mark these containers.

Disabled generators: if the generator named by generatorConfigFilename has isEnabled: false, the schematic is skipped entirely, even if the schematic's own isEnabled is true.

Configuration Details

pedestalMaterial

Pedestals are blocks placed under surface/underground buildings to fill air gaps and improve terrain integration. These are also the blocks that replace bedrock blocks in the schematic.

When nothing is defined, the plugin analyzes blocks beneath the structure placement location and selects the most common material type using weighted random selection. Defaults: Nether = netherrack, End = end stone, Other = stone.

generatorConfigFilename

Example: generatorConfigFilename: generator_surface_global.yml

The generator file is found in the generators configuration folder.

treasureFile

See treasure file documentation and generator documentation for more details.

Customizing content

Everything distributed in BetterStructures is editable. You are able to modify any schematic files and generator settings to your liking.

The content creation guide above is also a guide that can help you edit existing content.


Troubleshooting

If your structure doesn't spawn, check that:

  • The schematic file is in .schem format
  • A valid generator configuration is specified
  • The isEnabled option is set to true, on both the schematic config and the generator it points at
  • Your WorldEdit/FastAsyncWorldEdit version is compatible
  • The schematic's .yml sits next to the .schem, not in a stray plugins/BetterStructures/plugins/BetterStructures/... tree. Older builds wrote configs to that wrong path, which left shipped structures with no generator and silently stopped them from spawning. If you see that folder, the configs inside it were never read - delete it and let the plugin regenerate the configs in the right place.

If the server refuses to start with a message about a duplicate schematic filename, you have the same .schem name in two different folders under schematics (or modules). Rename one of them.

The .schematic_cache folder

BetterStructures keeps converted copies of your schematics in plugins/BetterStructures/.schematic_cache. Shipped .schem files are saved at an older Minecraft data version, and converting them on every start is the single most expensive part of loading a full content install, so the converted result is stored and reused.

You do not need to manage this folder:

  • entries are keyed on the schematic's contents, your Minecraft version and your WorldEdit version, so editing a schematic or updating either plugin rebuilds the affected entries automatically
  • entries no longer matched by any schematic (for example after removing a content pack) are pruned on startup
  • it is only ever an optimisation - if an entry is missing, unreadable or fails verification, the original .schem is read instead

It is safe to delete; the next start simply rebuilds it and takes longer.

"Skipped N unsupported legacy block entries"

Shipped .schem files record the Minecraft version they were saved at, so WorldEdit runs their block entities through Mojang's data converter on load. Entries whose type no longer exists - minecraft:bed is the common one, since bed block entities went away in 1.13 when bed colour moved into the block state - fail conversion and are logged by the server at ERROR level, once per block. A full content install produces hundreds of identical lines that look like a broken install but are harmless: the block itself converts fine and the structure pastes correctly.

BetterStructures collapses that noise into a single informational line naming how many entries were skipped and which keys were involved. There is nothing to fix when you see it.

If spawn signs don't work:

  • Verify the sign format exactly matches the examples
  • For EliteMobs/MythicMobs, ensure the plugins are installed
  • Check that entity types/mob names are spelled correctly
  • Review the server logs for specific error messages