From d16a8d6d5d21821d105f4269b3bd71e674b75a5d Mon Sep 17 00:00:00 2001 From: TelepathicGrunt <40846040+TelepathicGrunt@users.noreply.github.com> Date: Sun, 14 Feb 2021 22:05:11 -0500 Subject: [PATCH] Disable syncing of Feature and Biome registries (#7639) --- .../minecraftforge/registries/GameData.java | 4 +-- .../world/WorldgenRegistryDesyncTest.java | 30 +++++++++++++++++++ src/test/resources/META-INF/mods.toml | 2 ++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 src/test/java/net/minecraftforge/debug/world/WorldgenRegistryDesyncTest.java diff --git a/src/main/java/net/minecraftforge/registries/GameData.java b/src/main/java/net/minecraftforge/registries/GameData.java index 5ac47a0482..3047ed66b3 100644 --- a/src/main/java/net/minecraftforge/registries/GameData.java +++ b/src/main/java/net/minecraftforge/registries/GameData.java @@ -164,7 +164,7 @@ public class GameData // Worldgen makeRegistry(WORLD_CARVERS, c(WorldCarver.class)).disableSaving().disableSync().create(); makeRegistry(SURFACE_BUILDERS, c(SurfaceBuilder.class)).disableSaving().disableSync().create(); - makeRegistry(FEATURES, c(Feature.class)).addCallback(FeatureCallbacks.INSTANCE).disableSaving().create(); + makeRegistry(FEATURES, c(Feature.class)).addCallback(FeatureCallbacks.INSTANCE).disableSaving().disableSync().create(); makeRegistry(DECORATORS, c(Placement.class)).disableSaving().disableSync().create(); makeRegistry(CHUNK_STATUS, ChunkStatus.class, "empty").disableSaving().disableSync().create(); makeRegistry(STRUCTURE_FEATURES, c(Structure.class)).disableSaving().disableSync().create(); @@ -174,7 +174,7 @@ public class GameData makeRegistry(TREE_DECORATOR_TYPES, c(TreeDecoratorType.class)).disableSaving().disableSync().create(); // Dynamic Worldgen - makeRegistry(BIOMES, Biome.class).create(); + makeRegistry(BIOMES, Biome.class).disableSync().create(); // Custom forge registries makeRegistry(DATA_SERIALIZERS, DataSerializerEntry.class, 256 /*vanilla space*/, MAX_VARINT).disableSaving().disableOverrides().addCallback(SerializerCallbacks.INSTANCE).create(); diff --git a/src/test/java/net/minecraftforge/debug/world/WorldgenRegistryDesyncTest.java b/src/test/java/net/minecraftforge/debug/world/WorldgenRegistryDesyncTest.java new file mode 100644 index 0000000000..c8e38886a9 --- /dev/null +++ b/src/test/java/net/minecraftforge/debug/world/WorldgenRegistryDesyncTest.java @@ -0,0 +1,30 @@ +package net.minecraftforge.debug.world; + +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.BiomeMaker; +import net.minecraft.world.gen.feature.DungeonsFeature; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +@Mod("worldgen_registry_desync_test") +@Mod.EventBusSubscriber +public class WorldgenRegistryDesyncTest { + + public static final DeferredRegister> FEATURES = DeferredRegister.create(ForgeRegistries.FEATURES, "worldgen_registry_desync_test"); + public static final RegistryObject> dungeon = FEATURES.register("dungeon", () -> new DungeonsFeature(NoFeatureConfig.field_236558_a_)); + public static final DeferredRegister BIOMES = DeferredRegister.create(ForgeRegistries.BIOMES, "worldgen_registry_desync_test"); + public static final RegistryObject biome = BIOMES.register("biome", BiomeMaker::makeVoidBiome); + + public WorldgenRegistryDesyncTest() + { + IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); + FEATURES.register(modEventBus); + BIOMES.register(modEventBus); + } +} diff --git a/src/test/resources/META-INF/mods.toml b/src/test/resources/META-INF/mods.toml index 46ead716a5..e02bcbaa0c 100644 --- a/src/test/resources/META-INF/mods.toml +++ b/src/test/resources/META-INF/mods.toml @@ -108,3 +108,5 @@ license="LGPL v2.1" modId="custom_sound_type_test" [[mods]] modId="item_modifier_test" +[[mods]] + modId="worldgen_registry_desync_test" \ No newline at end of file