3 import java.util.ArrayList;
\r
4 import java.util.HashMap;
\r
6 import net.minecraft.src.Block;
\r
7 import net.minecraft.src.EntityPlayer;
\r
8 import net.minecraft.src.GuiContainer;
\r
9 import net.minecraft.src.InventoryBasic;
\r
10 import net.minecraft.src.InventoryPlayer;
\r
11 import net.minecraft.src.Item;
\r
12 import net.minecraft.src.ItemStack;
\r
13 import cpw.mods.fml.common.Side;
\r
14 import cpw.mods.fml.common.asm.SideOnly;
\r
15 import cpw.mods.fml.common.network.PacketDispatcher;
\r
16 import cpw.mods.fml.common.network.Player;
\r
18 @SideOnly(Side.CLIENT)
\r
19 public class GuiChemicalCraftingTable extends GuiContainer {
\r
24 private ArrayList<ChemiCraftTab> tabList = new ArrayList<ChemiCraftTab>();
\r
29 * キーの名前は拡張子を除くファイル名にする
\r
31 private HashMap<String, Integer> guiImageMap = new HashMap<String, Integer>();
\r
36 * キーの名前は拡張子を除くファイル名にする
\r
38 private HashMap<String, Integer> otherImageMap = new HashMap<String, Integer>();
\r
44 private TileEntityChemicalCraftingTable tileEntity;
\r
48 * the InventoryPlayer.
\r
50 private InventoryPlayer inventoryPlayer;
\r
56 private ContainerChemicalCraftingTable container;
\r
60 public GuiChemicalCraftingTable(EntityPlayer par1EntityPlayer, TileEntityChemicalCraftingTable par2){
\r
61 super(new ContainerChemicalCraftingTable(par1EntityPlayer, par2));
\r
63 this.inventoryPlayer = par1EntityPlayer.inventory;
\r
64 this.tileEntity = par2;
\r
65 this.container = (ContainerChemicalCraftingTable) this.inventorySlots;
\r
67 this.addTabs(0, "Decomposition", new ItemStack(Block.tnt.blockID, 1, 1));
\r
68 this.addTabs(1, "ChemicalCombination", new ItemStack(ChemiCraft.instance.itemAtoms, 1, 0));
\r
69 this.addTabs(2, "ToolAndWeaponCrafting", new ItemStack(Item.pickaxeSteel, 1, 0));
\r
70 this.addTabs(3, "MaterialCrafting", new ItemStack(Item.fireballCharge, 1, 0));
\r
72 for(int i = 0;i < tabList.size();i++){
\r
73 String field_00001 = this.tabList.get(i).getTabName();
\r
74 String field_00002 = this.tileEntity.getActiveTab();
\r
75 if(field_00001.equals(field_00002)){
\r
76 this.tileEntity.setActiveTab(this.tabList.get(i).getTabName());
\r
84 protected void mouseClicked(int par1, int par2, int par3){
\r
85 super.mouseClicked(par1, par2, par3);
\r
87 int var1 = par1 - this.guiLeft;
\r
88 int var2 = par2 - this.guiTop;
\r
89 if(var1 < this.tabList.size() * 28 && var1 >= 0 && var2 < 0){
\r
90 String var3 = this.tabList.get(var1 / 28).getTabName();
\r
91 if(!var3.equals(this.tileEntity.getActiveTab())){
\r
92 this.tileEntity.setActiveTab(var3);
\r
93 this.inventoryPlayer.player.openGui(ChemiCraft.instance, ChemiCraft.instance.guiChemicalCraftingTableID, this.tileEntity.worldObj, this.tileEntity.xCoord, this.tileEntity.yCoord, this.tileEntity.zCoord);
\r
102 protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3){
\r
108 this.func_00001(par1, par2, par3);
\r
110 if(this.tileEntity.getActiveTab().equals("Decomposition")){
\r
111 this.mc.renderEngine.bindTexture(this.guiImageMap.get("Decomposition"));
\r
112 this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize);
\r
118 private void func_00001(float par1, int par2, int par3){
\r
119 int var1 = this.guiLeft;
\r
120 int var2 = this.guiTop - 32;
\r
121 for(int i = 0;i < this.tabList.size();i++){
\r
122 if(!this.tabList.get(i).isActive()){
\r
123 this.mc.renderEngine.bindTexture(this.otherImageMap.get("tabs"));
\r
124 this.drawTexturedModalRect(var1 + (28 * i), var2, 0, 0, 28, 32);
\r
125 this.itemRenderer.renderItemIntoGUI(this.fontRenderer, this.mc.renderEngine, this.tabList.get(i).getRenderItemStack(), var1 + (28 * i) + 6, var2 + 9);
\r
126 this.itemRenderer.renderItemOverlayIntoGUI(this.fontRenderer, this.mc.renderEngine, this.tabList.get(i).getRenderItemStack(), var1 + (28 * i) + 6, var2 + 9);
\r
128 this.mc.renderEngine.bindTexture(this.otherImageMap.get("tabs"));
\r
129 this.drawTexturedModalRect(var1 + (28 * i), var2, 0, 32, 28, 32);
\r
130 this.itemRenderer.renderItemIntoGUI(this.fontRenderer, this.mc.renderEngine, this.tabList.get(i).getRenderItemStack(), var1 + (28 * i) + 6, var2 + 9);
\r
131 this.itemRenderer.renderItemOverlayIntoGUI(this.fontRenderer, this.mc.renderEngine, this.tabList.get(i).getRenderItemStack(), var1 + (28 * i) + 6, var2 + 9);
\r
138 private void func_00002(){
\r
139 //guiImageMapに画像を格納する
\r
140 guiImageMap.put("Decomposition", this.mc.renderEngine.getTexture("/resources/chemicraft/guis/Decomposition.png"));
\r
141 //otherImageMapに画像を格納する
\r
142 otherImageMap.put("tabs", this.mc.renderEngine.getTexture("/resources/chemicraft/guis/tabs.png"));
\r
147 private void func_00003(){
\r
148 for(int i = 0;i < this.tabList.size();i++){
\r
149 if(!this.tabList.get(i).getTabName().equals(this.tileEntity.getActiveTab())){
\r
150 this.tabList.get(i).setActive(false);
\r
152 this.tabList.get(i).setActive(true);
\r
160 * ChemiCraftTabを追加します。
\r
162 * @param texture OverlayするTextureID
\r
163 * @param name Tabの名前
\r
164 * @throws Exception IDが重複している場合にスローされます
\r
166 private void addTabs(int id, String name, ItemStack renderItemStack){
\r
167 for(int i = 0;i < this.tabList.size();i++){
\r
168 if(id == this.tabList.get(i).getID()){
\r
170 throw new Exception("ChemiCraft内でエラー:ChemiCraftTabのIDが重複しています");
\r
171 } catch (Exception e) {
\r
172 e.printStackTrace();
\r
176 this.tabList.add(new ChemiCraftTab(id, name, renderItemStack));
\r