parent
448a14f9b0
commit
408a327d2d
|
@ -1,17 +1,8 @@
|
|||
package io.izzel.arclight.common.bridge.core.world.level.levelgen;
|
||||
|
||||
import net.minecraft.server.level.WorldGenRegion;
|
||||
import net.minecraft.world.level.biome.BiomeSource;
|
||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.levelgen.WorldgenRandom;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public interface ChunkGeneratorBridge {
|
||||
|
||||
void bridge$buildBedrock(ChunkAccess chunkAccess, Random random);
|
||||
|
||||
WorldgenRandom bridge$buildSurface(WorldGenRegion region, ChunkAccess chunkAccess);
|
||||
|
||||
void bridge$setBiomeSource(BiomeSource biomeSource);
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@ package io.izzel.arclight.common.mixin.core.world.level.levelgen;
|
|||
import io.izzel.arclight.common.bridge.core.world.IWorldBridge;
|
||||
import io.izzel.arclight.common.bridge.core.world.WorldBridge;
|
||||
import io.izzel.arclight.common.bridge.core.world.level.levelgen.ChunkGeneratorBridge;
|
||||
import net.minecraft.server.level.WorldGenRegion;
|
||||
import net.minecraft.world.level.StructureFeatureManager;
|
||||
import net.minecraft.world.level.WorldGenLevel;
|
||||
import net.minecraft.world.level.biome.BiomeSource;
|
||||
|
@ -17,8 +16,9 @@ import org.spongepowered.asm.mixin.Final;
|
|||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Mutable;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
import java.util.Random;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(ChunkGenerator.class)
|
||||
public abstract class ChunkGeneratorMixin implements ChunkGeneratorBridge {
|
||||
|
@ -29,10 +29,20 @@ public abstract class ChunkGeneratorMixin implements ChunkGeneratorBridge {
|
|||
@Shadow @Final @Mutable protected BiomeSource runtimeBiomeSource;
|
||||
// @formatter:on
|
||||
|
||||
public void addDecorations(WorldGenLevel region, ChunkAccess chunk, StructureFeatureManager structureManager, boolean vanilla) {
|
||||
if (vanilla) {
|
||||
this.applyBiomeDecoration(region, chunk, structureManager);
|
||||
@Inject(method = "applyBiomeDecoration", at = @At("RETURN"))
|
||||
private void arclight$addBukkitDecoration(WorldGenLevel level, ChunkAccess chunkAccess, StructureFeatureManager manager, CallbackInfo ci) {
|
||||
this.addDecorations(level, chunkAccess, manager);
|
||||
}
|
||||
|
||||
public void applyBiomeDecoration(WorldGenLevel level, ChunkAccess chunkAccess, StructureFeatureManager structureFeatureManager, boolean vanilla) {
|
||||
if (vanilla) {
|
||||
this.applyBiomeDecoration(level, chunkAccess, structureFeatureManager);
|
||||
} else {
|
||||
this.addDecorations(level, chunkAccess, structureFeatureManager);
|
||||
}
|
||||
}
|
||||
|
||||
private void addDecorations(WorldGenLevel region, ChunkAccess chunk, StructureFeatureManager structureManager) {
|
||||
org.bukkit.World world = ((WorldBridge) ((IWorldBridge) region).bridge$getMinecraftWorld()).bridge$getWorld();
|
||||
// only call when a populator is present (prevents unnecessary entity conversion)
|
||||
if (!world.getPopulators().isEmpty()) {
|
||||
|
@ -49,24 +59,6 @@ public abstract class ChunkGeneratorMixin implements ChunkGeneratorBridge {
|
|||
}
|
||||
}
|
||||
|
||||
public void buildBedrock(ChunkAccess chunkAccess, Random random) {
|
||||
throw new UnsupportedOperationException("Methode not overridden");
|
||||
}
|
||||
|
||||
public WorldgenRandom buildSurface(WorldGenRegion region, ChunkAccess chunkAccess) {
|
||||
throw new UnsupportedOperationException("Methode not overridden");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bridge$buildBedrock(ChunkAccess chunkAccess, Random random) {
|
||||
buildBedrock(chunkAccess, random);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WorldgenRandom bridge$buildSurface(WorldGenRegion region, ChunkAccess chunkAccess) {
|
||||
return buildSurface(region, chunkAccess);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bridge$setBiomeSource(BiomeSource biomeSource) {
|
||||
this.biomeSource = this.runtimeBiomeSource = biomeSource;
|
||||
|
|
Loading…
Reference in New Issue
Block a user