Skip to content

Snow Village Components

cdstk edited this page Sep 19, 2026 · 4 revisions

Types

All types will generate alongside each other

  • Class - Coded like Vanilla 1.12 Village structures, their generation rates can be modified.
  • Resource Pack - Simple nbt structure files, their generation rates can be modified, but bounding boxes and terrain offsets must be known.
  • Vanilla - Uses Forge's Village Creation Handler system, their generate rates can not be modified and so can only be disabled fully.

This is a list of all 1.12 Vanilla Village Component Weights and Spawn Count Ranges

Class Components

Are instances of StructureVillagePieces.Village and do not have a visual structure builder, which makes it harder to create custom structure using this type. Generation can be defined in Better Snow Village Class Components config Format: [class, weight, min count, max count].

  		"net.minecraft.world.gen.structure.StructureVillagePieces$Church, 1, -8, 1",
  		"bettersnowvillages.world.gen.structure.BetterSnowVillagePieces$ExtraTorch, 50, 5, 6",
  		"bettersnowvillages.world.gen.structure.BetterSnowVillagePieces$SnowWoodHut, 40, 2, 3",
  		"bettersnowvillages.world.gen.structure.BetterSnowVillagePieces$SnowHouse3, 1, -8, 1",
  		"bettersnowvillages.world.gen.structure.BetterSnowVillagePieces$SnowHouse4, 40, 1, 2"

In this example, will try to generate 3 to 5 Vanilla palette swap Huts and Houses in most situations. There is a low chance for a 1.12 Village Church to generate.

Resource Pack Components

Are stored in Vanilla Resource packs, for example the Vanilla Igloo is located in minecraft:igloo/igloo_top. These are simple structures that can be created using Structure Blocks, however there is no way to link multiple pieces together if each piece is in separate files. Generation can be defined in Better Snow Village Resource Pack Components" config Format: [namespace:path, weight, min count, max count, bounding box width, height, length, offset x, y, z].

  		"minecraft:igloo/igloo_top, 						40, 1, 1, 	7, 5, 8, 	0, -1, 0",
  		"bettersnowvillages:snowy_animal_pen_1_cow, 		3, 0, 1, 	9, 6, 8,	0, 0, 0",,
  		"bettersnowvillages:snowy_farm_1_wheat, 			3, 0, 1, 	7, 6, 6,	0, 0, 0",
  		"bettersnowvillages:snowy_medium_house_1_random, 	4, -2, 1, 	8, 6, 7, 	0, -1, 0",
  		"bettersnowvillages:snowy_small_house_1_random, 	8, -2, 1, 	7, 5, 6, 	0, -1, 0",
  		"bettersnowvillages:snowy_temple_1_empty, 			1, -2, 1, 	7, 14, 10,	0, 0, 0",

Every Resource Pack component is required to have their bounding boxes written in the config as the template file is read too late. They should also have x, y, z offsets specified as it allows it blend into the terrain, such as being flush with the ground.

Since Class Components will generate by default, this list of Resource Pack Components have weight, min count, and max count set to values that will not always allow them to spawn.

If you would like to spawn a random Snow Villager, set Profession to a number about 10 in the structure file:

  	nbt: {
  		Profession: 16
  		id: "iceandfire:snowvillager"
  	}
image

The structure must saved facing in the correct direction so that it can be rotated and mirrored correctly when it generates.

Vanilla Components

Are all registered in VillagerRegistry.instance().registerVillageCreationHandler() and act as the primary way to integrate other mod's Village structures. Generation can be defined in Better Snow Village Vanilla Components config, however the only optional available is to enable/disable them. Generation rate settings are determined by the mod that registered them.

For ease of use, the list can be automatically refreshed with loaded components if the 1st config entry is blank.

  		"com.github.alexthe666.iceandfire.world.village.ComponentAnimalFarm, true",
  		"com.github.alexthe666.iceandfire.world.village.ComponentScriberHouse, false",
  		"ejektaflex.bountiful.worldgen.VillageBoardComponent, true",
  		"net.blay09.mods.waystones.worldgen.ComponentVillageWaystone, true",
  		"ivorius.reccomplex.dynamic.vanillagen.VillageMarketplace_vanilla_85673491, true",
  		"ivorius.reccomplex.dynamic.vanillagen.BetterSnowVillages_SnowVillageMarketplace_vanilla_5b8ff36c, true",

ComponentAnimalFarm is set to true, meaning the Animal Pen from Ice and Fire, will spawn

ComponentScriberHouse is set to false, meaning the Scriber Villager House that is currently exclusive to Ice and Fire: RotN Edition, will not spawn

Recurrent Complex

image image

Recurrent Complex classes can be determined by combining the structure's file name along with it's Generation ID

Recurrent Complex handles it's the generation rate.

Type: Village should be specified

Biomes: $snowy & $cold

Defining Vanilla Components within Class Components

An alternative to having mods handle their own generation rate is overriding their usage.

    S:"Better Snow Village Vanilla Components" <
        net.blay09.mods.waystones.worldgen.ComponentVillageWaystone, false
     >

Disable Waystone's mod handling when generating Better Snow Villages

    S:"Better Snow Village Class Components" <
        net.blay09.mods.waystones.worldgen.ComponentVillageWaystone, 3, 0, 1
     >

Add back the Waystone generation, but instead of always generating 1, it now has a 50% chance to spawn.