diff --git a/src/main/java/ru/betterend/BetterEnd.java b/src/main/java/ru/betterend/BetterEnd.java index a83d725d..6a6a765f 100644 --- a/src/main/java/ru/betterend/BetterEnd.java +++ b/src/main/java/ru/betterend/BetterEnd.java @@ -69,11 +69,16 @@ public class BetterEnd implements ModInitializer { BiomeAPI.registerEndBiomeModification((biomeID, biome) -> { if (!biomeID.equals(Biomes.THE_VOID.location())) { - EndStructures.addBiomeStructures(biomeID, biome); EndFeatures.addBiomeFeatures(biomeID, biome); } }); + BiomeAPI.onFinishingEndBiomeTags((biomeID, biome) -> { + if (!biomeID.equals(Biomes.THE_VOID.location())) { + EndStructures.addBiomeStructures(biomeID, biome); + } + }); + } public static ResourceLocation makeID(String path) { return new ResourceLocation(MOD_ID, path); diff --git a/src/main/java/ru/betterend/mixin/common/NoiseChunkMixin.java b/src/main/java/ru/betterend/mixin/common/NoiseChunkMixin.java index 74117fd8..acc1a4dd 100644 --- a/src/main/java/ru/betterend/mixin/common/NoiseChunkMixin.java +++ b/src/main/java/ru/betterend/mixin/common/NoiseChunkMixin.java @@ -1,11 +1,6 @@ package ru.betterend.mixin.common; -import net.minecraft.world.level.levelgen.Aquifer; -import net.minecraft.world.level.levelgen.DensityFunctions; -import net.minecraft.world.level.levelgen.NoiseChunk; -import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; -import net.minecraft.world.level.levelgen.NoiseRouter; -import net.minecraft.world.level.levelgen.NoiseSettings; +import net.minecraft.world.level.levelgen.*; import net.minecraft.world.level.levelgen.blending.Blender; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -13,6 +8,7 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import ru.bclib.BCLib; import ru.betterend.interfaces.BETargetChecker; import ru.betterend.world.generator.TerrainGenerator; @@ -23,8 +19,19 @@ public class NoiseChunkMixin implements BETargetChecker { private boolean be_isEndGenerator; @Inject(method = "*", at = @At("TAIL")) - private void be_onNoiseChunkInit(int i, int j, int k, NoiseRouter noiseRouter, int l, int m, DensityFunctions.BeardifierOrMarker beardifierOrMarker, NoiseGeneratorSettings noiseGeneratorSettings, Aquifer.FluidPicker fluidPicker, Blender blender, CallbackInfo ci) { - be_isEndGenerator = BETargetChecker.class.cast(noiseGeneratorSettings).be_isTarget(); + private void be_onNoiseChunkInit(int i, + RandomState randomState, + int j, + int k, + NoiseSettings noiseSettings, + DensityFunctions.BeardifierOrMarker beardifierOrMarker, + NoiseGeneratorSettings noiseGeneratorSettings, + Aquifer.FluidPicker fluidPicker, + Blender blender, + CallbackInfo ci) { + var o = BETargetChecker.class.cast(noiseGeneratorSettings); + if (o!= null) be_isEndGenerator = o.be_isTarget(); + else BCLib.LOGGER.warning(noiseGeneratorSettings + " has unknown implementation."); } @Override diff --git a/src/main/java/ru/betterend/mixin/common/SlimeMixin.java b/src/main/java/ru/betterend/mixin/common/SlimeMixin.java index 0787e522..ab9b072c 100644 --- a/src/main/java/ru/betterend/mixin/common/SlimeMixin.java +++ b/src/main/java/ru/betterend/mixin/common/SlimeMixin.java @@ -15,7 +15,7 @@ public abstract class SlimeMixin extends Entity implements ISlime { } @Shadow - protected void setSize(int size, boolean heal) { + public void setSize(int size, boolean heal) { } @Override diff --git a/src/main/java/ru/betterend/registry/EndBiomes.java b/src/main/java/ru/betterend/registry/EndBiomes.java index cf1a76f1..be759194 100644 --- a/src/main/java/ru/betterend/registry/EndBiomes.java +++ b/src/main/java/ru/betterend/registry/EndBiomes.java @@ -83,7 +83,7 @@ public class EndBiomes { } private static void onWorldLoad(ServerLevel level, long seed, Registry registry) { - if (CAVE_BIOMES.biomeRegistry != registry) { + if (CAVE_BIOMES==null || CAVE_BIOMES.biomeRegistry != registry) { CAVE_BIOMES = new BiomePicker(registry); registry.stream() .filter(biome -> registry.getResourceKey(biome).isPresent()) @@ -94,6 +94,7 @@ public class EndBiomes { .filter(bcl -> bcl != null) .forEach(bcl -> CAVE_BIOMES.addBiome(bcl)); + CAVE_BIOMES.rebuild(); caveBiomeMap = null; } diff --git a/src/main/java/ru/betterend/world/generator/TerrainGenerator.java b/src/main/java/ru/betterend/world/generator/TerrainGenerator.java index f2205694..cc14469c 100644 --- a/src/main/java/ru/betterend/world/generator/TerrainGenerator.java +++ b/src/main/java/ru/betterend/world/generator/TerrainGenerator.java @@ -17,6 +17,8 @@ import java.util.Random; import net.minecraft.util.RandomSource; import net.minecraft.world.level.levelgen.LegacyRandomSource; +import net.fabricmc.fabric.impl.biome.TheEndBiomeData; + import java.util.concurrent.locks.ReentrantLock; public class TerrainGenerator {