--- a/net/minecraft/server/ContainerLoom.java +++ b/net/minecraft/server/ContainerLoom.java @@ -1,7 +1,29 @@ package net.minecraft.server; +// CraftBukkit start +import org.bukkit.Location; +import org.bukkit.craftbukkit.inventory.CraftInventoryLoom; +import org.bukkit.craftbukkit.inventory.CraftInventoryView; +import org.bukkit.entity.Player; +// CraftBukkit end + public class ContainerLoom extends Container { + // CraftBukkit start + private CraftInventoryView bukkitEntity = null; + private Player player; + + @Override + public CraftInventoryView getBukkitView() { + if (bukkitEntity != null) { + return bukkitEntity; + } + + CraftInventoryLoom inventory = new CraftInventoryLoom(this.craftInventory, this.resultInventory); + bukkitEntity = new CraftInventoryView(this.player, inventory, this); + return bukkitEntity; + } + // CraftBukkit end private final ContainerAccess containerAccess; private final ContainerProperty d; private Runnable e; @@ -29,6 +51,13 @@ ContainerLoom.this.a((IInventory) this); ContainerLoom.this.e.run(); } + + // CraftBukkit start + @Override + public Location getLocation() { + return containeraccess.getLocation(); + } + // CraftBukkit end }; this.resultInventory = new InventorySubcontainer(1) { @Override @@ -36,6 +65,13 @@ super.update(); ContainerLoom.this.e.run(); } + + // CraftBukkit start + @Override + public Location getLocation() { + return containeraccess.getLocation(); + } + // CraftBukkit end }; this.containerAccess = containeraccess; this.f = this.a(new Slot(this.craftInventory, 0, 13, 26) { @@ -96,10 +132,12 @@ } this.a(this.d); + player = (Player) playerinventory.player.getBukkitEntity(); // CraftBukkit } @Override public boolean canUse(EntityHuman entityhuman) { + if (!this.checkReachable) return true; // CraftBukkit return a(this.containerAccess, entityhuman, Blocks.LOOM); } @@ -218,6 +256,11 @@ if (nbttagcompound.hasKeyOfType("Patterns", 9)) { nbttaglist = nbttagcompound.getList("Patterns", 10); + // CraftBukkit start + while (nbttaglist.size() > 20) { + nbttaglist.remove(20); + } + // CraftBukkit end } else { nbttaglist = new NBTTagList(); nbttagcompound.set("Patterns", nbttaglist);