13
0
geforkt von Mirrors/Paper

Handle double trapped chest inventory. Fixes BUKKIT-3772

Dieser Commit ist enthalten in:
Travis Watkins 2013-03-16 17:14:21 -05:00
Ursprung 0e60f1f7b8
Commit 5515b0ee2b

Datei anzeigen

@ -32,19 +32,28 @@ public class CraftChest extends CraftBlockState implements Chest {
int z = getZ(); int z = getZ();
// The logic here is basically identical to the logic in BlockChest.interact // The logic here is basically identical to the logic in BlockChest.interact
CraftInventory inventory = new CraftInventory(chest); CraftInventory inventory = new CraftInventory(chest);
if (world.getBlockTypeIdAt(x - 1, y, z) == Material.CHEST.getId()) { int id;
if (world.getBlockTypeIdAt(x, y, z) == Material.CHEST.getId()) {
id = Material.CHEST.getId();
} else if (world.getBlockTypeIdAt(x, y, z) == Material.TRAPPED_CHEST.getId()) {
id = Material.TRAPPED_CHEST.getId();
} else {
throw new IllegalStateException("CraftChest is not a chest but is instead " + world.getBlockAt(x, y, z));
}
if (world.getBlockTypeIdAt(x - 1, y, z) == id) {
CraftInventory left = new CraftInventory((TileEntityChest)world.getHandle().getTileEntity(x - 1, y, z)); CraftInventory left = new CraftInventory((TileEntityChest)world.getHandle().getTileEntity(x - 1, y, z));
inventory = new CraftInventoryDoubleChest(left, inventory); inventory = new CraftInventoryDoubleChest(left, inventory);
} }
if (world.getBlockTypeIdAt(x + 1, y, z) == Material.CHEST.getId()) { if (world.getBlockTypeIdAt(x + 1, y, z) == id) {
CraftInventory right = new CraftInventory((TileEntityChest) world.getHandle().getTileEntity(x + 1, y, z)); CraftInventory right = new CraftInventory((TileEntityChest) world.getHandle().getTileEntity(x + 1, y, z));
inventory = new CraftInventoryDoubleChest(inventory, right); inventory = new CraftInventoryDoubleChest(inventory, right);
} }
if (world.getBlockTypeIdAt(x, y, z - 1) == Material.CHEST.getId()) { if (world.getBlockTypeIdAt(x, y, z - 1) == id) {
CraftInventory left = new CraftInventory((TileEntityChest) world.getHandle().getTileEntity(x, y, z - 1)); CraftInventory left = new CraftInventory((TileEntityChest) world.getHandle().getTileEntity(x, y, z - 1));
inventory = new CraftInventoryDoubleChest(left, inventory); inventory = new CraftInventoryDoubleChest(left, inventory);
} }
if (world.getBlockTypeIdAt(x, y, z + 1) == Material.CHEST.getId()) { if (world.getBlockTypeIdAt(x, y, z + 1) == id) {
CraftInventory right = new CraftInventory((TileEntityChest) world.getHandle().getTileEntity(x, y, z + 1)); CraftInventory right = new CraftInventory((TileEntityChest) world.getHandle().getTileEntity(x, y, z + 1));
inventory = new CraftInventoryDoubleChest(inventory, right); inventory = new CraftInventoryDoubleChest(inventory, right);
} }