Table of Contents

The following applies to 1.16.2 at the time this is written.

Changes from 1.16.1

Worldgen Registries

The following diagram shows various objects that participate in defining world generation, and where they are registered/defined.

The general rule of thumb is that Registry will contain objects that contain some form of custom code, while BuiltInRegistry contains built-in data objects that mostly reference code objects from an associate Registry by ID and sometimes add configuration data.

As an example:

For use in an actual world, all data objects from BuiltInRegistries will be copied by value into a new DynamicRegistryManager and may be overridden by JSON files in enabled data packs.

Registering Custom Worldgen

You should register your custom worldgen in the following order in your mod initializer:

  1. Register all of your custom code (feature, structure feature, etc.) into Registry or using a specific API (i.e. see fabric-api for structures)
  2. Register all of your data such that referenced code or data is already registered
    1. Register configured features and configured structures before using them in biomes for example
  3. Use the Fabric biome API to insert your custom biomes into vanilla generation of the overworld, nether and the end as needed
  4. Register your custom configured features and structures for insertion into other biomes using the Fabric biome API