Rectified that hopper fix being very incomplete (and unit test breaking!).

This commit is contained in:
sk89q 2014-07-01 15:37:12 -07:00
parent e207ccebe8
commit 06c248e518

View File

@ -345,7 +345,7 @@ public final class BlockData {
/* FALL-THROUGH */ /* FALL-THROUGH */
case BlockID.COCOA_PLANT: case BlockID.COCOA_PLANT:
case BlockID.TRIPWIRE_HOOK: case BlockID.TRIPWIRE_HOOK: {
int extra = data & ~0x3; int extra = data & ~0x3;
int withoutFlags = data & 0x3; int withoutFlags = data & 0x3;
switch (withoutFlags) { switch (withoutFlags) {
@ -355,7 +355,7 @@ public final class BlockData {
case 0: return 3 | extra; case 0: return 3 | extra;
} }
break; break;
}
case BlockID.SIGN_POST: case BlockID.SIGN_POST:
return (data + 12) % 16; return (data + 12) % 16;
@ -366,15 +366,17 @@ public final class BlockData {
case BlockID.BURNING_FURNACE: case BlockID.BURNING_FURNACE:
case BlockID.ENDER_CHEST: case BlockID.ENDER_CHEST:
case BlockID.TRAPPED_CHEST: case BlockID.TRAPPED_CHEST:
case BlockID.HOPPER: case BlockID.HOPPER: {
switch (data) { int extra = data & 0x8;
case 5: return 2; int withoutFlags = data & ~0x8;
case 4: return 3; switch (withoutFlags) {
case 2: return 4; case 5: return 2 | extra;
case 3: return 5; case 4: return 3 | extra;
case 2: return 4 | extra;
case 3: return 5 | extra;
} }
break; break;
}
case BlockID.DISPENSER: case BlockID.DISPENSER:
case BlockID.DROPPER: case BlockID.DROPPER:
int dispPower = data & 0x8; int dispPower = data & 0x8;
@ -617,13 +619,15 @@ public final class BlockData {
case BlockID.ENDER_CHEST: case BlockID.ENDER_CHEST:
case BlockID.TRAPPED_CHEST: case BlockID.TRAPPED_CHEST:
case BlockID.HOPPER: case BlockID.HOPPER:
switch (data) { int extra = data & 0x8;
int withoutFlags = data & ~0x8;
switch (withoutFlags) {
case 2: case 2:
case 3: case 3:
return data ^ flipZ; return (data ^ flipZ) | extra;
case 4: case 4:
case 5: case 5:
return data ^ flipX; return (data ^ flipX) | extra;
} }
break; break;
@ -912,8 +916,10 @@ public final class BlockData {
case BlockID.ENDER_CHEST: case BlockID.ENDER_CHEST:
case BlockID.TRAPPED_CHEST: case BlockID.TRAPPED_CHEST:
case BlockID.HOPPER: case BlockID.HOPPER:
if (data < 2 || data > 5) return -1; int extra = data & 0x8;
return mod((data - 2 + increment), 4) + 2; int withoutFlags = data & ~0x8;
if (withoutFlags < 2 || withoutFlags > 5) return -1;
return (mod((withoutFlags - 2 + increment), 4) + 2) | extra;
case BlockID.DISPENSER: case BlockID.DISPENSER:
case BlockID.DROPPER: case BlockID.DROPPER: