Starter Structure

🏛️ Allows the creation of buildings on initial world generation at spawn via schematic files.

142,09k

Starter Structure

<p style="text-align: center;"><center><a href="https://serilum.com/" target="_blank" rel="noopener noreferrer"><img src="https://cdn.serilum.com/description/header/header.png" alt="" width="838" height="400" /></a></p><p style="text-align: center;"><a href="https://curseforge.com/members/serilum/projects" target="_blank" rel="noopener noreferrer"><img src="https://wsrv.nl/?url=https://workflow.serilum.com/badges/svg/curseforge.svg&w=400" width="200" /></a> <a href="https://modrinth.com/user/Serilum" target="_blank" rel="noopener noreferrer"><img src="https://wsrv.nl/?url=https://workflow.serilum.com/badges/svg/modrinth.svg&w=400" width="200" /></a> <a href="https://patreon.com/serilum" target="_blank" rel="noopener noreferrer"><img src="https://wsrv.nl/?url=https://workflow.serilum.com/badges/svg/patreon.svg&w=400" width="200" /></a> <a href="https://youtube.com/@serilum" target="_blank" rel="noopener noreferrer"><img src="https://wsrv.nl/?url=https://workflow.serilum.com/badges/svg/youtube.svg&w=400" width="200" /></a></center></p><p><strong><span style="font-size: 24px;">Requires the library mod <a style="font-size:24px" href="https://modrinth.com/mod/collective" target="_blank" rel="nofollow">Collective</a>.</span></strong><br><br><strong>   This mod is part of <span style="color:#666"><a style="color:#666" href="https://modrinth.com/mod/serilums-customization-bundle" target="_blank" rel="nofollow">Serilum's Customization Bundle</a></span> mod.</strong><br><span style="font-size:18px">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.<br><br>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. <strong>WorldEdit does not have to be installed for the mod to work!</strong> 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.<br><br>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.</span><span style="font-size:18px"><br></span><br><br><strong><span style="font-size:20px">Configurable:</span> <span style="color:#008000;font-size:14px"><a style="color:#008000" href="https://github.com/Serilum/.information/wiki/how-to-configure-mods" rel="nofollow">( how do I configure? )</a></span><br></strong></p>
<details><summary>Show Spoiler</summary>
<p><span style="font-size:12px"><strong>shouldGenerateStructure</strong> (default = true): Whether a schematic that's located in './config/starterstructure/schematics/...' should be generated.</span><br><span style="font-size:12px"><strong>forceExactSpawn</strong> (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).</span><br><span style="font-size:12px"><strong>ignoreTreesDuringStructurePlacement</strong> (default = true): Prevents structures from being placed on top of trees. Any leaf and log blocks will be ignored during placement.</span><br><span style="font-size:12px"><strong>generationIgnoreJigsawAndStructureBlocks</strong> (default = true): Some schematic files might contain jigsaw or structure blocks. These are by default ignored during structure generation.</span><br><span style="font-size:12px"><strong>protectStructureBlocks</strong> (default = true): Whether the blocks from the generated structure should be protected from breaking/griefing.</span><br><span style="font-size:12px"><strong>protectSpawnedEntities</strong> (default = true): Whether entities spawned inside the generated structure should be protected from damage.</span><br><span style="font-size:12px"><strong>playersInCreativeModeIgnoreProtection</strong> (default = true): If enabled, players that are in creative mode will be able to break and place the structure blocks.</span><br><span style="font-size:12px"><strong>playersInCreativeModeIgnoreEntityProtection</strong> (default = false): If enabled, players that are in creative mode will be able to damage protected entities which spawned in structures.</span><br><span style="font-size:12px"><strong>preventSpawnedEntityMovement</strong> (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.</span><br><span style="font-size:12px"><strong>spawnNonSignEntitiesFromSupportedSchematics</strong> (default = true): If entities from (structure block) schematic files should be spawned when found. These are entities not created with signs.</span><br><br><span style="font-size:12px"><strong>shouldUseStructurePosition</strong> (default = false): If the generatedStructurePosition config options should be used.</span><br><span style="font-size:12px"><strong>generatedStructureXPosition</strong> (default = 0, min -10000000, max 10000000): The exact x position for the generated structure. Used when shouldUseStructurePosition is enabled.</span><br><span style="font-size:12px"><strong>generatedStructureYPosition</strong> (default = 0, min -1000, max 1000): The exact y position for the generated structure. Used when shouldUseStructurePosition is enabled.</span><br><span style="font-size:12px"><strong>generatedStructureZPosition</strong> (default = 0, min -10000000, max 10000000): The exact z position for the generated structure. Used when shouldUseStructurePosition is enabled.</span><br><br><span style="font-size:12px"><strong>shouldUseStructureOffset</strong> (default = false): If the generatedStructureOffset config options should be used.</span><br><span style="font-size:12px"><strong>generatedStructureXOffset</strong> (default = 0, min -1000, max 1000): The x offset for the generated structure. Used when shouldUseStructureOffset is enabled.</span><br><span style="font-size:12px"><strong>generatedStructureYOffset</strong> (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.</span><br><span style="font-size:12px"><strong>generatedStructureZOffset</strong> (default = 0, min -1000, max 1000): The z offset for the generated structure. Used when shouldUseStructureOffset is enabled.</span><br><br><span style="font-size:12px"><strong>shouldUseSpawnCoordinates</strong> (default = false): If the spawnCoordinate config options should be used.</span><br><span style="font-size:12px"><strong>spawnXCoordinate</strong> (default = 0, min -10000000, max 10000000): The new X coordinate of the spawn when shouldUseSpawnCoordinates is enabled.</span><br><span style="font-size:12px"><strong>spawnYCoordinate</strong> (default = 0, min -1000, max 1000): The new Y coordinate of the spawn when shouldUseSpawnCoordinates is enabled.</span><br><span style="font-size:12px"><strong>spawnZCoordinate</strong> (default = 0, min -10000000, max 10000000): The new Z coordinate of the spawn when shouldUseSpawnCoordinates is enabled.</span><br><br><span style="font-size:12px"><strong>shouldUseSpawnCoordOffsets</strong> (default = false): If the spawnCoordOffset config options should be used.</span><br><span style="font-size:12px"><strong>spawnXCoordOffset</strong> (default = 0, min -1000, max 1000): The X coordinate offset of the spawn when shouldUseSpawnCoordOffsets is enabled.</span><br><span style="font-size:12px"><strong>spawnYCoordOffset</strong> (default = 0, min -1000, max 1000): The Y coordinate offset of the spawn when shouldUseSpawnCoordOffsets is enabled.</span><br><span style="font-size:12px"><strong>spawnZCoordOffset</strong> (default = 0, min -1000, max 1000): The Z coordinate offset of the spawn when shouldUseSpawnCoordOffsets is enabled.</span></p>
</details>
<p> <br><br><span style="font-size:24px"><strong>Config Folders:</strong></span><br><span style="font-size:14px"><span style="font-size:18px">Schematics can be placed inside <em>./config/starterstructure/schematics</em>.</span><br>Schematics can be the types <strong>.nbt</strong>, <strong>.schem</strong> and <strong>.schematic</strong>.<br>Can contain multiple, the mod picks one at random.<br></span><br><span style="font-size:14px"><span style="font-size:18px">Custom sign data is inside <em>./config/starterstructure/signdata</em></span><br>Allows the creation of entities via NBT data. You basically put the /summon command inside a .txt file in the signdata folder.<br>Place a sign within the schematic with a reference to that file, and it creates an entity on structure generation.<br>See below for more information.<br><br><br><span style="font-size:24px"><strong>Schematics:</strong></span></span><br><span style="font-size:14px">Schematics can be created via structure blocks (.nbt files) or via WorldEdit (.schem / .schematic files). You can choose the method you prefer! </span><span style="font-size:14px">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 <strong>Starter Structure does not need WorldEdit to generate the spawn structure on world creation</strong>.</span><br><br><br><span style="font-size:18px"><strong>How-to generate a WorldEdit schematic:</strong></span></p>
<details><summary>Show Spoiler</summary>
<p><br><span style="font-size:14px">Use the <em><strong>//wand</strong></em> command to receive the tool to set the corners of the schematic.</span><br><br><img src="https://cdn.serilum.com/projects/starter-structure/k.jpg"><br><br><br><span style="font-size:14px"><strong>Left-Click the first block</strong> where you want the bottom corner to be.</span><br><br><img src="https://cdn.serilum.com/projects/starter-structure/l.jpg"><br><br><br><span style="font-size:14px"><strong>Right-Click the second block</strong> of the opposite corner, make sure to break the temporary blocks after.</span><br><span style="font-size:14px">You can also use <em><strong>//pos2</strong></em> command.</span><br><br><img src="https://cdn.serilum.com/projects/starter-structure/n.jpg"><br><br><br><span style="font-size:14px"><strong>Stand where you want to spawn when the structure generates</strong>, and enter the <em><strong>//copy</strong></em> command.</span><br><br><img src="https://cdn.serilum.com/projects/starter-structure/m.jpg"><br><br><br><span style="font-size:14px">Now do <em><strong>//schematic save <schematic-name></strong></em> to generate the schematic file.</span><br><br><img src="https://cdn.serilum.com/projects/starter-structure/o.jpg"><br><br><br><span style="font-size:14px">The file will be saved in <em><strong>./config/worldedit/schematics</strong></em></span><br><br><img src="https://cdn.serilum.com/projects/starter-structure/p.jpg"><br><br><br><span style="font-size:14px">Copy it over to Starter Structure's config folder <em><strong>./config/starterstructure/schematics</strong></em></span><br><br><img src="https://cdn.serilum.com/projects/starter-structure/q.jpg"><br><br><br><span style="font-size:14px">Starter Structure will now generate the copied structure whenever a new world is generated!</span><br><span style="font-size:14px">If multiple schematics are inside <em><strong>./config/starterstructure/schematics</strong></em>, one will be chosen at random.</span><br><br><img src="https://cdn.serilum.com/projects/starter-structure/r.jpg"></p>
</details>
<p> </p>
<p><br><span style="font-size:24px"><strong>Signs:</strong></span><br><span style="font-size:14px">Inside the generated structure, entities can easily be spawned with signs:</span></p>
<details><summary>Show Spoiler</summary>
<p><span style="font-size:14px">A simple entity:</span><br><br><span style="font-size:14px"><strong>--------------------------</strong></span><br><span style="font-size:14px"><strong>[Entity]</strong></span><br><span style="font-size:14px"><strong>modid:entityid<br>--------------------------</strong></span><br><br><img src="https://cdn.serilum.com/projects/starter-structure/d.jpg"><br><span style="font-size:14px"><br>New lines are ignored. These 3 signs are all the same, and will spawn a villager in its place on structure generation.</span><br><br><br><span style="font-size:24px"><strong>Custom NBT data sign:</strong></span><br><span style="font-size:14px">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.</span><br><span style="font-size:14px">Start with the <strong>[NBT]</strong> line. Then specify the file name below that. This can be anything.</span><br><br><span style="font-size:14px"><strong>--------------------------</strong></span><br><span style="font-size:14px"><strong>[NBT]</strong></span><br><span style="font-size:14px"><strong>nbtfilename</strong></span><br><span style="font-size:14px"><strong>--------------------------</strong></span><br><br><img src="https://cdn.serilum.com/projects/starter-structure/e.jpg"><br><br><br><span style="font-size:14px">This will look for entity data inside <em><strong>./config/starterstructure/signdata/igloo_entity.txt</strong></em><br><br><br></span><img src="https://cdn.serilum.com/projects/starter-structure/b.png"><br><br><br><br><span style="font-size:14px">This file contains the following NBT data:</span><br><br><br><img src="https://cdn.serilum.com/projects/starter-structure/f.png"><br><br><br><span style="font-size:14px">And will spawn a named zombie entity with items and a status effect when the structure generates:</span><br><br><br><img src="https://cdn.serilum.com/projects/starter-structure/g.jpg"><br><br><br><span style="font-size:18px">The entity NBT data is basically just a /summon command. There are various websites available to help you generate it.</span><br><span style="font-size:18px">You can for example use the website <a style="font-size:14px" href="https://mcstacker.net/" rel="nofollow">MCStacker</a> to generate an entity, via their /summon page.</span><br><br><img src="https://cdn.serilum.com/projects/starter-structure/h.png"><br><br><br><span style="font-size:14px">You can put the entire generated /summon command inside the <em><strong>./config/starterstructure/signdata/file.txt</strong></em>:</span><br><br><br><img src="https://cdn.serilum.com/projects/starter-structure/i.jpg"><br><br><br><span style="font-size:14px">Starter Structure will remove the /summon part and generate the correct NBT data with ID.<br>Converting it to:<br><br><br><img src="https://cdn.serilum.com/projects/starter-structure/j.jpg"></span></p>
</details>
<p><br>------------------<br><br><span style="font-size:24px"><strong>You may freely use this mod in any modpack, as long as the download remains hosted within the Modrinth ecosystem.</strong></span><br><br><span style="font-size:18px"><a style="font-size:18px;color:#008000" href="https://serilum.com/" rel="nofollow">Serilum.com</a> contains an overview and more information on all mods available.</span><br><br><span style="font-size:14px">Comments are disabled as I'm unable to keep track of all the separate pages on each mod.</span><span style="font-size:14px"><br>For issues, ideas, suggestions or anything else there is the <a style="font-size:14px;color:#008000" href="https://github.com/Serilum/.issue-tracker" rel="nofollow">Github repo</a>. Thanks!</span><span style="font-size: 6px;"><br /><br /></span></p>

ADS