From 2aad68f80ddc54e90fa526fe71ac974388f42e29 Mon Sep 17 00:00:00 2001 From: Wizjany Date: Fri, 17 Jul 2015 04:48:09 -0400 Subject: [PATCH] Fix BlockData causing unit test to fail Yes, even though north/south and south/north anvils LOOK the same, they are in fact different data values. --- .../com/sk89q/worldedit/blocks/BlockData.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/blocks/BlockData.java b/worldedit-core/src/main/java/com/sk89q/worldedit/blocks/BlockData.java index 23bc91262..1084fdb95 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/blocks/BlockData.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/blocks/BlockData.java @@ -241,7 +241,14 @@ public final class BlockData { return ((data + 1) & 0x3) | (data & ~0x3); case BlockID.ANVIL: - return data ^ 0x1; + int damage = data & 0x4; + switch (data & ~0x4) { + case 0: return 3 | damage; + case 2: return 1 | damage; + case 1: return 0 | damage; + case 3: return 2 | damage; + } + break; case BlockID.BED: return data & ~0x3 | (data + 1) & 0x3; @@ -471,7 +478,14 @@ public final class BlockData { return ((data + 3) & 0x3) | (data & ~0x3); case BlockID.ANVIL: - return data ^ 0x1; + int damage = data & 0x4; + switch (data & ~0x4) { + case 0: return 1 | damage; + case 2: return 3 | damage; + case 1: return 0 | damage; + case 3: return 2 | damage; + } + break; case BlockID.BED: return data & ~0x3 | (data - 1) & 0x3;