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. Instead of pasting, these blocks get replaced with the following custom behaviors:


Barrier

Barrier blocks make the plugin not place any blocks at that location. This means that whatever block was originally there in the normal world generation will remain there.

Builders can use this to round the edges of a paste, making it look more natural, or to mold walls to a potential cave, among other tricks.


Bedrock

Bedrock blocks make the plugin guarantee that there is a solid block at that location. This means that if a solid block is already there in the default world generation, that block will not be modified; however, if the block is air or liquid, it will be replaced with a solid block from the pedestal.

Builders can use this to create floors with features such as the floor for minecart rails or guarantee that a floor exists without overriding potentially already existing solid blocks at that location in the world, making the builds look more organic.


Spawn signs

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

Note: Spawn signs are not removed after the structure is placed. They will remain visible in the structure with their text intact. Consider placing them in hidden or inconspicuous locations if you don't want them visible to players.


Spawning vanilla mobs

If you take a normal sign and place it somewhere, then make sure the first line says [spawn] and the second line has the entity type name following the Spigot API you will spawn a persistent entity at that location of the type you specified.

As an example, if you have a sign that says [spawn] on the first line and ZOMBIE on the second line, you will spawn a zombie at that location when the build gets placed. This can also be used for non-living entities such as armor stands or ender crystals.

[spawn]

ZOMBIE

Note: The entity type must be a valid value from the Spigot API EntityType enum. Invalid entity types will cause the structure to fail to load. Check the Spigot API documentation for your Minecraft version to ensure the entity type exists.


BetterStructures also has advanced EliteMobs integration, which allows it to create boss arenas based on builds and spawn signs.

If you take a normal sign and place it somewhere, making the first line [elitemobs] then you can use all other lines to say what boss file to use.

As an example, if you do [elitemobs] on the first line and then test_boss.yml, on the second line, you will spawn the test boss. If you have a very long filename such as boss_with_very_long_filename.yml, you can break it up into multiple lines, so make line 2 boss_with_very_ and then line 3 long_filename.yml and that will work.

As a reminder, by default the combat arenas will be protected until players kill all the bosses in the build if your server is using WorldGuard.

[elitemobs]

test_boss_with

_a_long_name

.yml


Spawning MythicMobs

If you take a normal sign and place it somewhere, making the first line [mythicmobs] then you can use the other lines to define which boss file to use.

As an example, if you write [mythicmobs] on the first line, SkeletalKnight, on the second line, and then 10 on the third line (the level number only), you will spawn the SkeletalKnight boss at level 10 at the location where the sign was placed.

[mythicmobs]

SkeletalKnight

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. When simply pasting a schematic, these are where you are standing relative to the build.

Anchor points are important to get right for the schematics to work correctly.

  • For surface builds, it is recommended you stand at the lowest point of the floor when copying the build.
  • For underground builds, it is recommended you stand on top of the build.
  • For liquid builds, it is recommended you stand on top of the water.
  • For air builds, it is recommended that you stand on top of the build.

Please note that you should always be very close or directly on top of the builds when copying - the farther away you are, the laggier it will be when the build needs to be pasted. The anchor point determines the origin point of the structure when it's placed in the world. For surface structures, the plugin fits the structure to the terrain starting from the anchor point, which is why standing at the lowest floor point ensures proper ground alignment. For underground structures, the anchor point at the top allows the plugin to correctly determine burial depth.


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.

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


isEnabled

Sets whether the schematic is enabled. If disabled, it will not be placed anywhere.


weight

Weight sets the weight of the schematic in terms of how likely it is to get picked.

The default value is 1.0. If you make a build have a 2.0 weight, it will be 2x more likely of getting selected than the other builds. If you make it 0.5, it will have half the chances of getting picked.

Note: Keep in mind that the odds of a specific build getting picked change drastically based on how many build there are in total competing for the location that will be getting a structure!


pedestalMaterial

Important: optional field!

Pedestal material sets the material type of the pedestal blocks using the spigot api material names - use them or it won't work!

Pedestals are the blocks that get placed under surface and underground buildings to fit any air gaps and improve a building's fit with the world. These are also the same blocks that replace bedrock blocks in the schematic.

When nothing is defined in the configuration, the blocks under the location for the paste get analyzed and the best fit gets selected as the material for the best integrated look. The plugin analyzes the blocks beneath the structure placement location and selects the most common material type using weighted random selection. This usually results in natural-looking integration with the surrounding terrain. In the Nether, it defaults to netherrack; in the End, end stone; and in other dimensions, stone.


generatorConfigFilename

Note: The generatorConfigFilename is required. Schematics without a valid generator configuration will not spawn and will show a warning in the logs.

This option sets the name of the configuration file, by file name, that the schematic will be using. This requires the full filename, including the .yml extension at the end. As an example, generatorConfigFilename: generator_surface_global.yml would be the correct option if you want to use the generator defined in generator_surface_global.yml which you can find in the generators configuration folder.


treasureFile

Sets the [treasure file](../Better Structures/creating_treasure.md) that this structure will use, overwriting the treasure file set by the structure's [generator](../Better Structures/creating_generators.md). This is generally not recommended unless it is for a very special build. It is generally better to modify or create a generator for this purpose.

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
  • Your WorldEdit/FastAsyncWorldEdit version is compatible

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