From 7a89dbf439397b825309165077f70a08995783af Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 13 Dec 2020 15:01:32 +0300 Subject: [PATCH] Removed mixin --- .../mixin/common/InternalBiomeDataMixin.java | 32 ------------------- .../java/ru/betterend/registry/EndBiomes.java | 23 +++++++++++++ .../world/generator/BELayerRandomSource.java | 20 ++++++++++++ .../resources/betterend.mixins.common.json | 1 - 4 files changed, 43 insertions(+), 33 deletions(-) delete mode 100644 src/main/java/ru/betterend/mixin/common/InternalBiomeDataMixin.java create mode 100644 src/main/java/ru/betterend/world/generator/BELayerRandomSource.java diff --git a/src/main/java/ru/betterend/mixin/common/InternalBiomeDataMixin.java b/src/main/java/ru/betterend/mixin/common/InternalBiomeDataMixin.java deleted file mode 100644 index 65084a86..00000000 --- a/src/main/java/ru/betterend/mixin/common/InternalBiomeDataMixin.java +++ /dev/null @@ -1,32 +0,0 @@ -package ru.betterend.mixin.common; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import net.fabricmc.fabric.impl.biome.InternalBiomeData; -import net.minecraft.util.Identifier; -import net.minecraft.util.registry.BuiltinRegistries; -import net.minecraft.util.registry.RegistryKey; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.biome.BiomeKeys; -import ru.betterend.BetterEnd; -import ru.betterend.registry.EndBiomes; - -@Mixin(InternalBiomeData.class) -public class InternalBiomeDataMixin { - @Inject(method = "addEndBiomeReplacement", at = @At("TAIL")) - private static void beAddIslandsBiomeFromFabric(RegistryKey replaced, RegistryKey variant, double weight, CallbackInfo info) { - if (replaced.equals(BiomeKeys.SMALL_END_ISLANDS)) { - Biome biome = BuiltinRegistries.BIOME.get(variant); - Identifier id = BuiltinRegistries.BIOME.getId(biome); - if (!id.getNamespace().equals(BetterEnd.MOD_ID)) { - EndBiomes.FABRIC_VOID.add(id); - if (BetterEnd.isDevEnvironment()) { - System.out.println("Added " + id + " from Fabric small islands biome map"); - } - } - } - } -} diff --git a/src/main/java/ru/betterend/registry/EndBiomes.java b/src/main/java/ru/betterend/registry/EndBiomes.java index ea06c464..586e2b05 100644 --- a/src/main/java/ru/betterend/registry/EndBiomes.java +++ b/src/main/java/ru/betterend/registry/EndBiomes.java @@ -15,6 +15,7 @@ import com.google.gson.JsonObject; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.impl.biome.InternalBiomeData; +import net.fabricmc.fabric.impl.biome.WeightedBiomePicker; import net.minecraft.client.MinecraftClient; import net.minecraft.server.MinecraftServer; import net.minecraft.util.Identifier; @@ -24,6 +25,7 @@ import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome.Category; import net.minecraft.world.biome.BiomeKeys; +import net.minecraft.world.biome.layer.util.LayerRandomnessSource; import ru.betterend.BetterEnd; import ru.betterend.config.Configs; import ru.betterend.util.JsonFactory; @@ -40,6 +42,7 @@ import ru.betterend.world.biome.BiomePaintedMountains; import ru.betterend.world.biome.BiomeShadowForest; import ru.betterend.world.biome.BiomeSulphurSprings; import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.generator.BELayerRandomSource; import ru.betterend.world.generator.BiomePicker; import ru.betterend.world.generator.BiomeType; @@ -90,6 +93,10 @@ public class EndBiomes { LAND_BIOMES.clearMutables(); VOID_BIOMES.clearMutables(); + if (FABRIC_VOID.isEmpty()) { + loadFabricAPIBiomes(); + } + Map configs = Maps.newHashMap(); biomeRegistry.forEach((biome) -> { @@ -149,6 +156,22 @@ public class EndBiomes { CLIENT.clear(); } + private static void loadFabricAPIBiomes() { + WeightedBiomePicker picker = InternalBiomeData.getEndBiomesMap().get(BiomeKeys.SMALL_END_ISLANDS); + LayerRandomnessSource random = new BELayerRandomSource(); + for (int i = 0; i < 1000; i++) { + RegistryKey key = picker.pickRandom(random); + FABRIC_VOID.add(key.getValue()); + } + if (BetterEnd.isDevEnvironment()) { + System.out.println("Added void biomes from Fabric API:"); + FABRIC_VOID.forEach((id) -> { + System.out.println(id); + }); + System.out.println("=================================="); + } + } + private static JsonObject loadJsonConfig(String namespace) { InputStream inputstream = EndBiomes.class.getResourceAsStream("/data/" + namespace + "/end_biome_properties.json"); if (inputstream != null) { diff --git a/src/main/java/ru/betterend/world/generator/BELayerRandomSource.java b/src/main/java/ru/betterend/world/generator/BELayerRandomSource.java new file mode 100644 index 00000000..fada1a7b --- /dev/null +++ b/src/main/java/ru/betterend/world/generator/BELayerRandomSource.java @@ -0,0 +1,20 @@ +package ru.betterend.world.generator; + +import java.util.Random; + +import net.minecraft.util.math.noise.PerlinNoiseSampler; +import net.minecraft.world.biome.layer.util.LayerRandomnessSource; + +public class BELayerRandomSource implements LayerRandomnessSource { + private Random random = new Random(0); + + @Override + public int nextInt(int bound) { + return random.nextInt(bound); + } + + @Override + public PerlinNoiseSampler getNoiseSampler() { + return null; + } +} diff --git a/src/main/resources/betterend.mixins.common.json b/src/main/resources/betterend.mixins.common.json index c6c94d9d..96268298 100644 --- a/src/main/resources/betterend.mixins.common.json +++ b/src/main/resources/betterend.mixins.common.json @@ -12,7 +12,6 @@ "ServerPlayerEntityMixin", "ChorusPlantFeatureMixin", "BubbleColumnBlockMixin", - "InternalBiomeDataMixin", "ChorusFlowerBlockMixin", "LandPathNodeMakerMixin", "ChorusPlantBlockMixin",