1 package chemicraft.container;
3 import net.minecraft.src.Container;
4 import net.minecraft.src.EntityPlayer;
5 import net.minecraft.src.IInventory;
6 import net.minecraft.src.ItemStack;
7 import net.minecraft.src.Slot;
8 import net.minecraft.src.World;
9 import chemicraft.ChemiCraft;
10 import chemicraft.ChemiCraftAPI;
11 import chemicraft.inventory.InventoryChemicalCraftingMaterial;
12 import chemicraft.inventory.InventoryChemicalCraftingNBT;
13 import chemicraft.inventory.InventoryChemicalCraftingResult;
14 import chemicraft.slot.SlotChemicalCraftingResult;
15 import chemicraft.tileentity.TileEntityChemicalCraftingTable;
17 public class ContainerChemicalCraftingTable extends Container {
22 private World worldObj;
36 private TileEntityChemicalCraftingTable tileEntity;
39 private InventoryChemicalCraftingMaterial invm;
40 private InventoryChemicalCraftingResult invr;
41 private InventoryChemicalCraftingNBT invn;
45 public ContainerChemicalCraftingTable(EntityPlayer par1EntityPlayer, TileEntityChemicalCraftingTable par2)
48 this.worldObj = par2.worldObj;
49 this.posX = par2.xCoord;
50 this.posY = par2.yCoord;
51 this.posZ = par2.zCoord;
52 this.tileEntity = par2;
53 this.invm = (InventoryChemicalCraftingMaterial) this.tileEntity.chemicalCraftingInvMaterial;
54 this.invr = (InventoryChemicalCraftingResult) this.tileEntity.chemicalCraftingInvResult;
55 this.invn = (InventoryChemicalCraftingNBT) this.tileEntity.chemicalCraftingInvNBT;
57 this.generateSlots(this.invm, this.invr, this.invn);
58 //GeneratePlayerInventory
61 for (var3 = 0; var3 < 3; ++var3)
63 for (int var4 = 0; var4 < 9; ++var4)
65 this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 85 + var3 * 18));
69 for (var3 = 0; var3 < 9; ++var3)
71 this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var3, 8 + var3 * 18, 143));
74 this.invm.setEventHandler(this);
75 this.invr.setEventHandler(this);
76 this.invn.setEventHandler(this);
83 public void onCraftMatrixChanged(IInventory par1IInventory){
84 ChemiCraftAPI.instance.getCraftingManager().chemicalCrafting(this.invm, this.invr, this.invn);
88 public void onCraftGuiClosed(EntityPlayer par1EntityPlayer){
89 super.onCraftGuiClosed(par1EntityPlayer);
95 public boolean canInteractWith(EntityPlayer par1EntityPlayer){
96 return this.worldObj.getBlockId(this.posX, this.posY, this.posZ) != ChemiCraft.instance.ChemicalCraftingTableID ? false : par1EntityPlayer.getDistanceSq((double)this.posX + 0.5D, (double)this.posY + 0.5D, (double)this.posZ + 0.5D) <= 64.0D;
102 public ItemStack transferStackInSlot(int par1){
108 private void generateSlots(IInventory materialInv, IInventory resultInv, IInventory nbtInv){
109 for(int i = 0;i < 3;i++){
110 this.addSlotToContainer(new Slot(invn, i, 30 + 18 * i, 7));
112 for(int i = 0;i < 3;i++){
113 for(int j = 0;j < 3;j++){
114 this.addSlotToContainer(new Slot(invm, i * 3 + j, 30 + 18 * j, 27 + 18 * i));
117 this.addSlotToContainer(new SlotChemicalCraftingResult(invr, 0, 123, 33));