OSDN Git Service

Merge branch 'master' of git.sourceforge.jp:/gitroot/chemicraft/chemicraft
[chemicraft/chemicraft.git] / common / chemicraft / container / ContainerChemicalCraftingTable.java
1 package chemicraft.container;
2
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;
16
17 public class ContainerChemicalCraftingTable extends Container {
18
19         /**
20          * Worldのインスタンス
21          */
22         private World worldObj;
23
24
25         /**
26          * BlockのX, Y, Z座標
27          */
28         private int posX;
29         private int posY;
30         private int posZ;
31
32
33         /**
34          * the TileEntity.
35          */
36         private TileEntityChemicalCraftingTable tileEntity;
37
38
39         private InventoryChemicalCraftingMaterial invm;
40         private InventoryChemicalCraftingResult invr;
41         private InventoryChemicalCraftingNBT invn;
42
43
44
45         public ContainerChemicalCraftingTable(EntityPlayer par1EntityPlayer, TileEntityChemicalCraftingTable par2)
46         {
47                 super();
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;
56                 //GenerateInventory
57                 this.generateSlots(this.invm, this.invr, this.invn);
58                 //GeneratePlayerInventory
59                 int var3;
60
61                 for (var3 = 0; var3 < 3; ++var3)
62                 {
63                         for (int var4 = 0; var4 < 9; ++var4)
64                         {
65                                 this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 85 + var3 * 18));
66                         }
67                 }
68
69                 for (var3 = 0; var3 < 9; ++var3)
70                 {
71                         this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var3, 8 + var3 * 18, 143));
72                 }
73
74                 this.invm.setEventHandler(this);
75                 this.invr.setEventHandler(this);
76                 this.invn.setEventHandler(this);
77
78         }
79
80
81
82         @Override
83         public void onCraftMatrixChanged(IInventory par1IInventory){
84                 ChemiCraftAPI.instance.getCraftingManager().chemicalCrafting(this.invm, this.invr, this.invn);
85         }
86
87         @Override
88         public void onCraftGuiClosed(EntityPlayer par1EntityPlayer){
89                 super.onCraftGuiClosed(par1EntityPlayer);
90         }
91
92
93
94         @Override
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;
97         }
98
99
100
101         @Override
102         public ItemStack transferStackInSlot(int par1){
103                 return null;
104         }
105
106
107
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));
111                 }
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));
115                         }
116                 }
117                 this.addSlotToContainer(new SlotChemicalCraftingResult(invr, 0, 123, 33));
118         }
119 }