Requires the library mod Collective.
This mod is part of Serilum's Customization Bundle mod.
Starter Structure adds the possibility to generate a specific structure when a world is first being generated. It looks in the config folder for schematic files, picks one, and places it at the spawn point.
Both structure block schematics (SBS, .nbt file) and WorldEdit schematics (WES, .schem/.schematic file) are supported. SBS contain entity data, which can be used to spawn saved entities directly. WES do not save entities, but signs can be placed in the schematic to decide where entities should spawn. For both, custom NBT data is supported. WorldEdit does not have to be installed for the mod to work! It would only be used to generate the schematic file, after which you can remove it. Schematics can also be created in another instance, and the file copied to a modpack.
There are also various config options available to specify where the player should spawn (and where the structure should generate) and how the structure should be placed.
Configurable: ( how do I configure? )
Show Spoiler
shouldGenerateStructure (default = true): Whether a schematic that's located in './config/starterstructure/schematics/...' should be generated.
forceExactSpawn (default = true): Usually player spawn points are in a randomized area. With this enabled, players will always spawn at the set coordinates (at the nearest air pocket).
ignoreTreesDuringStructurePlacement (default = true): Prevents structures from being placed on top of trees. Any leaf and log blocks will be ignored during placement.
generationIgnoreJigsawAndStructureBlocks (default = true): Some schematic files might contain jigsaw or structure blocks. These are by default ignored during structure generation.
protectStructureBlocks (default = true): Whether the blocks from the generated structure should be protected from breaking/griefing.
protectSpawnedEntities (default = true): Whether entities spawned inside the generated structure should be protected from damage.
playersInCreativeModeIgnoreProtection (default = true): If enabled, players that are in creative mode will be able to break and place the structure blocks.
playersInCreativeModeIgnoreEntityProtection (default = false): If enabled, players that are in creative mode will be able to damage protected entities which spawned in structures.
preventSpawnedEntityMovement (default = false): If spawned entities inside the generated structure should not be allowed to move away from the block they spawned on. Disabled by default.
spawnNonSignEntitiesFromSupportedSchematics (default = true): If entities from (structure block) schematic files should be spawned when found. These are entities not created with signs.
shouldUseStructurePosition (default = false): If the generatedStructurePosition config options should be used.
generatedStructureXPosition (default = 0, min -10000000, max 10000000): The exact x position for the generated structure. Used when shouldUseStructurePosition is enabled.
generatedStructureYPosition (default = 0, min -1000, max 1000): The exact y position for the generated structure. Used when shouldUseStructurePosition is enabled.
generatedStructureZPosition (default = 0, min -10000000, max 10000000): The exact z position for the generated structure. Used when shouldUseStructurePosition is enabled.
shouldUseStructureOffset (default = false): If the generatedStructureOffset config options should be used.
generatedStructureXOffset (default = 0, min -1000, max 1000): The x offset for the generated structure. Used when shouldUseStructureOffset is enabled.
generatedStructureYOffset (default = 0, min -1000, max 1000): The y offset for the generated structure. Can for example be set to -1 if you notice a building always spawns one block too high. Used when shouldUseStructureOffset is enabled.
generatedStructureZOffset (default = 0, min -1000, max 1000): The z offset for the generated structure. Used when shouldUseStructureOffset is enabled.
shouldUseSpawnCoordinates (default = false): If the spawnCoordinate config options should be used.
spawnXCoordinate (default = 0, min -10000000, max 10000000): The new X coordinate of the spawn when shouldUseSpawnCoordinates is enabled.
spawnYCoordinate (default = 0, min -1000, max 1000): The new Y coordinate of the spawn when shouldUseSpawnCoordinates is enabled.
spawnZCoordinate (default = 0, min -10000000, max 10000000): The new Z coordinate of the spawn when shouldUseSpawnCoordinates is enabled.
shouldUseSpawnCoordOffsets (default = false): If the spawnCoordOffset config options should be used.
spawnXCoordOffset (default = 0, min -1000, max 1000): The X coordinate offset of the spawn when shouldUseSpawnCoordOffsets is enabled.
spawnYCoordOffset (default = 0, min -1000, max 1000): The Y coordinate offset of the spawn when shouldUseSpawnCoordOffsets is enabled.
spawnZCoordOffset (default = 0, min -1000, max 1000): The Z coordinate offset of the spawn when shouldUseSpawnCoordOffsets is enabled.
Config Folders:
Schematics can be placed inside ./config/starterstructure/schematics.
Schematics can be the types .nbt, .schem and .schematic.
Can contain multiple, the mod picks one at random.
Custom sign data is inside ./config/starterstructure/signdata
Allows the creation of entities via NBT data. You basically put the /summon command inside a .txt file in the signdata folder.
Place a sign within the schematic with a reference to that file, and it creates an entity on structure generation.
See below for more information.
Schematics:
Schematics can be created via structure blocks (.nbt files) or via WorldEdit (.schem / .schematic files). You can choose the method you prefer! I recommend using WorldEdit, as it also allows you to specify where a player should spawn. You only need WorldEdit to create the schematic. After that you can remove it, as Starter Structure does not need WorldEdit to generate the spawn structure on world creation.
How-to generate a WorldEdit schematic:
Show Spoiler
Use the //wand command to receive the tool to set the corners of the schematic.
Left-Click the first block where you want the bottom corner to be.
Right-Click the second block of the opposite corner, make sure to break the temporary blocks after.
You can also use //pos2 command.
Stand where you want to spawn when the structure generates, and enter the //copy command.
Now do //schematic save <schematic-name> to generate the schematic file.
The file will be saved in ./config/worldedit/schematics
Copy it over to Starter Structure's config folder ./config/starterstructure/schematics
Starter Structure will now generate the copied structure whenever a new world is generated!
If multiple schematics are inside ./config/starterstructure/schematics, one will be chosen at random.
Signs:
Inside the generated structure, entities can easily be spawned with signs:
Show Spoiler
A simple entity:
--------------------------
[Entity]
modid:entityid
--------------------------
New lines are ignored. These 3 signs are all the same, and will spawn a villager in its place on structure generation.
Custom NBT data sign:
If you'd like to spawn an entity that's less simple, for example with a custom name or custom items, you can make a reference to a file containing that data.
Start with the [NBT] line. Then specify the file name below that. This can be anything.
--------------------------
[NBT]
nbtfilename
--------------------------
This will look for entity data inside ./config/starterstructure/signdata/igloo_entity.txt
This file contains the following NBT data:
And will spawn a named zombie entity with items and a status effect when the structure generates:
The entity NBT data is basically just a /summon command. There are various websites available to help you generate it.
You can for example use the website MCStacker to generate an entity, via their /summon page.
You can put the entire generated /summon command inside the ./config/starterstructure/signdata/file.txt:
Starter Structure will remove the /summon part and generate the correct NBT data with ID.
Converting it to:
------------------
You may freely use this mod in any modpack, as long as the download remains hosted within the Modrinth ecosystem.
Serilum.com contains an overview and more information on all mods available.
Comments are disabled as I'm unable to keep track of all the separate pages on each mod.
For issues, ideas, suggestions or anything else there is the Github repo. Thanks!