Skip to content

Doggysus/structurifyback

Β 
Β 

Repository files navigation

βš™οΈ Structurify


Structurify is a configuration mod that makes configuring everything related to structures very easy and accessible, eliminating the hassle of creating multiple datapacks.

Currently it is possible to:

Possible future features that can be implemented:

  • Disable individual structure pieces
  • Change weight of individual structure pieces
  • Utility commands related to the structures
  • Disable specific structure tags
  • Biome Tags in the biome blacklist
  • Presets for specific settings

πŸ–₯️ In-Game usage


Structure settings

Structures are organized into categories based on the mods and datapacks in use, making them easier to manage. It is possible to disable the generation of structures and manage a blacklist of biomes where specific structures should not generate.

Structures settings

Specific structures can also be easily searched for across these categories.

Search

Biome Blacklist for specific structures

Each structure has its own configuration, allowing specific biomes to be blacklisted to prevent structure generation.

Search

Structure Spread settings

Custom structure spread can be configured via global spacing and separation modifiers or through per-structure specific spacing and separation values.

  • Spacing is the average distance in chunks between structures within the same structure set (group of structures).
  • Separation is the minimum distance in chunks between structures within the same structure set (group of structures). The separation value cannot be greater than the spacing value.

Structure Spread settings

πŸ“˜ JSON file configuration


All configurations mentioned in the In-Game section of this guide are mirrored and saved in a JSON file located at config/structurify.json. This file is particularly useful for managing configurations on the server side.

The default content of the structurify.json file looks like this:

{
	"general": {
		"disabled_all_structures": false,
		"enable_global_spacing_and_separation_modifier": true,
		"global_spacing_and_separation_modifier": 1.0
	}, 
	"structures": [],
  	"structure_sets": []
}

πŸ“ general

The general section contains settings that apply globally across all structures and structure sets.

Key Description Default value Examples
disabled_all_structures Disable all structures false true
false
enable_global_spacing_and_separation_modifier Enables global spacing and separation modifier true true
false
global_spacing_and_separation_modifier The global spacing and separation modifier 1.0 0.1
1.0
2.0

disable_all_structures

If set to true all structures will be disabled and will not be generated in the world regardless of the specific structure options.

"disabled_all_structures": false

enable_global_spacing_and_separation_modifier

If set to true all structure sets (groups of structures) will have modified spacing and separation.

"enable_global_spacing_and_separation_modifier": true

global_spacing_and_separation_modifier

When set to a value different from 1.0, all structure sets (groups of structures) will be either more concentrated or more spread out.

"global_spacing_and_separation_modifier": 1.0
  • < 1.0 - more concentrated
  • = 1.0 - unaffected (default value)
  • > 1.0 - more spread out

πŸ“ structures

All structures related settings are saved to the structures field of the json file.

Key Description Default value Examples
name Structure identifier - minecraft:shipwreck
is_disabled Disables the structure false true
false
biome_blacklist_type Type of the biome blacklist NONE NONE
CENTER_PART
ALL_PARTS
blacklisted_biomes Array of biome identifiers [] ["minecraft:deep_cold_ocean"]

name

The unique identifier for the structure, typically in the format mod_id:structure_name.

"name": "minecraft:shipwreck"

is_disabled

If set to true the structure will be disabled and will not be generated in the world.

"is_disabled": false

biome_blacklist_type

When set to a value different from 1.0, all structure sets will be either more concentrated or more spread out.

"biome_blacklist_type": "NONE"
  • NONE - The blacklist will be inactive even if values are provided.
  • CENTER_PART - Only the starting piece (center part) of the structure cannot be in any of the blacklisted biomes.
  • ALL_PARTS - All structure pieces cannot be in any of the blacklisted biomes.

blacklisted_biomes

Array of unique biome identifiers typically in the format mod_id:biome_name. An empty array means no biomes are blacklisted.

"blacklisted_biomes": []

πŸ“ structure_sets

All structure sets related settings are saved to the structure_sets field of the json file.

Key Description Default value Examples
name Structure identifier - minecraft:villages
spacing Disables the structure - 34
8
60
separation Type of the biome blacklist - 8
4
40

name

The unique identifier for the structure, typically in the format mod_id:structure_name.

"name": "minecraft:villages"

spacing

Spacing is the average distance in chunks between structures within the same structure set (group of structures).

"spacing": 34

separation

"Separation is the minimum distance in chunks between structures within the same structure set (group of structures). The separation value cannot be greater than the spacing value.

"spacing": 8

πŸ“ examples

Example of disabling all of the vanilla mineshaft structures can be done with the following configuration:

{
	"structures": [
		{
		  "name": "minecraft:mineshaft",
		  "is_disabled": true,
		  "biome_blacklist_type": "CENTER_PART",
		  "blacklisted_biomes": []
		},
		{
		  "name": "minecraft:mineshaft_mesa",
		  "is_disabled": true,
		  "biome_blacklist_type": "NONE",
		  "blacklisted_biomes": []
		}
	]
}

Forbidding the shipwreck structure to spawn in deep cold and frozen oceans can be done via the following configuration:
{
	"structures": [
		{
			"name": "minecraft:shipwreck",
			"is_disabled": false,
			"biome_blacklist_type": "CENTER_PART",
			"blacklisted_biomes": [
				"minecraft:deep_cold_ocean",
				"minecraft:deep_frozen_ocean"
			]
		}
	]
}

With the following configuration plains village will not be generated at all if any part of the village would be placed on the river biome:
{
	"structures": [
		{
			"name": "minecraft:village_plains",
			"is_disabled": false,
			"biome_blacklist_type": "ALL_PARTS",
			"blacklisted_biomes": [
				"minecraft:river"
			]
		}
	]
}

The following configuration complements the previous example by compensating for blacklisted biomes with more frequent generations:

{
	"structure_sets": [
		{
			"name": "minecraft:villages",
			"spacing": 16,
			"separation": 8
		}
	]
}

πŸ’¬ Community


Feel free to join our community at the discord server to chat, share your creations, ask any question or to simply be updated about the latest development of the mod and notified when the new release is out. Also don't hesitate to report any crash or bug via GitHub issues.


πŸ‘‹ Support


I will continue developing my mods as a hobby because I truly enjoy it. If you'd like to support me, you can do so on Patreon or Ko-fi. Your support is greatly appreciated.


πŸ“œ License


The mod is licensed with CC BY-NC-ND 4.0 license.

Please feel free to explore my code for examples of how I've tackled and solved various challenges while developing this mod. You're welcome to incorporate code snippets into your own projects. Also feel free to use this mod in any modpack (although credit/link back to this page will be greatly appreciated).

About

Minecraft configuration mod that makes configuring everything related to structures very easy and accessible, eliminating the hassle of creating multiple datapacks.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Java 99.1%
  • Makefile 0.9%