001 package net.minecraft.src;
002
003 import cpw.mods.fml.common.Side;
004 import cpw.mods.fml.common.asm.SideOnly;
005 import java.util.Iterator;
006
007 public class ContainerBrewingStand extends Container
008 {
009 private TileEntityBrewingStand tileBrewingStand;
010
011 /** Instance of Slot. */
012 private final Slot theSlot;
013 private int brewTime = 0;
014
015 public ContainerBrewingStand(InventoryPlayer par1InventoryPlayer, TileEntityBrewingStand par2TileEntityBrewingStand)
016 {
017 this.tileBrewingStand = par2TileEntityBrewingStand;
018 this.addSlotToContainer(new SlotBrewingStandPotion(par1InventoryPlayer.player, par2TileEntityBrewingStand, 0, 56, 46));
019 this.addSlotToContainer(new SlotBrewingStandPotion(par1InventoryPlayer.player, par2TileEntityBrewingStand, 1, 79, 53));
020 this.addSlotToContainer(new SlotBrewingStandPotion(par1InventoryPlayer.player, par2TileEntityBrewingStand, 2, 102, 46));
021 this.theSlot = this.addSlotToContainer(new SlotBrewingStandIngredient(this, par2TileEntityBrewingStand, 3, 79, 17));
022 int var3;
023
024 for (var3 = 0; var3 < 3; ++var3)
025 {
026 for (int var4 = 0; var4 < 9; ++var4)
027 {
028 this.addSlotToContainer(new Slot(par1InventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18));
029 }
030 }
031
032 for (var3 = 0; var3 < 9; ++var3)
033 {
034 this.addSlotToContainer(new Slot(par1InventoryPlayer, var3, 8 + var3 * 18, 142));
035 }
036 }
037
038 public void addCraftingToCrafters(ICrafting par1ICrafting)
039 {
040 super.addCraftingToCrafters(par1ICrafting);
041 par1ICrafting.updateCraftingInventoryInfo(this, 0, this.tileBrewingStand.getBrewTime());
042 }
043
044 /**
045 * Updates crafting matrix; called from onCraftMatrixChanged. Args: none
046 */
047 public void updateCraftingResults()
048 {
049 super.updateCraftingResults();
050 Iterator var1 = this.crafters.iterator();
051
052 while (var1.hasNext())
053 {
054 ICrafting var2 = (ICrafting)var1.next();
055
056 if (this.brewTime != this.tileBrewingStand.getBrewTime())
057 {
058 var2.updateCraftingInventoryInfo(this, 0, this.tileBrewingStand.getBrewTime());
059 }
060 }
061
062 this.brewTime = this.tileBrewingStand.getBrewTime();
063 }
064
065 @SideOnly(Side.CLIENT)
066 public void updateProgressBar(int par1, int par2)
067 {
068 if (par1 == 0)
069 {
070 this.tileBrewingStand.setBrewTime(par2);
071 }
072 }
073
074 public boolean canInteractWith(EntityPlayer par1EntityPlayer)
075 {
076 return this.tileBrewingStand.isUseableByPlayer(par1EntityPlayer);
077 }
078
079 public ItemStack func_82846_b(EntityPlayer par1EntityPlayer, int par2)
080 {
081 ItemStack var3 = null;
082 Slot var4 = (Slot)this.inventorySlots.get(par2);
083
084 if (var4 != null && var4.getHasStack())
085 {
086 ItemStack var5 = var4.getStack();
087 var3 = var5.copy();
088
089 if ((par2 < 0 || par2 > 2) && par2 != 3)
090 {
091 if (!this.theSlot.getHasStack() && this.theSlot.isItemValid(var5))
092 {
093 if (!this.mergeItemStack(var5, 3, 4, false))
094 {
095 return null;
096 }
097 }
098 else if (SlotBrewingStandPotion.func_75243_a_(var3))
099 {
100 if (!this.mergeItemStack(var5, 0, 3, false))
101 {
102 return null;
103 }
104 }
105 else if (par2 >= 4 && par2 < 31)
106 {
107 if (!this.mergeItemStack(var5, 31, 40, false))
108 {
109 return null;
110 }
111 }
112 else if (par2 >= 31 && par2 < 40)
113 {
114 if (!this.mergeItemStack(var5, 4, 31, false))
115 {
116 return null;
117 }
118 }
119 else if (!this.mergeItemStack(var5, 4, 40, false))
120 {
121 return null;
122 }
123 }
124 else
125 {
126 if (!this.mergeItemStack(var5, 4, 40, true))
127 {
128 return null;
129 }
130
131 var4.onSlotChange(var5, var3);
132 }
133
134 if (var5.stackSize == 0)
135 {
136 var4.putStack((ItemStack)null);
137 }
138 else
139 {
140 var4.onSlotChanged();
141 }
142
143 if (var5.stackSize == var3.stackSize)
144 {
145 return null;
146 }
147
148 var4.func_82870_a(par1EntityPlayer, var5);
149 }
150
151 return var3;
152 }
153 }