From 2ae640b5302418f7a3c31338c465aede88a55d32 Mon Sep 17 00:00:00 2001 From: sciwhiz12 Date: Fri, 17 Jun 2022 15:56:12 +0800 Subject: [PATCH] Remove ForgeWorldPreset and related code (#8756) Vanilla has a working replacement. --- .../minecraftforge/common/ForgeConfig.java | 9 -- .../net/minecraftforge/common/ForgeHooks.java | 9 -- .../common/world/ForgeWorldPreset.java | 103 ------------------ .../ForgeDeferredRegistriesSetup.java | 1 - .../registries/ForgeRegistries.java | 4 - .../minecraftforge/registries/GameData.java | 6 - .../debug/world/ForgeWorldTypeTest.java | 71 ------------ src/test/resources/META-INF/mods.toml | 2 - 8 files changed, 205 deletions(-) delete mode 100644 src/main/java/net/minecraftforge/common/world/ForgeWorldPreset.java delete mode 100644 src/test/java/net/minecraftforge/debug/world/ForgeWorldTypeTest.java diff --git a/src/main/java/net/minecraftforge/common/ForgeConfig.java b/src/main/java/net/minecraftforge/common/ForgeConfig.java index cafabcb8f1..ddd44c99ae 100644 --- a/src/main/java/net/minecraftforge/common/ForgeConfig.java +++ b/src/main/java/net/minecraftforge/common/ForgeConfig.java @@ -97,21 +97,12 @@ public class ForgeConfig { * General configuration that doesn't need to be synchronized but needs to be available before server startup */ public static class Common { - public final ForgeConfigSpec.ConfigValue defaultWorldType; - Common(ForgeConfigSpec.Builder builder) { builder.comment("General configuration settings") .push("general"); - defaultWorldType = builder - .comment("Defines a default world type to use. The vanilla default world type is represented by 'default'.", - "The modded world types are registry names which should include the registry namespace, such as 'examplemod:example_world_type'.") - .translation("forge.configgui.defaultWorldType") - .define("defaultWorldType", "default"); - builder.pop(); } - } /** diff --git a/src/main/java/net/minecraftforge/common/ForgeHooks.java b/src/main/java/net/minecraftforge/common/ForgeHooks.java index 84ad5f35e1..8d3a8dd333 100644 --- a/src/main/java/net/minecraftforge/common/ForgeHooks.java +++ b/src/main/java/net/minecraftforge/common/ForgeHooks.java @@ -102,7 +102,6 @@ import net.minecraftforge.common.util.BlockSnapshot; import net.minecraftforge.common.util.Lazy; import net.minecraftforge.common.util.MavenVersionStringHelper; import net.minecraftforge.common.world.BiomeGenerationSettingsBuilder; -import net.minecraftforge.common.world.ForgeWorldPreset; import net.minecraftforge.common.world.MobSpawnSettingsBuilder; import net.minecraftforge.event.AnvilUpdateEvent; import net.minecraftforge.event.DifficultyChangeEvent; @@ -824,14 +823,6 @@ public class ForgeHooks throw new RuntimeException("Mod fluids must override getFluidType."); } - public static String getDefaultWorldPreset() - { - ForgeWorldPreset def = ForgeWorldPreset.getDefaultWorldPreset(); - if (def != null) - return ForgeRegistries.WORLD_TYPES.get().getKey(def).toString(); - return "default"; - } - public static TagKey getTagFromVanillaTier(Tiers tier) { return switch(tier) diff --git a/src/main/java/net/minecraftforge/common/world/ForgeWorldPreset.java b/src/main/java/net/minecraftforge/common/world/ForgeWorldPreset.java deleted file mode 100644 index a165388d17..0000000000 --- a/src/main/java/net/minecraftforge/common/world/ForgeWorldPreset.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) Forge Development LLC and contributors - * SPDX-License-Identifier: LGPL-2.1-only - */ - -package net.minecraftforge.common.world; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.StringUtil; -import net.minecraft.Util; -import net.minecraft.core.RegistryAccess; -import net.minecraft.core.Registry; -import net.minecraft.network.chat.Component; -import net.minecraft.world.level.dimension.DimensionType; -import net.minecraft.world.level.chunk.ChunkGenerator; -import net.minecraft.world.level.dimension.LevelStem; -import net.minecraft.world.level.levelgen.WorldGenSettings; -import net.minecraftforge.common.ForgeConfig; -import net.minecraftforge.registries.ForgeRegistries; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class ForgeWorldPreset -{ - private static final Logger LOGGER = LogManager.getLogger(); - - public static ForgeWorldPreset getDefaultWorldPreset() - { - String defaultWorldType = ForgeConfig.COMMON.defaultWorldType.get(); - - if (StringUtil.isNullOrEmpty(defaultWorldType) || "default".equals(defaultWorldType)) - return null; // use vanilla - - ForgeWorldPreset def = ForgeRegistries.WORLD_TYPES.get().getValue(new ResourceLocation(defaultWorldType)); - if (def == null) - { - LOGGER.error("The defaultWorldType '{}' specified in the forge config has not been registered. The vanilla default generator will be used.", defaultWorldType); - } - - return def; - } - - private final IChunkGeneratorFactory factory; - - public ForgeWorldPreset(IChunkGeneratorFactory factory) - { - this.factory = factory; - } - - public ForgeWorldPreset(IBasicChunkGeneratorFactory factory) - { - this.factory = factory; - } - - public String getTranslationKey() - { - return Util.makeDescriptionId("generator", ForgeRegistries.WORLD_TYPES.get().getKey(this)); - } - - public Component getDisplayName() - { - return Component.translatable(getTranslationKey()); - } - - /** - * Called from both the dedicated server and the world creation screen in the client. - * to construct the DimensionGEneratorSettings: - * @return The constructed chunk generator. - */ - public ChunkGenerator createChunkGenerator(RegistryAccess registryAccess, long seed, String generatorSettings) - { - return this.factory.createChunkGenerator(registryAccess, seed, generatorSettings); - } - - public WorldGenSettings createSettings(RegistryAccess registryAccess, long seed, boolean generateStructures, boolean generateLoot, String generatorSettings) - { - return this.factory.createSettings(registryAccess, seed, generateStructures, generateLoot, generatorSettings); - } - - public interface IChunkGeneratorFactory - { - ChunkGenerator createChunkGenerator(RegistryAccess dynamicRegistries, long seed, String generatorSettings); - - default WorldGenSettings createSettings(RegistryAccess dynamicRegistries, long seed, boolean generateStructures, boolean bonusChest, String generatorSettings) { - Registry dimensionTypeRegistry = dynamicRegistries.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY); - Registry levelStemRegistry = dynamicRegistries.registryOrThrow(Registry.LEVEL_STEM_REGISTRY); - return new WorldGenSettings(seed, generateStructures, bonusChest, - WorldGenSettings.withOverworld(dimensionTypeRegistry, - levelStemRegistry, - createChunkGenerator(dynamicRegistries, seed, generatorSettings))); - } - } - - public interface IBasicChunkGeneratorFactory extends IChunkGeneratorFactory - { - ChunkGenerator createChunkGenerator(RegistryAccess registryAccess, long seed); - - default ChunkGenerator createChunkGenerator(RegistryAccess registryAccess, long seed, String generatorSettings) - { - return createChunkGenerator(registryAccess, seed); - } - } -} diff --git a/src/main/java/net/minecraftforge/registries/ForgeDeferredRegistriesSetup.java b/src/main/java/net/minecraftforge/registries/ForgeDeferredRegistriesSetup.java index 5552fb294d..9f07fcef6f 100644 --- a/src/main/java/net/minecraftforge/registries/ForgeDeferredRegistriesSetup.java +++ b/src/main/java/net/minecraftforge/registries/ForgeDeferredRegistriesSetup.java @@ -21,7 +21,6 @@ public class ForgeDeferredRegistriesSetup ForgeRegistries.DEFERRED_DATA_SERIALIZERS.register(modEventBus); ForgeRegistries.DEFERRED_LOOT_MODIFIER_SERIALIZERS.register(modEventBus); - ForgeRegistries.DEFERRED_WORLD_TYPES.register(modEventBus); ForgeRegistries.DEFERRED_BIOME_MODIFIER_SERIALIZERS.register(modEventBus); ForgeRegistries.DEFERRED_FLUID_TYPES.register(modEventBus); ForgeRegistries.DEFERRED_BIOME_MODIFIERS.register(modEventBus); diff --git a/src/main/java/net/minecraftforge/registries/ForgeRegistries.java b/src/main/java/net/minecraftforge/registries/ForgeRegistries.java index 4a33ea65cc..58dfebf957 100644 --- a/src/main/java/net/minecraftforge/registries/ForgeRegistries.java +++ b/src/main/java/net/minecraftforge/registries/ForgeRegistries.java @@ -43,7 +43,6 @@ import net.minecraft.world.level.levelgen.feature.treedecorators.TreeDecoratorTy import net.minecraftforge.common.Tags; import net.minecraftforge.common.loot.GlobalLootModifierSerializer; import net.minecraftforge.common.world.BiomeModifier; -import net.minecraftforge.common.world.ForgeWorldPreset; import net.minecraftforge.fluids.FluidType; import java.util.function.Supplier; @@ -100,8 +99,6 @@ public class ForgeRegistries public static final Supplier>> DATA_SERIALIZERS = DEFERRED_DATA_SERIALIZERS.makeRegistry(GameData::getDataSerializersRegistryBuilder); static final DeferredRegister> DEFERRED_LOOT_MODIFIER_SERIALIZERS = DeferredRegister.create(Keys.LOOT_MODIFIER_SERIALIZERS, Keys.LOOT_MODIFIER_SERIALIZERS.location().getNamespace()); public static final Supplier>> LOOT_MODIFIER_SERIALIZERS = DEFERRED_LOOT_MODIFIER_SERIALIZERS.makeRegistry(GameData::getGLMSerializersRegistryBuilder); - static final DeferredRegister DEFERRED_WORLD_TYPES = DeferredRegister.create(Keys.WORLD_TYPES, Keys.WORLD_TYPES.location().getNamespace()); - public static final Supplier> WORLD_TYPES = DEFERRED_WORLD_TYPES.makeRegistry(GameData::getWorldTypesRegistryBuilder); static final DeferredRegister> DEFERRED_BIOME_MODIFIER_SERIALIZERS = DeferredRegister.create(Keys.BIOME_MODIFIER_SERIALIZERS, Keys.BIOME_MODIFIER_SERIALIZERS.location().getNamespace()); public static final Supplier>> BIOME_MODIFIER_SERIALIZERS = DEFERRED_BIOME_MODIFIER_SERIALIZERS.makeRegistry(() -> new RegistryBuilder>().disableSaving().disableSync()); static final DeferredRegister> DEFERRED_STRUCTURE_MODIFIER_SERIALIZERS = DeferredRegister.create(Keys.STRUCTURE_MODIFIER_SERIALIZERS, Keys.STRUCTURE_MODIFIER_SERIALIZERS.location().getNamespace()); @@ -152,7 +149,6 @@ public class ForgeRegistries // Forge public static final ResourceKey>> DATA_SERIALIZERS = key("forge:data_serializers"); public static final ResourceKey>> LOOT_MODIFIER_SERIALIZERS = key("forge:loot_modifier_serializers"); - public static final ResourceKey> WORLD_TYPES = key("forge:world_types"); public static final ResourceKey>> BIOME_MODIFIER_SERIALIZERS = key("forge:biome_modifier_serializers"); public static final ResourceKey>> STRUCTURE_MODIFIER_SERIALIZERS = key("forge:structure_modifier_serializers"); public static final ResourceKey> FLUID_TYPES = key("forge:fluid_type"); diff --git a/src/main/java/net/minecraftforge/registries/GameData.java b/src/main/java/net/minecraftforge/registries/GameData.java index 61fc9b8805..e71516ed8e 100644 --- a/src/main/java/net/minecraftforge/registries/GameData.java +++ b/src/main/java/net/minecraftforge/registries/GameData.java @@ -39,7 +39,6 @@ import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.loot.GlobalLootModifierSerializer; import net.minecraftforge.common.util.LogMessageAdapter; -import net.minecraftforge.common.world.ForgeWorldPreset; import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.ModLoader; @@ -149,11 +148,6 @@ public class GameData return makeRegistry(LOOT_MODIFIER_SERIALIZERS).disableSaving().disableSync(); } - static RegistryBuilder getWorldTypesRegistryBuilder() - { - return makeRegistry(WORLD_TYPES).disableSaving().disableSync(); - } - static RegistryBuilder getFluidTypeRegistryBuilder() { return makeRegistry(FLUID_TYPES).disableSaving(); diff --git a/src/test/java/net/minecraftforge/debug/world/ForgeWorldTypeTest.java b/src/test/java/net/minecraftforge/debug/world/ForgeWorldTypeTest.java deleted file mode 100644 index dfc2484b0a..0000000000 --- a/src/test/java/net/minecraftforge/debug/world/ForgeWorldTypeTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) Forge Development LLC and contributors - * SPDX-License-Identifier: LGPL-2.1-only - */ - -package net.minecraftforge.debug.world; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.components.Button; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.core.RegistryAccess; -import net.minecraft.world.level.chunk.ChunkGenerator; -import net.minecraft.world.level.levelgen.WorldGenSettings; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.common.world.ForgeWorldPreset; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.ObjectHolder; -import net.minecraftforge.registries.RegisterEvent; - -@Mod("forge_world_type_test") -public class ForgeWorldTypeTest -{ - // TODO-PATCHING: find what changed to world loading to see what gets passed to ForgeWorldPreset -sci -// @ObjectHolder(registryName = "forge:world_types", value = "forge_world_type_test:test_world_type") -// public static ForgeWorldPreset testWorldType; -// -// public ForgeWorldTypeTest() -// { -// FMLJavaModLoadingContext.get().getModEventBus().addListener(this::registerWorldTypes); -// } -// -// private void registerWorldTypes(RegisterEvent event) -// { -// event.register(ForgeRegistries.Keys.WORLD_TYPES, helper -> -// { -// helper.register("test_world_type", new ForgeWorldPreset(WorldGenSettings::makeDefaultOverworld)); -// helper.register("test_world_type2", new ForgeWorldPreset(this::createChunkGenerator)); -// }); -// } -// -// private ChunkGenerator createChunkGenerator(RegistryAccess registry, long seed, String settings) -// { -// return WorldGenSettings.makeDefaultOverworld(registry, seed); -// } -// -// @Mod.EventBusSubscriber(modid="forge_world_type_test", value=Dist.CLIENT, bus=Bus.MOD) -// public static class ForgeWorldTypeTestClientModEvents -// { -// @SubscribeEvent -// public static void registerWorldTypeScreenFactories(FMLClientSetupEvent event) -// { -// // ForgeWorldPresetScreens.registerPresetEditor(testWorldType, (returnTo, dimensionGeneratorSettings) -> new Screen(testWorldType.getDisplayName()) -// // { -// // @Override -// // protected void init() -// // { -// // super.init(); -// // -// // addRenderableWidget(new Button(0, 0, 120, 20, Component.literal("close"), btn -> { -// // Minecraft.getInstance().setScreen(returnTo); -// // })); -// // } -// // }); -// } -// } -} diff --git a/src/test/resources/META-INF/mods.toml b/src/test/resources/META-INF/mods.toml index 76f8214680..cd0e02bbf9 100644 --- a/src/test/resources/META-INF/mods.toml +++ b/src/test/resources/META-INF/mods.toml @@ -123,8 +123,6 @@ modId="forge_codecs_test" [[mods]] modId="render_local_player_test" [[mods]] -modId="forge_world_type_test" -[[mods]] modId="custom_sound_type_test" [[mods]] modId="item_modifier_test"