07d0098a9e
Adds /paper command for reloading the paper config. Closes GH-639 Per-world config logging has been removed in favor of all or nothing logging for all paper settings. I don't believe it was used enough to warrant maintaining. If this is not the case it should be possible to re-add it.
269 lines
12 KiB
Diff
269 lines
12 KiB
Diff
From 273bc543e9cd4c645049ec8e33d9eae4025ec4a5 Mon Sep 17 00:00:00 2001
|
|
From: Byteflux <byte@byteflux.net>
|
|
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 c00fa83d5..3b19b53a8 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -155,4 +155,28 @@ public class PaperWorldConfig {
|
|
disableEndCredits = getBoolean("game-mechanics.disable-end-credits", false);
|
|
log("End credits disabled: " + disableEndCredits);
|
|
}
|
|
+
|
|
+ public boolean generateCanyon;
|
|
+ public boolean generateCaves;
|
|
+ public boolean generateDungeon;
|
|
+ public boolean generateFortress;
|
|
+ public boolean generateMineshaft;
|
|
+ public boolean generateMonument;
|
|
+ public boolean generateStronghold;
|
|
+ public boolean generateTemple;
|
|
+ public boolean generateVillage;
|
|
+ public boolean generateFlatBedrock;
|
|
+
|
|
+ private void generatorSettings() {
|
|
+ generateCanyon = getBoolean("generator-settings.canyon", true);
|
|
+ generateCaves = getBoolean("generator-settings.caves", true);
|
|
+ generateDungeon = getBoolean("generator-settings.dungeon", true);
|
|
+ generateFortress = getBoolean("generator-settings.fortress", true);
|
|
+ generateMineshaft = getBoolean("generator-settings.mineshaft", true);
|
|
+ generateMonument = getBoolean("generator-settings.monument", true);
|
|
+ generateStronghold = getBoolean("generator-settings.stronghold", true);
|
|
+ generateTemple = getBoolean("generator-settings.temple", true);
|
|
+ generateVillage = getBoolean("generator-settings.village", true);
|
|
+ generateFlatBedrock = getBoolean("generator-settings.flat-bedrock", false);
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java
|
|
index 62a338e95..d3f1dceb6 100644
|
|
--- a/src/main/java/net/minecraft/server/BiomeBase.java
|
|
+++ b/src/main/java/net/minecraft/server/BiomeBase.java
|
|
@@ -179,7 +179,7 @@ public abstract class BiomeBase {
|
|
BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition();
|
|
|
|
for (int l1 = 255; l1 >= 0; --l1) {
|
|
- if (l1 <= random.nextInt(5)) {
|
|
+ if (l1 <= (world.paperConfig.generateFlatBedrock ? 0 : random.nextInt(5))) { // Paper - Configurable flat bedrock
|
|
chunksnapshot.a(k1, l1, j1, BiomeBase.c);
|
|
} else {
|
|
IBlockData iblockdata2 = chunksnapshot.a(k1, l1, j1);
|
|
diff --git a/src/main/java/net/minecraft/server/BiomeMesa.java b/src/main/java/net/minecraft/server/BiomeMesa.java
|
|
index 3d0a60b93..121419302 100644
|
|
--- a/src/main/java/net/minecraft/server/BiomeMesa.java
|
|
+++ b/src/main/java/net/minecraft/server/BiomeMesa.java
|
|
@@ -99,7 +99,7 @@ public class BiomeMesa extends BiomeBase {
|
|
chunksnapshot.a(l, i2, k, BiomeMesa.a);
|
|
}
|
|
|
|
- if (i2 <= random.nextInt(5)) {
|
|
+ if (i2 <= (world.paperConfig.generateFlatBedrock ? 0 : random.nextInt(5))) { // Paper - Configurable flat bedrock
|
|
chunksnapshot.a(l, i2, k, BiomeMesa.c);
|
|
} else if (l1 < 15 || this.J) {
|
|
IBlockData iblockdata2 = chunksnapshot.a(l, i2, k);
|
|
diff --git a/src/main/java/net/minecraft/server/ChunkProviderFlat.java b/src/main/java/net/minecraft/server/ChunkProviderFlat.java
|
|
index d958a6654..f8a9f499f 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkProviderFlat.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkProviderFlat.java
|
|
@@ -26,7 +26,7 @@ public class ChunkProviderFlat implements ChunkGenerator {
|
|
if (flag) {
|
|
Map map = this.d.b();
|
|
|
|
- if (map.containsKey("village")) {
|
|
+ if (map.containsKey("village") && world.paperConfig.generateVillage) { // Paper
|
|
Map map1 = (Map) map.get("village");
|
|
|
|
if (!map1.containsKey("size")) {
|
|
@@ -36,19 +36,19 @@ public class ChunkProviderFlat implements ChunkGenerator {
|
|
this.e.put("Village", new WorldGenVillage(map1));
|
|
}
|
|
|
|
- if (map.containsKey("biome_1")) {
|
|
+ if (map.containsKey("biome_1") && world.paperConfig.generateTemple) { // Paper
|
|
this.e.put("Temple", new WorldGenLargeFeature((Map) map.get("biome_1")));
|
|
}
|
|
|
|
- if (map.containsKey("mineshaft")) {
|
|
+ if (map.containsKey("mineshaft") && world.paperConfig.generateMineshaft) { // Paper
|
|
this.e.put("Mineshaft", new WorldGenMineshaft((Map) map.get("mineshaft")));
|
|
}
|
|
|
|
- if (map.containsKey("stronghold")) {
|
|
+ if (map.containsKey("stronghold") && world.paperConfig.generateStronghold) { // Paper
|
|
this.e.put("Stronghold", new WorldGenStronghold((Map) map.get("stronghold")));
|
|
}
|
|
|
|
- if (map.containsKey("oceanmonument")) {
|
|
+ if (map.containsKey("oceanmonument") && world.paperConfig.generateMonument) { // Paper
|
|
this.e.put("Monument", new WorldGenMonument((Map) map.get("oceanmonument")));
|
|
}
|
|
}
|
|
@@ -61,7 +61,7 @@ public class ChunkProviderFlat implements ChunkGenerator {
|
|
this.i = new WorldGenLakes(Blocks.LAVA);
|
|
}
|
|
|
|
- this.g = this.d.b().containsKey("dungeon");
|
|
+ this.g = world.paperConfig.generateDungeon && this.d.b().containsKey("dungeon"); // Paper
|
|
int j = 0;
|
|
int k = 0;
|
|
boolean flag1 = true;
|
|
diff --git a/src/main/java/net/minecraft/server/ChunkProviderGenerate.java b/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
|
|
index 7ba6b9add..776ebd653 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
|
|
@@ -160,32 +160,32 @@ public class ChunkProviderGenerate implements ChunkGenerator {
|
|
this.a(i, j, chunksnapshot);
|
|
this.D = this.n.getWorldChunkManager().getBiomeBlock(this.D, i * 16, j * 16, 16, 16);
|
|
this.a(i, j, chunksnapshot, this.D);
|
|
- if (this.s.r) {
|
|
+ if (this.s.r && this.n.paperConfig.generateCaves) { // Paper
|
|
this.v.a(this.n, i, j, chunksnapshot);
|
|
}
|
|
|
|
- if (this.s.A) {
|
|
+ if (this.s.A && this.n.paperConfig.generateCanyon) { // Paper
|
|
this.A.a(this.n, i, j, chunksnapshot);
|
|
}
|
|
|
|
if (this.o) {
|
|
- if (this.s.w) {
|
|
+ if (this.s.w && this.n.paperConfig.generateMineshaft) { // Paper
|
|
this.y.a(this.n, i, j, chunksnapshot);
|
|
}
|
|
|
|
- if (this.s.v) {
|
|
+ if (this.s.v&& this.n.paperConfig.generateVillage) { // Paper
|
|
this.x.a(this.n, i, j, chunksnapshot);
|
|
}
|
|
|
|
- if (this.s.u) {
|
|
+ if (this.s.u && this.n.paperConfig.generateStronghold) { // Paper
|
|
this.w.a(this.n, i, j, chunksnapshot);
|
|
}
|
|
|
|
- if (this.s.x) {
|
|
+ if (this.s.x && this.n.paperConfig.generateTemple) { // Paper
|
|
this.z.a(this.n, i, j, chunksnapshot);
|
|
}
|
|
|
|
- if (this.s.y) {
|
|
+ if (this.s.y && this.n.paperConfig.generateMonument) { // Paper
|
|
this.B.a(this.n, i, j, chunksnapshot);
|
|
}
|
|
|
|
@@ -329,23 +329,23 @@ public class ChunkProviderGenerate implements ChunkGenerator {
|
|
ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(i, j);
|
|
|
|
if (this.o) {
|
|
- if (this.s.w) {
|
|
+ if (this.s.w && this.n.paperConfig.generateMineshaft) { // Paper
|
|
this.y.a(this.n, this.i, chunkcoordintpair);
|
|
}
|
|
|
|
- if (this.s.v) {
|
|
+ if (this.s.v && this.n.paperConfig.generateVillage) { // Paper
|
|
flag = this.x.a(this.n, this.i, chunkcoordintpair);
|
|
}
|
|
|
|
- if (this.s.u) {
|
|
+ if (this.s.u && this.n.paperConfig.generateStronghold) { // Paper
|
|
this.w.a(this.n, this.i, chunkcoordintpair);
|
|
}
|
|
|
|
- if (this.s.x) {
|
|
+ if (this.s.x && this.n.paperConfig.generateTemple) { // Paper
|
|
this.z.a(this.n, this.i, chunkcoordintpair);
|
|
}
|
|
|
|
- if (this.s.y) {
|
|
+ if (this.s.y && this.n.paperConfig.generateMonument) { // Paper
|
|
this.B.a(this.n, this.i, chunkcoordintpair);
|
|
}
|
|
|
|
@@ -374,7 +374,7 @@ public class ChunkProviderGenerate implements ChunkGenerator {
|
|
}
|
|
}
|
|
|
|
- if (this.s.s) {
|
|
+ if (this.s.s && this.n.paperConfig.generateDungeon) { // Paper
|
|
for (k1 = 0; k1 < this.s.t; ++k1) {
|
|
l1 = this.i.nextInt(16) + 8;
|
|
i2 = this.i.nextInt(256);
|
|
@@ -439,23 +439,23 @@ public class ChunkProviderGenerate implements ChunkGenerator {
|
|
|
|
public void recreateStructures(Chunk chunk, int i, int j) {
|
|
if (this.o) {
|
|
- if (this.s.w) {
|
|
+ if (this.s.w && this.n.paperConfig.generateMineshaft) { // Paper
|
|
this.y.a(this.n, i, j, (ChunkSnapshot) null);
|
|
}
|
|
|
|
- if (this.s.v) {
|
|
+ if (this.s.v && this.n.paperConfig.generateVillage) { // Paper
|
|
this.x.a(this.n, i, j, (ChunkSnapshot) null);
|
|
}
|
|
|
|
- if (this.s.u) {
|
|
+ if (this.s.u && this.n.paperConfig.generateStronghold) { // Paper
|
|
this.w.a(this.n, i, j, (ChunkSnapshot) null);
|
|
}
|
|
|
|
- if (this.s.x) {
|
|
+ if (this.s.x && this.n.paperConfig.generateTemple) { // Paper
|
|
this.z.a(this.n, i, j, (ChunkSnapshot) null);
|
|
}
|
|
|
|
- if (this.s.y) {
|
|
+ if (this.s.y && this.n.paperConfig.generateMonument) { // Paper
|
|
this.B.a(this.n, i, j, (ChunkSnapshot) null);
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/ChunkProviderHell.java b/src/main/java/net/minecraft/server/ChunkProviderHell.java
|
|
index f9519d7e1..ca64ae067 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkProviderHell.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkProviderHell.java
|
|
@@ -151,7 +151,10 @@ public class ChunkProviderHell implements ChunkGenerator {
|
|
IBlockData iblockdata1 = ChunkProviderHell.b;
|
|
|
|
for (int l1 = 127; l1 >= 0; --l1) {
|
|
- if (l1 < 127 - this.p.nextInt(5) && l1 > this.p.nextInt(5)) {
|
|
+ // Paper start - Configurable flat bedrock worldgen
|
|
+ if (l1 < 127 - (n.paperConfig.generateFlatBedrock ? 0 : this.p.nextInt(5)) &&
|
|
+ l1 > (n.paperConfig.generateFlatBedrock ? 0 : this.p.nextInt(5))) {
|
|
+ // Paper end
|
|
IBlockData iblockdata2 = chunksnapshot.a(i1, l1, l);
|
|
|
|
if (iblockdata2.getBlock() != null && iblockdata2.getMaterial() != Material.AIR) {
|
|
@@ -380,6 +383,6 @@ public class ChunkProviderHell implements ChunkGenerator {
|
|
}
|
|
|
|
public void recreateStructures(Chunk chunk, int i, int j) {
|
|
- this.I.a(this.n, i, j, (ChunkSnapshot) null);
|
|
+ if (this.n.paperConfig.generateFortress) this.I.a(this.n, i, j, (ChunkSnapshot) null);
|
|
}
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/StructureGenerator.java b/src/main/java/net/minecraft/server/StructureGenerator.java
|
|
index fb350c408..9c1605b14 100644
|
|
--- a/src/main/java/net/minecraft/server/StructureGenerator.java
|
|
+++ b/src/main/java/net/minecraft/server/StructureGenerator.java
|
|
@@ -96,6 +96,7 @@ public abstract class StructureGenerator extends WorldGenBase {
|
|
}
|
|
|
|
public boolean b(BlockPosition blockposition) {
|
|
+ if (this.g == null) return false; // Paper
|
|
this.a(this.g);
|
|
return this.c(blockposition) != null;
|
|
}
|
|
@@ -124,6 +125,7 @@ public abstract class StructureGenerator extends WorldGenBase {
|
|
}
|
|
|
|
public boolean a(World world, BlockPosition blockposition) {
|
|
+ if (this.g == null) return false; // Paper
|
|
this.a(world);
|
|
ObjectIterator objectiterator = this.c.values().iterator();
|
|
|
|
--
|
|
2.12.0.windows.1
|
|
|