From 54b55be51a174ac625584cfae0ef6746721cf758 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 27 May 2022 16:16:43 +0200 Subject: [PATCH] Small Changes to Surface/Biome API --- .../bclib/{world => api}/biomes/BCLBiome.java | 71 +++++-------------- .../bclib/api/surface/SurfaceRuleUtil.java | 1 - .../betterx/bclib/mixin/common/MainMixin.java | 2 + .../mixin/common/MinecraftServerMixin.java | 5 -- .../mixin/common/TheEndBiomeDataMixin.java | 6 +- 5 files changed, 23 insertions(+), 62 deletions(-) rename src/main/java/org/betterx/bclib/{world => api}/biomes/BCLBiome.java (81%) diff --git a/src/main/java/org/betterx/bclib/world/biomes/BCLBiome.java b/src/main/java/org/betterx/bclib/api/biomes/BCLBiome.java similarity index 81% rename from src/main/java/org/betterx/bclib/world/biomes/BCLBiome.java rename to src/main/java/org/betterx/bclib/api/biomes/BCLBiome.java index 7dcc4a4b..974e25ae 100644 --- a/src/main/java/org/betterx/bclib/world/biomes/BCLBiome.java +++ b/src/main/java/org/betterx/bclib/api/biomes/BCLBiome.java @@ -1,6 +1,5 @@ -package org.betterx.bclib.world.biomes; +package org.betterx.bclib.api.biomes; -import net.minecraft.core.Holder; import net.minecraft.data.BuiltinRegistries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; @@ -15,16 +14,11 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import org.betterx.bclib.BCLib; -import org.betterx.bclib.api.biomes.BCLBiomeBuilder; -import org.betterx.bclib.api.biomes.BiomeAPI; import org.betterx.bclib.api.surface.SurfaceRuleUtil; import org.betterx.bclib.api.tag.TagAPI; import org.betterx.bclib.util.WeightedList; -import java.util.List; -import java.util.Map; -import java.util.Random; -import java.util.Set; +import java.util.*; import java.util.function.BiConsumer; import java.util.function.Consumer; import org.jetbrains.annotations.Nullable; @@ -38,7 +32,7 @@ public class BCLBiome extends BCLBiomeSettings { private final List parameterPoints = Lists.newArrayList(); - private Consumer> surfaceInit; + private Consumer> surfaceInit; private BCLBiome biomeParent; /** @@ -46,7 +40,7 @@ public class BCLBiome extends BCLBiomeSettings { * * @param biomeKey {@link ResourceKey} for the {@link Biome}. */ - public BCLBiome(ResourceKey biomeKey) { + protected BCLBiome(ResourceKey biomeKey) { this(biomeKey.location()); } @@ -55,7 +49,7 @@ public class BCLBiome extends BCLBiomeSettings { * * @param biomeID {@link ResourceLocation} biome ID. */ - public BCLBiome(ResourceLocation biomeID) { + protected BCLBiome(ResourceLocation biomeID) { this(biomeID, BuiltinRegistries.BIOME.get(biomeID), null); } @@ -64,7 +58,7 @@ public class BCLBiome extends BCLBiomeSettings { * * @param biome {@link Biome} to wrap. */ - public BCLBiome(Biome biome) { + protected BCLBiome(Biome biome) { this(biome, null); } @@ -74,7 +68,7 @@ public class BCLBiome extends BCLBiomeSettings { * @param biome {@link Biome} to wrap. * @param settings The Settings for this Biome or {@code null} if you want to apply default settings */ - public BCLBiome(Biome biome, VanillaBiomeSettings settings) { + protected BCLBiome(Biome biome, VanillaBiomeSettings settings) { this(BiomeAPI.getBiomeID(biome), biome, settings); } @@ -89,7 +83,7 @@ public class BCLBiome extends BCLBiomeSettings { * @param biome {@link Biome} to wrap. * @param defaults The Settings for this Biome or null if you want to apply the defaults */ - public BCLBiome(ResourceLocation biomeID, Biome biome, BCLBiomeSettings defaults) { + protected BCLBiome(ResourceLocation biomeID, Biome biome, BCLBiomeSettings defaults) { this.subbiomes.add(this, 1.0F); this.biomeID = biomeID; this.biome = biome; @@ -202,43 +196,15 @@ public class BCLBiome extends BCLBiomeSettings { return biome; } -// /** -// * Recursively update biomes to correct world biome registry instances, for internal usage only. -// * @param biomeRegistry {@link Registry} for {@link Biome}. -// */ -// public void updateActualBiomes(Registry biomeRegistry) { -// subbiomes.forEach((sub) -> { -// if (sub != this) { -// sub.updateActualBiomes(biomeRegistry); -// } -// }); -// if (edge != null && edge != this) { -// edge.updateActualBiomes(biomeRegistry); -// } -// -// final ResourceKey key = biomeRegistry.getResourceKey(biomeRegistry.get(biomeID)).orElseThrow(); -// Holder aBiome = biomeRegistry.getOrCreateHolder(key); -// if (aBiome != actualBiome && actualBiome != null) { -// System.out.println("Changed actual Biome"); -// } -// this.actualBiome = aBiome; -// if (actualBiome == null) { -// BCLib.LOGGER.error("Unable to find actual Biome for " + biomeID); -// } -// } - /** * For internal use from BiomeAPI only */ - public void afterRegistration() { - if (!this.structureTags.isEmpty()) { - structureTags.forEach(tagKey -> - TagAPI.addBiomeTag(tagKey, biome) - ); - } + void afterRegistration() { + ResourceKey key = BuiltinRegistries.BIOME.getResourceKey(getBiome()).orElseThrow(); + this.structureTags.forEach(tagKey -> TagAPI.addBiomeTag(tagKey, biome)); if (this.surfaceInit != null) { - surfaceInit.accept(getBiomeHolder()); + surfaceInit.accept(key); } } @@ -315,15 +281,15 @@ public class BCLBiome extends BCLBiomeSettings { * Adds structures to this biome. For internal use only. * Used inside {@link BCLBiomeBuilder}. */ - public void attachStructures(List> structures) { - this.structureTags.addAll(structures); + void attachStructures(List> structures) { + structureTags.addAll(structures); } /** * Adds structures to this biome. For internal use only. * Used inside {@link BCLBiomeBuilder}. */ - public void addClimateParameters(List params) { + void addClimateParameters(List params) { this.parameterPoints.addAll(params); } @@ -336,9 +302,8 @@ public class BCLBiome extends BCLBiomeSettings { * * @param surface {@link SurfaceRules.RuleSource} rule. */ - public void setSurface(RuleSource surface) { - this.surfaceInit = (b) -> { - final ResourceKey key = BiomeAPI.getBiomeKey(b); + void setSurface(RuleSource surface) { + this.surfaceInit = (key) -> { if (key == null) { BCLib.LOGGER.warning("BCL Biome " + biomeID + " does not have registry key!"); } else { @@ -365,7 +330,7 @@ public class BCLBiome extends BCLBiomeSettings { return getParentBiome().edge == this; } - public boolean allowFabricRegistration() { + boolean allowFabricRegistration() { return !isEdgeBiome(); } } diff --git a/src/main/java/org/betterx/bclib/api/surface/SurfaceRuleUtil.java b/src/main/java/org/betterx/bclib/api/surface/SurfaceRuleUtil.java index 31c65e35..455bfd43 100644 --- a/src/main/java/org/betterx/bclib/api/surface/SurfaceRuleUtil.java +++ b/src/main/java/org/betterx/bclib/api/surface/SurfaceRuleUtil.java @@ -73,7 +73,6 @@ public class SurfaceRuleUtil { */ public static void addSurfaceRule(ResourceLocation biomeID, RuleSource source) { SURFACE_RULES.put(biomeID, source); - //NOISE_GENERATOR_SETTINGS.forEach(BiomeAPI::changeSurfaceRulesForGenerator); } public static RuleSource addRulesForBiomeSource(RuleSource org, BiomeSource biomeSource) { diff --git a/src/main/java/org/betterx/bclib/mixin/common/MainMixin.java b/src/main/java/org/betterx/bclib/mixin/common/MainMixin.java index 36b9b55c..b5e4758f 100644 --- a/src/main/java/org/betterx/bclib/mixin/common/MainMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/common/MainMixin.java @@ -8,6 +8,7 @@ import joptsimple.ArgumentAcceptingOptionSpec; import joptsimple.OptionParser; import joptsimple.OptionSet; import org.betterx.bclib.api.LifeCycleAPI; +import org.betterx.bclib.api.biomes.BiomeAPI; import org.betterx.bclib.api.datafixer.DataFixerAPI; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -23,6 +24,7 @@ import java.util.Optional; abstract public class MainMixin { @ModifyVariable(method = "main", ordinal = 0, at = @At(value = "INVOKE", shift = At.Shift.AFTER, target = "Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;getSummary()Lnet/minecraft/world/level/storage/LevelSummary;")) private static LevelStorageSource.LevelStorageAccess bc_createAccess(LevelStorageSource.LevelStorageAccess levelStorageAccess) { + BiomeAPI.prepareNewLevel(); DataFixerAPI.fixData(levelStorageAccess, false, (didFix) -> {/* not called when showUI==false */}); LifeCycleAPI._runBeforeLevelLoad(); diff --git a/src/main/java/org/betterx/bclib/mixin/common/MinecraftServerMixin.java b/src/main/java/org/betterx/bclib/mixin/common/MinecraftServerMixin.java index 784041d6..610b1070 100644 --- a/src/main/java/org/betterx/bclib/mixin/common/MinecraftServerMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/common/MinecraftServerMixin.java @@ -70,9 +70,4 @@ public class MinecraftServerMixin { accessor.bclib_setRecipesByName(BCLRecipeManager.getMapByName(accessor.bclib_getRecipesByName())); accessor.bclib_setRecipes(BCLRecipeManager.getMap(accessor.bclib_getRecipes())); } - - @Inject(method = "createLevels", at = @At(value = "HEAD")) - private void bcl_createLevel(ChunkProgressListener chunkProgressListener, CallbackInfo ci) { - System.out.println(this.worldData); - } } diff --git a/src/main/java/org/betterx/bclib/mixin/common/TheEndBiomeDataMixin.java b/src/main/java/org/betterx/bclib/mixin/common/TheEndBiomeDataMixin.java index 0e7128ca..7c7f2fff 100644 --- a/src/main/java/org/betterx/bclib/mixin/common/TheEndBiomeDataMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/common/TheEndBiomeDataMixin.java @@ -31,14 +31,14 @@ public class TheEndBiomeDataMixin implements TheEndBiomeDataAccessor { private Map, WeightedPicker>> endBarrensMap; public boolean bcl_canGenerateAsEndBiome(ResourceKey key) { - return endBiomesMap.containsKey(key); + return endBiomesMap == null ? false : endBiomesMap.containsKey(key); } public boolean bcl_canGenerateAsEndMidlandBiome(ResourceKey key) { - return endMidlandsMap.containsKey(key); + return endMidlandsMap == null ? false : endMidlandsMap.containsKey(key); } public boolean bcl_canGenerateAsEndBarrensBiome(ResourceKey key) { - return endBarrensMap.containsKey(key); + return endBarrensMap == null ? false : endBarrensMap.containsKey(key); } }