aboutsummaryrefslogtreecommitdiffhomepage
path: root/CraftBukkit-Patches/0070-Fix-Biome-Decoration-Crashes.patch
diff options
context:
space:
mode:
Diffstat (limited to 'CraftBukkit-Patches/0070-Fix-Biome-Decoration-Crashes.patch')
-rw-r--r--CraftBukkit-Patches/0070-Fix-Biome-Decoration-Crashes.patch111
1 files changed, 111 insertions, 0 deletions
diff --git a/CraftBukkit-Patches/0070-Fix-Biome-Decoration-Crashes.patch b/CraftBukkit-Patches/0070-Fix-Biome-Decoration-Crashes.patch
new file mode 100644
index 0000000000..6fe5c34a10
--- /dev/null
+++ b/CraftBukkit-Patches/0070-Fix-Biome-Decoration-Crashes.patch
@@ -0,0 +1,111 @@
+From 6e2992826ace9cace8cab51a9fa10f4aeeef02ee Mon Sep 17 00:00:00 2001
+From: md_5 <[email protected]>
+Date: Sun, 5 Jan 2014 09:35:01 +1100
+Subject: [PATCH] Fix Biome Decoration Crashes
+
+We don't really know what affect this will have on the terrain generation, but its better than crashing and not having terrain generate at all!
+
+diff --git a/src/main/java/net/minecraft/server/BiomeDecorator.java b/src/main/java/net/minecraft/server/BiomeDecorator.java
+index c5701f6..064a125 100644
+--- a/src/main/java/net/minecraft/server/BiomeDecorator.java
++++ b/src/main/java/net/minecraft/server/BiomeDecorator.java
+@@ -147,7 +147,7 @@ public class BiomeDecorator {
+ for (j = 0; j < this.z; ++j) {
+ k = this.c + this.b.nextInt(16) + 8;
+ l = this.d + this.b.nextInt(16) + 8;
+- i1 = this.b.nextInt(this.a.getHighestBlockYAt(k, l) * 2);
++ i1 = this.b.nextInt(this.getHighestBlockYAt(k, l) * 2); // Spigot
+ WorldGenerator worldgenerator = biomebase.b(this.b);
+
+ worldgenerator.generate(this.a, this.b, k, i1, l);
+@@ -156,7 +156,7 @@ public class BiomeDecorator {
+ for (j = 0; j < this.A; ++j) {
+ k = this.c + this.b.nextInt(16) + 8;
+ l = this.d + this.b.nextInt(16) + 8;
+- i1 = this.b.nextInt(this.a.getHighestBlockYAt(k, l) * 2);
++ i1 = this.b.nextInt(this.getHighestBlockYAt(k, l) * 2); // Spigot
+ (new WorldGenDeadBush(Blocks.DEAD_BUSH)).generate(this.a, this.b, k, i1, l);
+ }
+
+@@ -164,7 +164,7 @@ public class BiomeDecorator {
+ k = this.c + this.b.nextInt(16) + 8;
+ l = this.d + this.b.nextInt(16) + 8;
+
+- for (i1 = this.b.nextInt(this.a.getHighestBlockYAt(k, l) * 2); i1 > 0 && this.a.isEmpty(k, i1 - 1, l); --i1) {
++ for (i1 = this.b.nextInt(this.getHighestBlockYAt(k, l) * 2); i1 > 0 && this.a.isEmpty(k, i1 - 1, l); --i1) { // Spigot
+ ;
+ }
+
+@@ -182,7 +182,7 @@ public class BiomeDecorator {
+ if (this.b.nextInt(8) == 0) {
+ k = this.c + this.b.nextInt(16) + 8;
+ l = this.d + this.b.nextInt(16) + 8;
+- i1 = this.b.nextInt(this.a.getHighestBlockYAt(k, l) * 2);
++ i1 = this.b.nextInt(this.getHighestBlockYAt(k, l) * 2); // Spigot
+ this.r.generate(this.a, this.b, k, i1, l);
+ }
+ }
+@@ -190,42 +190,42 @@ public class BiomeDecorator {
+ if (this.b.nextInt(4) == 0) {
+ j = this.c + this.b.nextInt(16) + 8;
+ k = this.d + this.b.nextInt(16) + 8;
+- l = this.b.nextInt(this.a.getHighestBlockYAt(j, k) * 2);
++ l = this.b.nextInt(this.getHighestBlockYAt(j, k) * 2); // Spigot
+ this.q.generate(this.a, this.b, j, l, k);
+ }
+
+ if (this.b.nextInt(8) == 0) {
+ j = this.c + this.b.nextInt(16) + 8;
+ k = this.d + this.b.nextInt(16) + 8;
+- l = this.b.nextInt(this.a.getHighestBlockYAt(j, k) * 2);
++ l = this.b.nextInt(this.getHighestBlockYAt(j, k) * 2); // Spigot
+ this.r.generate(this.a, this.b, j, l, k);
+ }
+
+ for (j = 0; j < this.C; ++j) {
+ k = this.c + this.b.nextInt(16) + 8;
+ l = this.d + this.b.nextInt(16) + 8;
+- i1 = this.b.nextInt(this.a.getHighestBlockYAt(k, l) * 2);
++ i1 = this.b.nextInt(this.getHighestBlockYAt(k, l) * 2); // Spigot
+ this.t.generate(this.a, this.b, k, i1, l);
+ }
+
+ for (j = 0; j < 10; ++j) {
+ k = this.c + this.b.nextInt(16) + 8;
+ l = this.d + this.b.nextInt(16) + 8;
+- i1 = this.b.nextInt(this.a.getHighestBlockYAt(k, l) * 2);
++ i1 = this.b.nextInt(this.getHighestBlockYAt(k, l) * 2); // Spigot
+ this.t.generate(this.a, this.b, k, i1, l);
+ }
+
+ if (this.b.nextInt(32) == 0) {
+ j = this.c + this.b.nextInt(16) + 8;
+ k = this.d + this.b.nextInt(16) + 8;
+- l = this.b.nextInt(this.a.getHighestBlockYAt(j, k) * 2);
++ l = this.b.nextInt(this.getHighestBlockYAt(j, k) * 2); // Spigot
+ (new WorldGenPumpkin()).generate(this.a, this.b, j, l, k);
+ }
+
+ for (j = 0; j < this.D; ++j) {
+ k = this.c + this.b.nextInt(16) + 8;
+ l = this.d + this.b.nextInt(16) + 8;
+- i1 = this.b.nextInt(this.a.getHighestBlockYAt(k, l) * 2);
++ i1 = this.b.nextInt(this.getHighestBlockYAt(k, l) * 2); // Spigot
+ this.u.generate(this.a, this.b, k, i1, l);
+ }
+
+@@ -276,4 +276,11 @@ public class BiomeDecorator {
+ this.a(1, this.n, 0, 16);
+ this.b(1, this.o, 16, 16);
+ }
++
++ // Spigot Start
++ private int getHighestBlockYAt(int x, int z)
++ {
++ return Math.max( 1, this.a.getHighestBlockYAt( x, z ) );
++ }
++ // Spigot End
+ }
+--
+1.9.1
+