Fixed Generation Bugs

This commit is contained in:
Frank 2022-05-17 22:11:14 +02:00
parent 277dcc04b7
commit c66a1a1824
5 changed files with 26 additions and 11 deletions

View file

@ -69,11 +69,16 @@ public class BetterEnd implements ModInitializer {
BiomeAPI.registerEndBiomeModification((biomeID, biome) -> { BiomeAPI.registerEndBiomeModification((biomeID, biome) -> {
if (!biomeID.equals(Biomes.THE_VOID.location())) { if (!biomeID.equals(Biomes.THE_VOID.location())) {
EndStructures.addBiomeStructures(biomeID, biome);
EndFeatures.addBiomeFeatures(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) { public static ResourceLocation makeID(String path) {
return new ResourceLocation(MOD_ID, path); return new ResourceLocation(MOD_ID, path);

View file

@ -1,11 +1,6 @@
package ru.betterend.mixin.common; package ru.betterend.mixin.common;
import net.minecraft.world.level.levelgen.Aquifer; import net.minecraft.world.level.levelgen.*;
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.blending.Blender; import net.minecraft.world.level.levelgen.blending.Blender;
import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin; 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.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import ru.bclib.BCLib;
import ru.betterend.interfaces.BETargetChecker; import ru.betterend.interfaces.BETargetChecker;
import ru.betterend.world.generator.TerrainGenerator; import ru.betterend.world.generator.TerrainGenerator;
@ -23,8 +19,19 @@ public class NoiseChunkMixin implements BETargetChecker {
private boolean be_isEndGenerator; private boolean be_isEndGenerator;
@Inject(method = "<init>*", at = @At("TAIL")) @Inject(method = "<init>*", 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) { private void be_onNoiseChunkInit(int i,
be_isEndGenerator = BETargetChecker.class.cast(noiseGeneratorSettings).be_isTarget(); 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 @Override

View file

@ -15,7 +15,7 @@ public abstract class SlimeMixin extends Entity implements ISlime {
} }
@Shadow @Shadow
protected void setSize(int size, boolean heal) { public void setSize(int size, boolean heal) {
} }
@Override @Override

View file

@ -83,7 +83,7 @@ public class EndBiomes {
} }
private static void onWorldLoad(ServerLevel level, long seed, Registry<Biome> registry) { private static void onWorldLoad(ServerLevel level, long seed, Registry<Biome> registry) {
if (CAVE_BIOMES.biomeRegistry != registry) { if (CAVE_BIOMES==null || CAVE_BIOMES.biomeRegistry != registry) {
CAVE_BIOMES = new BiomePicker(registry); CAVE_BIOMES = new BiomePicker(registry);
registry.stream() registry.stream()
.filter(biome -> registry.getResourceKey(biome).isPresent()) .filter(biome -> registry.getResourceKey(biome).isPresent())
@ -94,6 +94,7 @@ public class EndBiomes {
.filter(bcl -> bcl != null) .filter(bcl -> bcl != null)
.forEach(bcl -> CAVE_BIOMES.addBiome(bcl)); .forEach(bcl -> CAVE_BIOMES.addBiome(bcl));
CAVE_BIOMES.rebuild();
caveBiomeMap = null; caveBiomeMap = null;
} }

View file

@ -17,6 +17,8 @@ import java.util.Random;
import net.minecraft.util.RandomSource; import net.minecraft.util.RandomSource;
import net.minecraft.world.level.levelgen.LegacyRandomSource; import net.minecraft.world.level.levelgen.LegacyRandomSource;
import net.fabricmc.fabric.impl.biome.TheEndBiomeData;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
public class TerrainGenerator { public class TerrainGenerator {