tutorial:chunkgenerator
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tutorial:chunkgenerator [2022/12/05 16:35] – added clarification to multithreaded chunk generation miir | tutorial:chunkgenerator [2025/02/08 20:28] (current) – adds note to use Registries.CHUNK_GENERATOR on 1.19.3 and above 3xpl0173d | ||
|---|---|---|---|
| Line 97: | Line 97: | ||
| ==== Registering and Codecs ==== | ==== Registering and Codecs ==== | ||
| - | Like other features in the game, '' | + | Like other features in the game, '' |
| + | <code java> | ||
| + | public static final Codec< | ||
| + | instance.group( | ||
| + | BiomeSource.CODEC.fieldOf(" | ||
| + | Codec.INT.fieldOf(" | ||
| + | Codec.INT.fieldOf(" | ||
| + | Identifier.fieldOf(" | ||
| + | ).apply(instance, | ||
| + | </ | ||
| + | Each line in the codec corresponds to a different field in your chunk generator that should be configurable. In this example, I pass a '' | ||
| + | |||
| + | To use the fields properly, you have to add them, along with getters, into your class: | ||
| + | |||
| + | <code java> | ||
| + | private final BiomeSource biomeSource; | ||
| + | public BiomeSource getBiomeSource() { | ||
| + | return this.biomeSource; | ||
| + | } | ||
| + | private final int seaLevel; | ||
| + | public int getSeaLevel() { | ||
| + | return this.seaLevel; | ||
| + | } | ||
| + | // and the same for the other fields | ||
| + | </ | ||
| + | |||
| + | and then, create a constructor for your generator that uses each of those fields **in the same order that you listed them in the codec**: | ||
| + | <code java> | ||
| + | public ExampleChunkGenerator(BiomeSource biomeSource, | ||
| + | super(biomeSource); | ||
| + | this.seaLevel = seaLevel; | ||
| + | this.worldHeight = worldHeight; | ||
| + | this.customBlock = Registries.BLOCK.getOrThrow(RegistryKey.of(RegistryKeys.BLOCK, | ||
| + | this.customBlockID = customBlockID; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | Then, all that's left is to register your chunk generator. Put the following line into your mod initializer '' | ||
| <code java> | <code java> | ||
| Registry.register(Registry.CHUNK_GENERATOR, | Registry.register(Registry.CHUNK_GENERATOR, | ||
| + | </ | ||
| + | //* For Minecraft Versions 1.19.3 and above, use '' | ||
| + | // | ||
| + | |||
| + | Now, you can create json files to use your new chunk generator: | ||
| + | <code json> | ||
| + | // resources/ | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| </ | </ | ||
| And you're done! If you want to use your new generator, it might be helpful to wrap it with a [[tutorial: | And you're done! If you want to use your new generator, it might be helpful to wrap it with a [[tutorial: | ||
tutorial/chunkgenerator.1670258118.txt.gz · Last modified: 2022/12/05 16:35 by miir