001 package net.minecraft.src; 002 003 public class ContainerDispenser extends Container 004 { 005 private TileEntityDispenser tileEntityDispenser; 006 007 public ContainerDispenser(IInventory par1IInventory, TileEntityDispenser par2TileEntityDispenser) 008 { 009 this.tileEntityDispenser = par2TileEntityDispenser; 010 int var3; 011 int var4; 012 013 for (var3 = 0; var3 < 3; ++var3) 014 { 015 for (var4 = 0; var4 < 3; ++var4) 016 { 017 this.addSlotToContainer(new Slot(par2TileEntityDispenser, var4 + var3 * 3, 62 + var4 * 18, 17 + var3 * 18)); 018 } 019 } 020 021 for (var3 = 0; var3 < 3; ++var3) 022 { 023 for (var4 = 0; var4 < 9; ++var4) 024 { 025 this.addSlotToContainer(new Slot(par1IInventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18)); 026 } 027 } 028 029 for (var3 = 0; var3 < 9; ++var3) 030 { 031 this.addSlotToContainer(new Slot(par1IInventory, var3, 8 + var3 * 18, 142)); 032 } 033 } 034 035 public boolean canInteractWith(EntityPlayer par1EntityPlayer) 036 { 037 return this.tileEntityDispenser.isUseableByPlayer(par1EntityPlayer); 038 } 039 040 public ItemStack func_82846_b(EntityPlayer par1EntityPlayer, int par2) 041 { 042 ItemStack var3 = null; 043 Slot var4 = (Slot)this.inventorySlots.get(par2); 044 045 if (var4 != null && var4.getHasStack()) 046 { 047 ItemStack var5 = var4.getStack(); 048 var3 = var5.copy(); 049 050 if (par2 < 9) 051 { 052 if (!this.mergeItemStack(var5, 9, 45, true)) 053 { 054 return null; 055 } 056 } 057 else if (!this.mergeItemStack(var5, 0, 9, false)) 058 { 059 return null; 060 } 061 062 if (var5.stackSize == 0) 063 { 064 var4.putStack((ItemStack)null); 065 } 066 else 067 { 068 var4.onSlotChanged(); 069 } 070 071 if (var5.stackSize == var3.stackSize) 072 { 073 return null; 074 } 075 076 var4.func_82870_a(par1EntityPlayer, var5); 077 } 078 079 return var3; 080 } 081 }