Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
at develop 109 lines 3.3 kB view raw
1package net.minecraft.server; 2 3public class ContainerPlayer extends Container { 4 5 public InventoryCrafting craftInventory; 6 public IInventory resultInventory; 7 public boolean c; 8 9 public ContainerPlayer(InventoryPlayer inventoryplayer) { 10 this(inventoryplayer, true); 11 } 12 13 public ContainerPlayer(InventoryPlayer inventoryplayer, boolean flag) { 14 this.craftInventory = new InventoryCrafting(this, 2, 2); 15 this.resultInventory = new InventoryCraftResult(); 16 this.c = false; 17 this.c = flag; 18 this.a((Slot) (new SlotResult(inventoryplayer.d, this.craftInventory, this.resultInventory, 0, 144, 36))); 19 20 int i; 21 int j; 22 23 for (i = 0; i < 2; ++i) { 24 for (j = 0; j < 2; ++j) { 25 this.a(new Slot(this.craftInventory, j + i * 2, 88 + j * 18, 26 + i * 18)); 26 } 27 } 28 29 for (i = 0; i < 4; ++i) { 30 this.a((Slot) (new SlotArmor(this, inventoryplayer, inventoryplayer.getSize() - 1 - i, 8, 8 + i * 18, i))); 31 } 32 33 for (i = 0; i < 3; ++i) { 34 for (j = 0; j < 9; ++j) { 35 this.a(new Slot(inventoryplayer, j + (i + 1) * 9, 8 + j * 18, 84 + i * 18)); 36 } 37 } 38 39 for (i = 0; i < 9; ++i) { 40 this.a(new Slot(inventoryplayer, i, 8 + i * 18, 142)); 41 } 42 43 this.a((IInventory) this.craftInventory); 44 } 45 46 public void a(IInventory iinventory) { 47 // CraftBukkit start 48 ItemStack craftResult = CraftingManager.getInstance().craft(this.craftInventory); 49 this.resultInventory.setItem(0, craftResult); 50 if (super.listeners.size() < 1) { 51 return; 52 } 53 54 EntityPlayer player = (EntityPlayer) super.listeners.get(0); // TODO: Is this _always_ correct? Seems like it. 55 player.netServerHandler.sendPacket(new Packet103SetSlot(player.activeContainer.windowId, 0, craftResult)); 56 // CraftBukkit end 57 } 58 59 public void a(EntityHuman entityhuman) { 60 super.a(entityhuman); 61 62 for (int i = 0; i < 4; ++i) { 63 ItemStack itemstack = this.craftInventory.getItem(i); 64 65 if (itemstack != null) { 66 entityhuman.b(itemstack); 67 this.craftInventory.setItem(i, (ItemStack) null); 68 } 69 } 70 } 71 72 public boolean b(EntityHuman entityhuman) { 73 return true; 74 } 75 76 public ItemStack a(int i) { 77 ItemStack itemstack = null; 78 Slot slot = (Slot) this.e.get(i); 79 80 if (slot != null && slot.b()) { 81 ItemStack itemstack1 = slot.getItem(); 82 83 itemstack = itemstack1.cloneItemStack(); 84 if (i == 0) { 85 this.a(itemstack1, 9, 45, true); 86 } else if (i >= 9 && i < 36) { 87 this.a(itemstack1, 36, 45, false); 88 } else if (i >= 36 && i < 45) { 89 this.a(itemstack1, 9, 36, false); 90 } else { 91 this.a(itemstack1, 9, 45, false); 92 } 93 94 if (itemstack1.count == 0) { 95 slot.c((ItemStack) null); 96 } else { 97 slot.c(); 98 } 99 100 if (itemstack1.count == itemstack.count) { 101 return null; 102 } 103 104 slot.a(itemstack1); 105 } 106 107 return itemstack; 108 } 109}