From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Byteflux Date: Wed, 2 Mar 2016 02:17:54 -0600 Subject: [PATCH] Generator Settings diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java index 91e78bfedf3e4fa1ee39b8dc7f7c5af8492da160..802102dc716e99eaa3cc061995498e7cbe4e4f89 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -558,4 +558,9 @@ public class PaperWorldConfig { private void perPlayerMobSpawns() { perPlayerMobSpawns = getBoolean("per-player-mob-spawns", false); } + + public boolean generateFlatBedrock; + private void generatorSettings() { + generateFlatBedrock = getBoolean("generator-settings.flat-bedrock", false); + } } diff --git a/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java b/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java index 24befd3222e73cdd5853aac502a22387b1fdf81a..4741d28aec73ffa1d5a9f60a4086eac3375c83b1 100644 --- a/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java +++ b/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java @@ -374,8 +374,8 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator { int i = ichunkaccess.getPos().d(); int j = ichunkaccess.getPos().e(); GeneratorSettingBase generatorsettingbase = (GeneratorSettingBase) this.h.get(); - int k = generatorsettingbase.f(); - int l = this.x - 1 - generatorsettingbase.e(); + int k = generatorsettingbase.f(); final int floorHeight = k; // Paper + int l = this.x - 1 - generatorsettingbase.e(); final int roofHeight = l; // Paper boolean flag = true; boolean flag1 = l + 4 >= 0 && l < this.x; boolean flag2 = k + 4 >= 0 && k < this.x; @@ -389,7 +389,7 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator { if (flag1) { for (i1 = 0; i1 < 5; ++i1) { - if (i1 <= random.nextInt(5)) { + if (i1 <= (ichunkaccess.generateFlatBedrock() ? roofHeight : random.nextInt(5))) { // Paper - Configurable flat bedrock roof ichunkaccess.setType(blockposition_mutableblockposition.d(blockposition.getX(), l - i1, blockposition.getZ()), Blocks.BEDROCK.getBlockData(), false); } } @@ -397,7 +397,7 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator { if (flag2) { for (i1 = 4; i1 >= 0; --i1) { - if (i1 <= random.nextInt(5)) { + if (i1 <= (ichunkaccess.generateFlatBedrock() ? floorHeight : random.nextInt(5))) { // Paper - Configurable flat bedrock floor ichunkaccess.setType(blockposition_mutableblockposition.d(blockposition.getX(), k + i1, blockposition.getZ()), Blocks.BEDROCK.getBlockData(), false); } } diff --git a/src/main/java/net/minecraft/server/IChunkAccess.java b/src/main/java/net/minecraft/server/IChunkAccess.java index 887366f4c2ab608974113e75760b58c47f2afa00..180b6b58dc5663158db84b6f1257591439b48c31 100644 --- a/src/main/java/net/minecraft/server/IChunkAccess.java +++ b/src/main/java/net/minecraft/server/IChunkAccess.java @@ -12,6 +12,18 @@ import org.apache.logging.log4j.LogManager; public interface IChunkAccess extends IBlockAccess, IStructureAccess { + // Paper start + default boolean generateFlatBedrock() { + if (this instanceof ProtoChunk) { + return ((ProtoChunk)this).world.paperConfig.generateFlatBedrock; + } else if (this instanceof Chunk) { + return ((Chunk)this).world.paperConfig.generateFlatBedrock; + } else { + return false; + } + } + // Paper end + IBlockData getType(final int x, final int y, final int z); // Paper @Nullable IBlockData setType(BlockPosition blockposition, IBlockData iblockdata, boolean flag); diff --git a/src/main/java/net/minecraft/server/ProtoChunk.java b/src/main/java/net/minecraft/server/ProtoChunk.java index 912c5187a08e972fc9455aed33278387a83f03f2..5b0cd414ca1949ab53b289f7159f18da07d21f14 100644 --- a/src/main/java/net/minecraft/server/ProtoChunk.java +++ b/src/main/java/net/minecraft/server/ProtoChunk.java @@ -46,7 +46,7 @@ public class ProtoChunk implements IChunkAccess { private long s; private final Map t; private volatile boolean u; - private final World world; // Paper - Anti-Xray - Add world + final World world; // Paper - Anti-Xray - Add world // Paper - private -> default // Paper start - Anti-Xray - Add world @Deprecated public ProtoChunk(ChunkCoordIntPair chunkcoordintpair, ChunkConverter chunkconverter) { this(chunkcoordintpair, chunkconverter, null); } // Notice for updates: Please make sure this constructor isn't used anywhere