From b8863d1e5489d7a768596c1bb5d85478c70b086d Mon Sep 17 00:00:00 2001 From: mozipi Date: Sun, 9 Dec 2012 18:59:04 +0900 Subject: [PATCH] =?utf8?q?=E3=81=A8=E3=82=8A=E3=81=82=E3=81=88=E3=81=9AGUI?= =?utf8?q?=E3=81=AETab=E3=81=AE=E5=88=87=E3=82=8A=E6=9B=BF=E3=81=88?= =?utf8?q?=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=97?= =?utf8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- common/chemicraft/AtomInfo.java | 2 + common/chemicraft/ChemiCraftTab.java | 24 ++-- common/chemicraft/GuiScienceCraftingTable.java | 46 +++++-- common/chemicraft/PacketHandler.java | 84 ++++++------ .../chemicraft/TileEntityScienceCraftingTable.java | 150 ++++++++++++--------- 5 files changed, 178 insertions(+), 128 deletions(-) diff --git a/common/chemicraft/AtomInfo.java b/common/chemicraft/AtomInfo.java index 73630f5..264b35a 100644 --- a/common/chemicraft/AtomInfo.java +++ b/common/chemicraft/AtomInfo.java @@ -37,6 +37,8 @@ public class AtomInfo { */ private World world; + + /** * AtomInfoのデータをupdateします * @param par1World Worldのインスタンス diff --git a/common/chemicraft/ChemiCraftTab.java b/common/chemicraft/ChemiCraftTab.java index 1caba5f..acc7711 100644 --- a/common/chemicraft/ChemiCraftTab.java +++ b/common/chemicraft/ChemiCraftTab.java @@ -1,5 +1,7 @@ package chemicraft; +import net.minecraft.src.ItemStack; + public class ChemiCraftTab { /** @@ -9,9 +11,9 @@ public class ChemiCraftTab { /** - * TabにOverlayするTextureID + * TabにOverlayするItemStack */ - private int texture; + private ItemStack renderItemStack; /** @@ -29,13 +31,13 @@ public class ChemiCraftTab { /** * ChemiCraftTabを作成します - * @param id TabのID - * @param texture TabにOverlayする画像のTextureID - * @param tabName Tabの名前(最初は大文字にすること) + * @param id + * @param tabName + * @param renderItemStack */ - public ChemiCraftTab(int id, int texture, String tabName){ + public ChemiCraftTab(int id, String tabName, ItemStack renderItemStack){ this.id = id; - this.texture = texture; + this.renderItemStack = renderItemStack; this.tabName = tabName; } @@ -52,11 +54,11 @@ public class ChemiCraftTab { /** - * TabにOverlayするTextureIDを返します - * @return TabにOverlayするTextureID + * TabにOverlayするItemStackを返します + * @return TabにOverlayするItemStack */ - public int getTexture(){ - return this.texture; + public ItemStack getRenderItemStack(){ + return this.renderItemStack; } diff --git a/common/chemicraft/GuiScienceCraftingTable.java b/common/chemicraft/GuiScienceCraftingTable.java index b85bac6..1f55bda 100644 --- a/common/chemicraft/GuiScienceCraftingTable.java +++ b/common/chemicraft/GuiScienceCraftingTable.java @@ -3,10 +3,11 @@ package chemicraft; import java.util.ArrayList; import java.util.HashMap; +import net.minecraft.src.Block; import net.minecraft.src.GuiContainer; import net.minecraft.src.InventoryBasic; import net.minecraft.src.InventoryPlayer; -import net.minecraft.src.Item; +import net.minecraft.src.ItemStack; import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; @@ -49,10 +50,14 @@ public class GuiScienceCraftingTable extends GuiContainer { public GuiScienceCraftingTable(InventoryPlayer par1InventoryPlayer, TileEntityScienceCraftingTable par2){ super(new ContainerScienceCraftingTable(par1InventoryPlayer, par2)); //TabListにTabを追加する - tabList.add(new ChemiCraftTab(0, Item.potion.getIconFromDamage(0), "Decomposition")); + this.addTabs(0, "Decomposition", new ItemStack(Block.tnt.blockID, 1, 1)); + this.addTabs(1, "Test", new ItemStack(Block.bedrock.blockID, 1, 1)); //ActiveTabの初期化 - /*未実装*/ - /*Debug*/ this.tabList.get(0).setActive(true); for(int i = 0;i < tabList.size();i++){ if(this.tabList.get(i).isActive()){ this.activeTabName = this.tabList.get(i).getTabName(); } } + for(int i = 0;i < tabList.size();i++){ + if(this.tabList.get(i).getTabName().equals(par2.getActiveTab())){ + this.activeTabName = this.tabList.get(i).getTabName(); + } + } } @@ -60,12 +65,23 @@ public class GuiScienceCraftingTable extends GuiContainer { @Override protected void mouseClicked(int par1, int par2, int par3){ super.mouseClicked(par1, par2, par3); + + int var1 = par1 - this.guiLeft; + int var2 = par2 - this.guiTop; + if(var1 < this.tabList.size() * 28 && var1 >= 0){ + String var3 = this.tabList.get(var1 / 28).getTabName(); + if(!var3.equals(this.activeTabName)){ + this.activeTabName = var3; + } + } } @Override protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3){ + //Active Reset + this.func_00003(); //Texture Load. this.func_00002(); //Draw Tabs. @@ -86,11 +102,13 @@ public class GuiScienceCraftingTable extends GuiContainer { if(!this.tabList.get(i).isActive()){ this.mc.renderEngine.bindTexture(this.otherImageMap.get("tabs")); this.drawTexturedModalRect(var1 + (28 * i), var2, 0, 0, 28, 32); - this.mc.renderEngine.bindTexture(this.tabList.get(i).getTexture()); - this.drawTexturedModalRect(var1 + (28 * i) + 14, var2 + 16, 0, 0, 16, 16); + this.itemRenderer.renderItemIntoGUI(this.fontRenderer, this.mc.renderEngine, this.tabList.get(i).getRenderItemStack(), var1 + (28 * i) + 6, var2 + 9); + this.itemRenderer.renderItemOverlayIntoGUI(this.fontRenderer, this.mc.renderEngine, this.tabList.get(i).getRenderItemStack(), var1 + (28 * i) + 6, var2 + 9); }else{ this.mc.renderEngine.bindTexture(this.otherImageMap.get("tabs")); this.drawTexturedModalRect(var1 + (28 * i), var2, 0, 32, 28, 32); + this.itemRenderer.renderItemIntoGUI(this.fontRenderer, this.mc.renderEngine, this.tabList.get(i).getRenderItemStack(), var1 + (28 * i) + 6, var2 + 9); + this.itemRenderer.renderItemOverlayIntoGUI(this.fontRenderer, this.mc.renderEngine, this.tabList.get(i).getRenderItemStack(), var1 + (28 * i) + 6, var2 + 9); } } } @@ -106,6 +124,18 @@ public class GuiScienceCraftingTable extends GuiContainer { + private void func_00003(){ + for(int i = 0;i < this.tabList.size();i++){ + if(!this.tabList.get(i).getTabName().equals(this.activeTabName)){ + this.tabList.get(i).setActive(false); + }else{ + this.tabList.get(i).setActive(true); + } + } + } + + + /** * Activeなtabの名前を返します * @return ActiveなTabの名前 @@ -133,7 +163,7 @@ public class GuiScienceCraftingTable extends GuiContainer { * @param name Tabの名前 * @throws Exception IDが重複している場合にスローされます */ - private void addTabs(int id, int texture, String name){ + private void addTabs(int id, String name, ItemStack renderItemStack){ for(int i = 0;i < this.tabList.size();i++){ if(id == this.tabList.get(i).getID()){ try { @@ -143,7 +173,7 @@ public class GuiScienceCraftingTable extends GuiContainer { } } } - this.tabList.add(new ChemiCraftTab(id, texture, name)); + this.tabList.add(new ChemiCraftTab(id, name, renderItemStack)); } } diff --git a/common/chemicraft/PacketHandler.java b/common/chemicraft/PacketHandler.java index a55e9c5..bd26cda 100644 --- a/common/chemicraft/PacketHandler.java +++ b/common/chemicraft/PacketHandler.java @@ -18,58 +18,58 @@ import cpw.mods.fml.common.network.Player; /** * サーバーとクライアントのデータの同期に必要なクラス - * + * * @author Lilly - * + * */ public class PacketHandler implements IPacketHandler { - @Override - public void onPacketData(NetworkManager manager, Packet250CustomPayload packet, Player player) { - if (packet.channel.equals("chemicraft")) { - ByteArrayDataInput var1 = ByteStreams.newDataInput(packet.data); - int x, y, z; + @Override + public void onPacketData(NetworkManager manager, Packet250CustomPayload packet, Player player) { + if (packet.channel.equals("chemicraft")) { + ByteArrayDataInput var1 = ByteStreams.newDataInput(packet.data); + int x, y, z; - // パケットからデータ読み込み - x = var1.readInt(); - y = var1.readInt(); - z = var1.readInt(); + // パケットからデータ読み込み + x = var1.readInt(); + y = var1.readInt(); + z = var1.readInt(); - // TileEntityを取得し読み込んだデータを送る - World world = ChemiCraft.proxy.getClientWorld(); - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - if (tileEntity instanceof TileEntityScienceCraftingTable) { - TileEntityScienceCraftingTable var2 = (TileEntityScienceCraftingTable) tileEntity; - var2.handlePacket(null); - } + // TileEntityを取得し読み込んだデータを送る + World world = ChemiCraft.proxy.getClientWorld(); + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + if (tileEntity instanceof TileEntityScienceCraftingTable) { + TileEntityScienceCraftingTable var2 = (TileEntityScienceCraftingTable) tileEntity; + var2.handlePacket(null); + } + } } - } - public static Packet getPacket(TileEntityScienceCraftingTable tileEntity) { - ByteArrayOutputStream var1 = new ByteArrayOutputStream(128); - DataOutputStream var2 = new DataOutputStream(var1); - int x, y, z; + public static Packet getPacket(TileEntityScienceCraftingTable tileEntity) { + ByteArrayOutputStream var1 = new ByteArrayOutputStream(128); + DataOutputStream var2 = new DataOutputStream(var1); + int x, y, z; - // データの用意 - x = tileEntity.xCoord; - y = tileEntity.yCoord; - z = tileEntity.zCoord; + // データの用意 + x = tileEntity.xCoord; + y = tileEntity.yCoord; + z = tileEntity.zCoord; - try { - var2.writeInt(x); - var2.writeInt(y); - var2.writeInt(z); - } catch (IOException e) { - e.printStackTrace(); - } + try { + var2.writeInt(x); + var2.writeInt(y); + var2.writeInt(z); + } catch (IOException e) { + e.printStackTrace(); + } - // パケットの作成 - Packet250CustomPayload packet = new Packet250CustomPayload(); - packet.channel = "chemicraft"; - packet.data = var1.toByteArray(); - packet.length = var1.size(); - packet.isChunkDataPacket = true; - return packet; - } + // パケットの作成 + Packet250CustomPayload packet = new Packet250CustomPayload(); + packet.channel = "chemicraft"; + packet.data = var1.toByteArray(); + packet.length = var1.size(); + packet.isChunkDataPacket = true; + return packet; + } } diff --git a/common/chemicraft/TileEntityScienceCraftingTable.java b/common/chemicraft/TileEntityScienceCraftingTable.java index 0568574..0e26ea7 100644 --- a/common/chemicraft/TileEntityScienceCraftingTable.java +++ b/common/chemicraft/TileEntityScienceCraftingTable.java @@ -11,108 +11,124 @@ import net.minecraftforge.common.ISidedInventory; public class TileEntityScienceCraftingTable extends TileEntity implements IInventory, ISidedInventory { - /** - * InventorySlotのItemStack配列 - */ - private ItemStack[] inventory = new ItemStack[17]; + /** + * InventorySlotのItemStack配列 + */ + private ItemStack[] inventory = new ItemStack[17]; - public TileEntityScienceCraftingTable() { - } + /** + * ActiveなTabの名前 + */ + private String activeTab; - @Override - public void updateEntity() { - super.updateEntity(); - } + public TileEntityScienceCraftingTable() { + //ActiveTabのデフォルトを設定 + this.activeTab = "Decomposition"; + } - @Override - public void readFromNBT(NBTTagCompound par1) { - } + @Override + public void updateEntity() { + super.updateEntity(); + } - @Override - public void writeToNBT(NBTTagCompound par1) { - } + @Override + public void readFromNBT(NBTTagCompound par1) { + par1.setString("activeTab", this.activeTab); + } - @Override - public int getSizeInventory() { - return inventory.length; - } + @Override + public void writeToNBT(NBTTagCompound par1) { + this.activeTab = par1.getString("activeTab"); + } - @Override - public ItemStack getStackInSlot(int var1) { - return inventory[var1]; - } + public String getActiveTab(){ + return this.activeTab; + } - @Override - public ItemStack decrStackSize(int var1, int var2) { - return null; - } + @Override + public int getSizeInventory() { + return inventory.length; + } - @Override - public ItemStack getStackInSlotOnClosing(int var1) { - return null; - } + @Override + public ItemStack getStackInSlot(int var1) { + return inventory[var1]; + } - @Override - public void setInventorySlotContents(int var1, ItemStack var2) { - } + @Override + public ItemStack decrStackSize(int var1, int var2) { + return null; + } - @Override - public String getInvName() { - return null; - } + @Override + public ItemStack getStackInSlotOnClosing(int var1) { + return null; + } - @Override - public int getInventoryStackLimit() { - return 64; - } + @Override + public void setInventorySlotContents(int var1, ItemStack var2) { + } - @Override - public boolean isUseableByPlayer(EntityPlayer var1) { - return false; - } + @Override + public String getInvName() { + return null; + } - @Override - public void openChest() { - } + @Override + public int getInventoryStackLimit() { + return 64; + } - @Override - public void closeChest() { - } + @Override + public boolean isUseableByPlayer(EntityPlayer var1) { + return false; + } - @Override - public Packet getDescriptionPacket() { - return PacketHandler.getPacket(this); - } + @Override + public void openChest() { + } - public void handlePacket(Object[] data) { - } + @Override + public void closeChest() { + } - @Override - public int getStartInventorySide(ForgeDirection side) { - return 0; - } + @Override + public Packet getDescriptionPacket() { + return PacketHandler.getPacket(this); + } - @Override - public int getSizeInventorySide(ForgeDirection side) { - return 0; - } + public void handlePacket(Object[] data) { + + } + + + @Override + public int getStartInventorySide(ForgeDirection side) { + return 0; + } + + + @Override + public int getSizeInventorySide(ForgeDirection side) { + return 0; + } } -- 2.11.0