package pcc.chemicraft.container;
+import java.util.ArrayList;
+import java.util.Iterator;
+
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
+import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
+import pcc.chemicraft.ChemiCraft;
import pcc.chemicraft.inventory.InventoryElectrolysisFuel;
import pcc.chemicraft.inventory.InventoryElectrolysisMaterial;
import pcc.chemicraft.inventory.InventoryElectrolysisResult;
+import pcc.chemicraft.slot.SlotElectrolysisFuel;
import pcc.chemicraft.slot.SlotElectrolysisMaterial;
import pcc.chemicraft.slot.SlotElectrolysisResult;
+import pcc.chemicraft.slot.SlotPyrolysisTableResult;
import pcc.chemicraft.tileentity.TileEntityElectrolysisTable;
-public class ContainerElectrolysisTable extends Container
-{
+
+public class ContainerElectrolysisTable extends Container {
private World worldObj;
private int posY;
private int posZ;
- private TileEntityElectrolysisTable tileEntity;
+ private TileEntityElectrolysisTable tileentity;
private InventoryElectrolysisMaterial invm;
private InventoryElectrolysisResult invr;
public ContainerElectrolysisTable(EntityPlayer par1EntityPlayer, TileEntityElectrolysisTable par2) {
super();
+ this.tileentity = par2;
this.worldObj = par2.worldObj;
this.posX = par2.xCoord;
this.posY = par2.yCoord;
this.posZ = par2.zCoord;
- this.invm = (InventoryElectrolysisMaterial) this.tileEntity.getInvMaterial();
- this.invr = (InventoryElectrolysisResult) this.tileEntity.getInvResult();
- this.invf = (InventoryElectrolysisFuel) this.tileEntity.getInvFuel();
+ this.invm = par2.getInvMaterial();
+ this.invr = par2.getInvResult();
+ this.invf = par2.getInvFuel();
+ this.invm.setEventHandler(this);
+ this.invr.setEventHandler(this);
+ this.invf.setEventHandler(this);
- this.addSlotToContainer(new SlotElectrolysisMaterial(invm, 0, 123, 34));
- for (int i = 0; i < 16; i++) {
- this.addSlotToContainer(new SlotElectrolysisResult(invr, i, 123, 34));
+ for (int i = 0; i < 4; i++) {
+ for (int j = 0; j < 4; j++) {
+ this.addSlotToContainer(new SlotElectrolysisResult(this.tileentity.getInvResult(), i*4 + j, 88+i*18, 17+j*18));
+ }
}
- this.addSlotToContainer(new SlotElectrolysisResult(invf, 0, 123, 34));
+ this.addSlotToContainer(new SlotElectrolysisMaterial(this.tileentity.getInvMaterial(), 0, 27, 20));
+ this.addSlotToContainer(new SlotElectrolysisFuel(this.tileentity.getInvFuel(), 0, 27, 63));
int var3;
for (var3 = 0; var3 < 3; ++var3)
{
for (int var4 = 0; var4 < 9; ++var4)
{
- this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 85 + var3 * 18));
+ this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 121 + var3 * 18));
}
}
for (var3 = 0; var3 < 9; ++var3)
{
- this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var3, 8 + var3 * 18, 143));
+ this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var3, 8 + var3 * 18, 179));
}
-
}
@Override
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
- return true;
- //return this.worldObj.getBlockId(this.posX, this.posY, this.posZ) != ChemiCraft.instance.electrolysisTableID ? false : par1EntityPlayer.getDistanceSq((double) this.posX + 0.5D, (double) this.posY + 0.5D, (double) this.posZ + 0.5D) <= 64.0D;
+ return this.worldObj.getBlockId(this.posX, this.posY, this.posZ) != ChemiCraft.instance.electrolysisTableID ? false : par1EntityPlayer.getDistanceSq((double) this.posX + 0.5D, (double) this.posY + 0.5D, (double) this.posZ + 0.5D) <= 64.0D;
+ }
+
+ @Override
+ public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2)
+ {
+ ItemStack var3 = null;
+ Slot var4 = (Slot)this.inventorySlots.get(par2);
+
+ if (var4 != null && var4.getHasStack())
+ {
+ ItemStack var5 = var4.getStack();
+ var3 = var5.copy();
+
+ if (par2 < 18 ){
+ if (!this.mergeItemStack(var5, 18, this.inventorySlots.size(), true))
+ {
+ return null;
+ }
+ }
+ else if (!this.mergeItemStack(var5, 16, 18, false))
+ {
+ return null;
+ }
+
+ if (var5.stackSize == 0)
+ {
+ var4.putStack((ItemStack)null);
+ }
+ else
+ {
+ var4.onSlotChanged();
+ }
+ }
+
+ return var3;
}
}