parent
448a14f9b0
commit
408a327d2d
|
@ -1,17 +1,8 @@
|
||||||
package io.izzel.arclight.common.bridge.core.world.level.levelgen;
|
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.biome.BiomeSource;
|
||||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
|
||||||
import net.minecraft.world.level.levelgen.WorldgenRandom;
|
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
public interface ChunkGeneratorBridge {
|
public interface ChunkGeneratorBridge {
|
||||||
|
|
||||||
void bridge$buildBedrock(ChunkAccess chunkAccess, Random random);
|
|
||||||
|
|
||||||
WorldgenRandom bridge$buildSurface(WorldGenRegion region, ChunkAccess chunkAccess);
|
|
||||||
|
|
||||||
void bridge$setBiomeSource(BiomeSource biomeSource);
|
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.IWorldBridge;
|
||||||
import io.izzel.arclight.common.bridge.core.world.WorldBridge;
|
import io.izzel.arclight.common.bridge.core.world.WorldBridge;
|
||||||
import io.izzel.arclight.common.bridge.core.world.level.levelgen.ChunkGeneratorBridge;
|
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.StructureFeatureManager;
|
||||||
import net.minecraft.world.level.WorldGenLevel;
|
import net.minecraft.world.level.WorldGenLevel;
|
||||||
import net.minecraft.world.level.biome.BiomeSource;
|
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.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Mutable;
|
import org.spongepowered.asm.mixin.Mutable;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import java.util.Random;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
@Mixin(ChunkGenerator.class)
|
@Mixin(ChunkGenerator.class)
|
||||||
public abstract class ChunkGeneratorMixin implements ChunkGeneratorBridge {
|
public abstract class ChunkGeneratorMixin implements ChunkGeneratorBridge {
|
||||||
|
@ -29,10 +29,20 @@ public abstract class ChunkGeneratorMixin implements ChunkGeneratorBridge {
|
||||||
@Shadow @Final @Mutable protected BiomeSource runtimeBiomeSource;
|
@Shadow @Final @Mutable protected BiomeSource runtimeBiomeSource;
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
|
|
||||||
public void addDecorations(WorldGenLevel region, ChunkAccess chunk, StructureFeatureManager structureManager, boolean vanilla) {
|
@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) {
|
if (vanilla) {
|
||||||
this.applyBiomeDecoration(region, chunk, structureManager);
|
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();
|
org.bukkit.World world = ((WorldBridge) ((IWorldBridge) region).bridge$getMinecraftWorld()).bridge$getWorld();
|
||||||
// only call when a populator is present (prevents unnecessary entity conversion)
|
// only call when a populator is present (prevents unnecessary entity conversion)
|
||||||
if (!world.getPopulators().isEmpty()) {
|
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
|
@Override
|
||||||
public void bridge$setBiomeSource(BiomeSource biomeSource) {
|
public void bridge$setBiomeSource(BiomeSource biomeSource) {
|
||||||
this.biomeSource = this.runtimeBiomeSource = biomeSource;
|
this.biomeSource = this.runtimeBiomeSource = biomeSource;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user