Moved FlatLevelPresets to BCLib and started WorldPresets

This commit is contained in:
Frank 2022-05-19 23:32:27 +02:00
parent e8dbbffa8e
commit 375eb09bb9
5 changed files with 63 additions and 8 deletions

View file

@ -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(

View file

@ -35,11 +35,15 @@ public class TagAPI {
"tags/worldgen/biome",
b -> BiomeAPI.getBiomeID(b));
private static <T> TagType.RegistryBacked<T> registerType(DefaultedRegistry<T> registry) {
public static <T> TagType.RegistryBacked<T> registerType(DefaultedRegistry<T> registry) {
TagType<T> type = new TagType.RegistryBacked<>(registry);
return (TagType.RegistryBacked<T>) TYPES.computeIfAbsent(type.directory, (dir) -> type);
}
public static <T> TagType.Simple<T> registerType(Registry<T> registry, String directory) {
return registerType(registry.key(), directory, (o) -> registry.getKey(o));
}
public static <T> TagType.Simple<T> registerType(ResourceKey<? extends Registry<T>> registry,
String directory,
Function<T, ResourceLocation> locationProvider) {

View file

@ -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<WorldPreset> BCL_NORMAL = bcl_register("normal");
@Shadow
@Final
private Registry<WorldPreset> presets;
@ -54,9 +51,6 @@ public abstract class WorldPresetsBootstrapMixin {
private Holder<NoiseGeneratorSettings> endNoiseSettings;
//see WorldPresets.register
private static ResourceKey<WorldPreset> 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;
}

View file

@ -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<FlatLevelGeneratorPreset> FLAT_LEVEL_PRESETS =
TagAPI.registerType(Registry.FLAT_LEVEL_GENERATOR_PRESET_REGISTRY,
"tags/worldgen/flat_level_generator_preset",
(b) -> null);
public static ResourceKey<FlatLevelGeneratorPreset> register(ResourceLocation loc) {
ResourceKey<FlatLevelGeneratorPreset> key = ResourceKey.create(Registry.FLAT_LEVEL_GENERATOR_PRESET_REGISTRY,
loc);
FLAT_LEVEL_PRESETS.addUntyped(FlatLevelGeneratorPresetTags.VISIBLE, key.location());
return key;
}
}

View file

@ -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<WorldPreset> WORLD_PRESETS =
TagAPI.registerType(BuiltinRegistries.WORLD_PRESET, "tag/worldgen/world_preset");
public static ResourceKey<WorldPreset> BCL_WORLD = register(BCLib.makeID("normal"));
public static ResourceKey<WorldPreset> register(ResourceLocation loc) {
ResourceKey<WorldPreset> key = ResourceKey.create(Registry.WORLD_PRESET_REGISTRY,
loc);
WORLD_PRESETS.addUntyped(WorldPresetTags.NORMAL, key.location());
return key;
}
public static void register() {
}
}