diff --git a/src/main/java/org/betterx/bclib/BCLib.java b/src/main/java/org/betterx/bclib/BCLib.java index 5e4505b0..0be4ae84 100644 --- a/src/main/java/org/betterx/bclib/BCLib.java +++ b/src/main/java/org/betterx/bclib/BCLib.java @@ -11,6 +11,7 @@ import org.betterx.bclib.api.dataexchange.DataExchangeAPI; import org.betterx.bclib.api.dataexchange.handler.autosync.*; import org.betterx.bclib.api.tag.TagAPI; import org.betterx.bclib.config.Configs; +import org.betterx.bclib.presets.WorldPresets; import org.betterx.bclib.recipes.AnvilRecipe; import org.betterx.bclib.recipes.CraftingRecipes; import org.betterx.bclib.registry.BaseBlockEntities; @@ -37,6 +38,7 @@ public class BCLib implements ModInitializer { CraftingRecipes.init(); WorldDataAPI.registerModCache(MOD_ID); DataExchangeAPI.registerMod(MOD_ID); + WorldPresets.register(); AnvilRecipe.register(); DataExchangeAPI.registerDescriptors(List.of( diff --git a/src/main/java/org/betterx/bclib/api/tag/TagAPI.java b/src/main/java/org/betterx/bclib/api/tag/TagAPI.java index 9e4239f1..dadd7a04 100644 --- a/src/main/java/org/betterx/bclib/api/tag/TagAPI.java +++ b/src/main/java/org/betterx/bclib/api/tag/TagAPI.java @@ -35,11 +35,15 @@ public class TagAPI { "tags/worldgen/biome", b -> BiomeAPI.getBiomeID(b)); - private static TagType.RegistryBacked registerType(DefaultedRegistry registry) { + public static TagType.RegistryBacked registerType(DefaultedRegistry registry) { TagType type = new TagType.RegistryBacked<>(registry); return (TagType.RegistryBacked) TYPES.computeIfAbsent(type.directory, (dir) -> type); } + public static TagType.Simple registerType(Registry registry, String directory) { + return registerType(registry.key(), directory, (o) -> registry.getKey(o)); + } + public static TagType.Simple registerType(ResourceKey> registry, String directory, Function locationProvider) { diff --git a/src/main/java/org/betterx/bclib/mixin/common/WorldPresetsBootstrapMixin.java b/src/main/java/org/betterx/bclib/mixin/common/WorldPresetsBootstrapMixin.java index 7ac2f709..75aa8812 100644 --- a/src/main/java/org/betterx/bclib/mixin/common/WorldPresetsBootstrapMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/common/WorldPresetsBootstrapMixin.java @@ -3,7 +3,6 @@ package org.betterx.bclib.mixin.common; import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.data.BuiltinRegistries; -import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.dimension.LevelStem; @@ -14,7 +13,6 @@ import net.minecraft.world.level.levelgen.presets.WorldPresets; import net.minecraft.world.level.levelgen.structure.StructureSet; import net.minecraft.world.level.levelgen.synth.NormalNoise; -import org.betterx.bclib.BCLib; import org.betterx.bclib.world.generator.BCLibEndBiomeSource; import org.betterx.bclib.world.generator.BCLibNetherBiomeSource; import org.spongepowered.asm.mixin.Final; @@ -27,7 +25,6 @@ import java.util.Map; @Mixin(WorldPresets.Bootstrap.class) public abstract class WorldPresetsBootstrapMixin { - private static final ResourceKey BCL_NORMAL = bcl_register("normal"); @Shadow @Final private Registry presets; @@ -54,9 +51,6 @@ public abstract class WorldPresetsBootstrapMixin { private Holder endNoiseSettings; //see WorldPresets.register - private static ResourceKey bcl_register(String string) { - return ResourceKey.create(Registry.WORLD_PRESET_REGISTRY, BCLib.makeID(string)); - } @ModifyArg(method = "run", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/world/level/levelgen/presets/WorldPresets$Bootstrap;registerCustomOverworldPreset(Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/world/level/dimension/LevelStem;)Lnet/minecraft/core/Holder;")) private LevelStem bcl_getOverworldStem(LevelStem overworldStem) { @@ -86,7 +80,8 @@ public abstract class WorldPresetsBootstrapMixin { bclNether, LevelStem.END, bclEnd)); - BuiltinRegistries.register(this.presets, BCL_NORMAL, preset); + + BuiltinRegistries.register(this.presets, org.betterx.bclib.presets.WorldPresets.BCL_WORLD, preset); return overworldStem; } diff --git a/src/main/java/org/betterx/bclib/presets/FlatLevelPresets.java b/src/main/java/org/betterx/bclib/presets/FlatLevelPresets.java new file mode 100644 index 00000000..517af810 --- /dev/null +++ b/src/main/java/org/betterx/bclib/presets/FlatLevelPresets.java @@ -0,0 +1,25 @@ +package org.betterx.bclib.presets; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.FlatLevelGeneratorPresetTags; +import net.minecraft.world.level.levelgen.flat.FlatLevelGeneratorPreset; + +import org.betterx.bclib.api.tag.TagAPI; +import org.betterx.bclib.api.tag.TagType; + +public class FlatLevelPresets { + public static TagType.Simple FLAT_LEVEL_PRESETS = + TagAPI.registerType(Registry.FLAT_LEVEL_GENERATOR_PRESET_REGISTRY, + "tags/worldgen/flat_level_generator_preset", + (b) -> null); + + + public static ResourceKey register(ResourceLocation loc) { + ResourceKey key = ResourceKey.create(Registry.FLAT_LEVEL_GENERATOR_PRESET_REGISTRY, + loc); + FLAT_LEVEL_PRESETS.addUntyped(FlatLevelGeneratorPresetTags.VISIBLE, key.location()); + return key; + } +} diff --git a/src/main/java/org/betterx/bclib/presets/WorldPresets.java b/src/main/java/org/betterx/bclib/presets/WorldPresets.java new file mode 100644 index 00000000..ebfd7def --- /dev/null +++ b/src/main/java/org/betterx/bclib/presets/WorldPresets.java @@ -0,0 +1,29 @@ +package org.betterx.bclib.presets; + +import net.minecraft.core.Registry; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.WorldPresetTags; +import net.minecraft.world.level.levelgen.presets.WorldPreset; + +import org.betterx.bclib.BCLib; +import org.betterx.bclib.api.tag.TagAPI; +import org.betterx.bclib.api.tag.TagType; + +public class WorldPresets { + public static TagType.Simple WORLD_PRESETS = + TagAPI.registerType(BuiltinRegistries.WORLD_PRESET, "tag/worldgen/world_preset"); + + public static ResourceKey BCL_WORLD = register(BCLib.makeID("normal")); + + public static ResourceKey register(ResourceLocation loc) { + ResourceKey key = ResourceKey.create(Registry.WORLD_PRESET_REGISTRY, + loc); + WORLD_PRESETS.addUntyped(WorldPresetTags.NORMAL, key.location()); + return key; + } + + public static void register() { + } +}