summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNate Mortensen <nate.richard.mortensen@gmail.com>2013-12-02 19:41:51 -0700
committerNate Mortensen <nate.richard.mortensen@gmail.com>2013-12-02 21:03:57 -0700
commit39719fff74e7eb64842f5c2f243c1fea1d51659b (patch)
treef8d04f0a5c93f91b9a109d81d7311ec1cee698a8 /src
parenta721fe8473ed5a7c0849231c6d155288fd3e8847 (diff)
downloadcraftbukkit-39719fff74e7eb64842f5c2f243c1fea1d51659b.tar
craftbukkit-39719fff74e7eb64842f5c2f243c1fea1d51659b.tar.gz
craftbukkit-39719fff74e7eb64842f5c2f243c1fea1d51659b.tar.lz
craftbukkit-39719fff74e7eb64842f5c2f243c1fea1d51659b.tar.xz
craftbukkit-39719fff74e7eb64842f5c2f243c1fea1d51659b.zip
Maintain old setType method in WorldGenerator. Fixes BUKKIT-4915
WorldGenerator setType and setTypeAndData have their arguments changed to add in support for CraftBlockChangeDelegate, which changes the method signature. This change in the method signature breaks any WorldGenerators that aren't modified to use CraftBlockChangeDelegate. This commit fixes the issue by readding the old method and maintaining the CraftBlockChangeDelegate method. This makes it so that there is a compatible method for both CraftBlockChangeDelegate WorldGenerators and unmodified WorldGenerators. Additionally, this commit reduces and corrects the diffs in WorldGenerator, moving the fix for layering violations to CraftBlockChangeDelegate.
Diffstat (limited to 'src')
-rw-r--r--src/main/java/net/minecraft/server/WorldGenerator.java26
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftBlockChangeDelegate.java10
2 files changed, 25 insertions, 11 deletions
diff --git a/src/main/java/net/minecraft/server/WorldGenerator.java b/src/main/java/net/minecraft/server/WorldGenerator.java
index f79a0fba..94c225a8 100644
--- a/src/main/java/net/minecraft/server/WorldGenerator.java
+++ b/src/main/java/net/minecraft/server/WorldGenerator.java
@@ -20,23 +20,31 @@ public abstract class WorldGenerator {
public void a(double d0, double d1, double d2) {}
- // CraftBukkit - change signature
+ protected void setType(World world, int i, int j, int k, Block block) {
+ this.setTypeAndData(world, i, j, k, block, 0);
+ }
+
+ // CraftBukkit start - Duplicate method to add support for CraftBlockChangeDelegate
protected void setType(CraftBlockChangeDelegate world, int i, int j, int k, Block block) {
this.setTypeAndData(world, i, j, k, block, 0);
}
+ // CraftBukkit end
+
+ protected void setTypeAndData(World world, int i, int j, int k, Block block, int l) {
+ if (this.a) {
+ world.setTypeAndData(i, j, k, block, l, 3);
+ } else {
+ world.setTypeAndData(i, j, k, block, l, 2);
+ }
+ }
- // CraftBukkit - change signature
+ // CraftBukkit start - Duplicate method to add support for CraftBlockChangeDelegate
protected void setTypeAndData(CraftBlockChangeDelegate world, int i, int j, int k, Block block, int l) {
if (this.a) {
world.setTypeAndData(i, j, k, block, l, 3);
} else {
- // CraftBukkit start - Layering violation :(
- if (world.getDelegate() instanceof World) {
- ((World) world.getDelegate()).setTypeAndData(i, j, k, block, l, 2);
- } else {
- world.setTypeAndData(i, j, k, block, l, 2);
- }
- // CraftBukkit end
+ world.setTypeAndData(i, j, k, block, l, 2);
}
}
+ // CraftBukkit end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftBlockChangeDelegate.java b/src/main/java/org/bukkit/craftbukkit/CraftBlockChangeDelegate.java
index 470828a2..5946e7d0 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftBlockChangeDelegate.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftBlockChangeDelegate.java
@@ -1,6 +1,7 @@
package org.bukkit.craftbukkit;
import net.minecraft.server.Block;
+import net.minecraft.server.World;
import org.bukkit.BlockChangeDelegate;
@@ -19,8 +20,13 @@ public class CraftBlockChangeDelegate {
return Block.e(this.delegate.getTypeId(x, y, z));
}
- public void setTypeAndData(int x, int y, int z, Block block, int data, int light) {
- delegate.setRawTypeIdAndData(x, y, z, Block.b(block), data);
+ public void setTypeAndData(int x, int y, int z, Block block, int data, int updateFlag) {
+ // Layering violation :(
+ if (delegate instanceof World) {
+ ((World) delegate).setTypeAndData(x, y, z, block, data, 2);
+ } else {
+ delegate.setRawTypeIdAndData(x, y, z, Block.b(block), data);
+ }
}
public boolean isEmpty(int x, int y, int z) {