diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java index 8b0fc706b..262fbf8fe 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/ModPlatform.java @@ -66,7 +66,8 @@ public abstract class ModPlatform extends AbstractPlatform { }); getRawConfigRegistry() .forEach(pack -> { - PresetUtil.createDefault(pack, this, configPacksInMetaPack.contains(pack.getID())).apply(registerFunction); + boolean packInMetapack = configPacksInMetaPack.contains(pack.getID()); + PresetUtil.createDefault(pack, this, packInMetapack, packInMetapack).apply(registerFunction); }); } diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java index 0b5b5401f..b387a75c5 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/PresetUtil.java @@ -40,7 +40,7 @@ public class PresetUtil { private static final Logger LOGGER = LoggerFactory.getLogger(PresetUtil.class); private static final List> PRESETS = new ArrayList<>(); - public static Pair createDefault(ConfigPack pack, ModPlatform platform, boolean extended) { + public static Pair createDefault(ConfigPack pack, ModPlatform platform, boolean extended, boolean packInMetapack) { Registry dimensionTypeRegistry = platform.dimensionTypeRegistry(); Registry chunkGeneratorSettingsRegistry = platform.chunkGeneratorSettingsRegistry(); Registry multiNoiseBiomeSourceParameterLists = @@ -55,7 +55,7 @@ public class PresetUtil { HashMap, DimensionOptions> dimensionMap = new HashMap<>(); - insertCustom(platform, "minecraft:overworld", pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap); + insertCustom(platform, "minecraft:overworld", pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap, packInMetapack); insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), dimensionMap); @@ -80,7 +80,7 @@ public class PresetUtil { HashMap, DimensionOptions> dimensionMap = new HashMap<>(); metaPack.packs().forEach((key, pack) -> { - insertCustom(platform, key, pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap); + insertCustom(platform, key, pack, dimensionTypeRegistry, chunkGeneratorSettingsRegistry, dimensionMap, false); }); insertDefaults(dimensionTypeRegistry, chunkGeneratorSettingsRegistry, multiNoiseBiomeSourceParameterLists, platform.biomeRegistry(), @@ -93,7 +93,7 @@ public class PresetUtil { private static void insertCustom(ModPlatform platform, String key, ConfigPack pack, Registry dimensionTypeRegistry, Registry chunkGeneratorSettingsRegistry, - HashMap, DimensionOptions> dimensionMap) { + HashMap, DimensionOptions> dimensionMap, boolean packInMetapack) { Identifier demensionIdentifier = Identifier.of(key); VanillaWorldProperties vanillaWorldProperties; @@ -108,12 +108,18 @@ public class PresetUtil { assert defaultDimension != null; - DimensionType dimensionType = DimensionUtil.createDimension(vanillaWorldProperties, defaultDimension, platform); - RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey( - Identifier.of("terra", pack.getID().toLowerCase( - Locale.ROOT))); + Identifier dimensionTypeID = Identifier.of("terra", pack.getID().toLowerCase(Locale.ROOT)); - Registry.registerReference(dimensionTypeRegistry, dimensionTypeRegistryKey, dimensionType); + DimensionType dimensionType; + if (!packInMetapack) { + dimensionType = DimensionUtil.createDimension(vanillaWorldProperties, defaultDimension, platform); + RegistryKey dimensionTypeRegistryKey = MinecraftUtil.registerDimensionTypeKey( + dimensionTypeID); + + Registry.registerReference(dimensionTypeRegistry, dimensionTypeRegistryKey, dimensionType); + } else { + dimensionType = dimensionTypeRegistry.get(dimensionTypeID); + } RegistryEntry dimensionTypeRegistryEntry = dimensionTypeRegistry.getEntry(dimensionType);