001    package net.minecraft.src;
002    
003    import cpw.mods.fml.common.Side;
004    import cpw.mods.fml.common.asm.SideOnly;
005    
006    public class ContainerBeacon extends Container
007    {
008        private TileEntityBeacon field_82866_e;
009        private final SlotBeacon field_82864_f;
010        private int field_82865_g;
011        private int field_82867_h;
012        private int field_82868_i;
013    
014        public ContainerBeacon(InventoryPlayer par1InventoryPlayer, TileEntityBeacon par2TileEntityBeacon)
015        {
016            this.field_82866_e = par2TileEntityBeacon;
017            this.addSlotToContainer(this.field_82864_f = new SlotBeacon(this, par2TileEntityBeacon, 0, 136, 110));
018            byte var3 = 36;
019            short var4 = 137;
020            int var5;
021    
022            for (var5 = 0; var5 < 3; ++var5)
023            {
024                for (int var6 = 0; var6 < 9; ++var6)
025                {
026                    this.addSlotToContainer(new Slot(par1InventoryPlayer, var6 + var5 * 9 + 9, var3 + var6 * 18, var4 + var5 * 18));
027                }
028            }
029    
030            for (var5 = 0; var5 < 9; ++var5)
031            {
032                this.addSlotToContainer(new Slot(par1InventoryPlayer, var5, var3 + var5 * 18, 58 + var4));
033            }
034    
035            this.field_82865_g = par2TileEntityBeacon.func_82130_k();
036            this.field_82867_h = par2TileEntityBeacon.func_82126_i();
037            this.field_82868_i = par2TileEntityBeacon.func_82132_j();
038        }
039    
040        public void addCraftingToCrafters(ICrafting par1ICrafting)
041        {
042            super.addCraftingToCrafters(par1ICrafting);
043            par1ICrafting.updateCraftingInventoryInfo(this, 0, this.field_82865_g);
044            par1ICrafting.updateCraftingInventoryInfo(this, 1, this.field_82867_h);
045            par1ICrafting.updateCraftingInventoryInfo(this, 2, this.field_82868_i);
046        }
047    
048        /**
049         * Updates crafting matrix; called from onCraftMatrixChanged. Args: none
050         */
051        public void updateCraftingResults()
052        {
053            super.updateCraftingResults();
054        }
055    
056        @SideOnly(Side.CLIENT)
057        public void updateProgressBar(int par1, int par2)
058        {
059            if (par1 == 0)
060            {
061                this.field_82866_e.func_82129_c(par2);
062            }
063    
064            if (par1 == 1)
065            {
066                this.field_82866_e.func_82128_d(par2);
067            }
068    
069            if (par1 == 2)
070            {
071                this.field_82866_e.func_82127_e(par2);
072            }
073        }
074    
075        public TileEntityBeacon func_82863_d()
076        {
077            return this.field_82866_e;
078        }
079    
080        public boolean canInteractWith(EntityPlayer par1EntityPlayer)
081        {
082            return this.field_82866_e.isUseableByPlayer(par1EntityPlayer);
083        }
084    
085        public ItemStack func_82846_b(EntityPlayer par1EntityPlayer, int par2)
086        {
087            ItemStack var3 = null;
088            Slot var4 = (Slot)this.inventorySlots.get(par2);
089    
090            if (var4 != null && var4.getHasStack())
091            {
092                ItemStack var5 = var4.getStack();
093                var3 = var5.copy();
094    
095                if (par2 == 0)
096                {
097                    if (!this.mergeItemStack(var5, 1, 37, true))
098                    {
099                        return null;
100                    }
101    
102                    var4.onSlotChange(var5, var3);
103                }
104                else if (!this.field_82864_f.getHasStack() && this.field_82864_f.isItemValid(var5) && var5.stackSize == 1)
105                {
106                    if (!this.mergeItemStack(var5, 0, 1, false))
107                    {
108                        return null;
109                    }
110                }
111                else if (par2 >= 1 && par2 < 28)
112                {
113                    if (!this.mergeItemStack(var5, 28, 37, false))
114                    {
115                        return null;
116                    }
117                }
118                else if (par2 >= 28 && par2 < 37)
119                {
120                    if (!this.mergeItemStack(var5, 1, 28, false))
121                    {
122                        return null;
123                    }
124                }
125                else if (!this.mergeItemStack(var5, 1, 37, false))
126                {
127                    return null;
128                }
129    
130                if (var5.stackSize == 0)
131                {
132                    var4.putStack((ItemStack)null);
133                }
134                else
135                {
136                    var4.onSlotChanged();
137                }
138    
139                if (var5.stackSize == var3.stackSize)
140                {
141                    return null;
142                }
143    
144                var4.func_82870_a(par1EntityPlayer, var5);
145            }
146    
147            return var3;
148        }
149    }