OSDN Git Service

GUI同期化できたのでコミット
authormozipi <mozipi@users.sourceforge.jp>
Fri, 14 Dec 2012 07:54:31 +0000 (16:54 +0900)
committermozipi <mozipi@users.sourceforge.jp>
Fri, 14 Dec 2012 07:54:31 +0000 (16:54 +0900)
common/chemicraft/CommonProxy.java
common/chemicraft/ContainerScienceCraftingTable.java
common/chemicraft/GuiScienceCraftingTable.java
common/chemicraft/PacketHandler.java
common/chemicraft/TileEntityScienceCraftingTable.java
src/chemicraft/client/ClientProxy.java

index a17cad0..6ecb323 100644 (file)
@@ -3,6 +3,7 @@ package chemicraft;
 import net.minecraft.src.EntityPlayer;
 import net.minecraft.src.TileEntity;
 import net.minecraft.src.World;
+import cpw.mods.fml.client.FMLClientHandler;
 import cpw.mods.fml.common.network.IGuiHandler;
 
 public class CommonProxy implements IGuiHandler {
@@ -29,4 +30,8 @@ public class CommonProxy implements IGuiHandler {
                return null;
        }
 
+       public World getClientWorld(){
+               return null;
+       }
+
 }
\ No newline at end of file
index d9204a7..b26253f 100644 (file)
@@ -26,21 +26,23 @@ public class ContainerScienceCraftingTable extends Container {
        private int posZ;
 
 
+       /**
+        * the TileEntity.
+        */
+       private TileEntityScienceCraftingTable tileEntity;
+
+
 
        public ContainerScienceCraftingTable(EntityPlayer par1EntityPlayer, TileEntityScienceCraftingTable par2)
        {
+               super();
                this.worldObj = par2.worldObj;
                this.posX = par2.xCoord;
                this.posY = par2.yCoord;
                this.posZ = par2.zCoord;
+               this.tileEntity = par2;
                //GenerateInventory
                this.generateSlots(par2.getActiveTab(), par2.getActiveInventory());
-               System.out.println("----------------------------------------------------------------------------------");
-               if(par2.getActiveInventory() != null){
-                       for(int i = 0;i < par2.getActiveInventory().getSizeInventory();i++){
-                               System.out.println(par2.getActiveInventory().getStackInSlot(i));
-                       }
-               }
                //GeneratePlayerInventory
                int var3;
 
@@ -84,6 +86,8 @@ public class ContainerScienceCraftingTable extends Container {
                return null;
        }
 
+
+
        private void generateSlots(String activeTabs, IInventory inventory){
                if(activeTabs.equals("Decomposition")){
                        int count = 0;
index fdac6c0..c952bbc 100644 (file)
@@ -12,6 +12,7 @@ import net.minecraft.src.ItemStack;
 import cpw.mods.fml.common.Side;
 import cpw.mods.fml.common.asm.SideOnly;
 import cpw.mods.fml.common.network.PacketDispatcher;
+import cpw.mods.fml.common.network.Player;
 
 @SideOnly(Side.CLIENT)
 public class GuiScienceCraftingTable extends GuiContainer {
@@ -54,12 +55,19 @@ public class GuiScienceCraftingTable extends GuiContainer {
        private InventoryPlayer inventoryPlayer;
 
 
+       /**
+        * the Container
+        */
+       private ContainerScienceCraftingTable container;
+
+
 
        public GuiScienceCraftingTable(EntityPlayer par1EntityPlayer, TileEntityScienceCraftingTable par2){
                super(new ContainerScienceCraftingTable(par1EntityPlayer, par2));
                //TileEntityを設定
                this.inventoryPlayer = par1EntityPlayer.inventory;
                this.tileEntity = par2;
+               this.container = (ContainerScienceCraftingTable) this.inventorySlots;
                //TabListにTabを追加する
                this.addTabs(0, "Decomposition", new ItemStack(Block.tnt.blockID, 1, 1));
                this.addTabs(1, "Test", new ItemStack(Block.bedrock.blockID, 1, 1));
@@ -106,8 +114,6 @@ public class GuiScienceCraftingTable extends GuiContainer {
                        this.mc.renderEngine.bindTexture(this.guiImageMap.get("Decomposition"));
                        this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize);
                }
-               //TileEntity of ActiveTab Reset.
-               this.tileEntity.setActiveTab(this.tileEntity.getActiveTab());
        }
 
 
index d03f227..a3a072f 100644 (file)
@@ -30,7 +30,8 @@ public class PacketHandler implements IPacketHandler {
                if (packet.channel.equals("chemicraft")) {\r
                        ByteArrayDataInput var1 = ByteStreams.newDataInput(packet.data);\r
 \r
-                       World world;\r
+                       World worldClient;\r
+                       World worldServer;\r
                        TileEntity tileEntity;\r
                        TileEntityScienceCraftingTable var2;\r
 \r
@@ -42,12 +43,23 @@ public class PacketHandler implements IPacketHandler {
                        y = var1.readInt();\r
                        z = var1.readInt();\r
 \r
-                       // from Client to Server\r
-                       world = ((EntityPlayer) player).worldObj;\r
-                       tileEntity = world.getBlockTileEntity(x, y, z);\r
-                       if (tileEntity instanceof TileEntityScienceCraftingTable) {\r
-                               var2 = (TileEntityScienceCraftingTable) tileEntity;\r
-                               var2.readPacket(var1);\r
+                       worldClient = ChemiCraft.proxy.getClientWorld();\r
+                       worldServer = ((EntityPlayer)player).worldObj;\r
+                       if(worldClient != null){\r
+                               tileEntity = worldClient.getBlockTileEntity(x, y, z);\r
+                               if (tileEntity instanceof TileEntityScienceCraftingTable) {\r
+                                       var2 = (TileEntityScienceCraftingTable) tileEntity;\r
+                                       var2.readPacket(var1);\r
+                               }\r
+                               return;\r
+                       }\r
+                       if(worldServer != null){\r
+                               tileEntity = worldServer.getBlockTileEntity(x, y, z);\r
+                               if (tileEntity instanceof TileEntityScienceCraftingTable) {\r
+                                       var2 = (TileEntityScienceCraftingTable) tileEntity;\r
+                                       var2.readPacket(var1);\r
+                               }\r
+                               return;\r
                        }\r
                }\r
        }\r
index d824437..162fe7d 100644 (file)
@@ -2,15 +2,14 @@ package chemicraft;
 
 import java.io.DataOutputStream;
 
-import net.minecraft.src.EntityPlayer;
 import net.minecraft.src.IInventory;
 import net.minecraft.src.ItemStack;
 import net.minecraft.src.NBTTagCompound;
 import net.minecraft.src.NBTTagList;
 import net.minecraft.src.Packet;
 import net.minecraft.src.TileEntity;
-import net.minecraftforge.common.ForgeDirection;
-import net.minecraftforge.common.ISidedInventory;
+import net.minecraft.src.WorldClient;
+import net.minecraft.src.WorldServer;
 
 import com.google.common.io.ByteArrayDataInput;
 
@@ -21,7 +20,7 @@ public class TileEntityScienceCraftingTable extends TileEntity {
        /**
         * DecompositionのInventory
         */
-       private IInventory decompositionInv = new InventoryDecomposition();
+       public IInventory decompositionInv = new InventoryDecomposition();
 
        /**
         * ActiveなTabの名前
@@ -35,7 +34,7 @@ public class TileEntityScienceCraftingTable extends TileEntity {
                this.activeTab = "Decomposition";
        }
 
-
+       int time = 0;
        @Override
        public void updateEntity() {
                super.updateEntity();
@@ -112,6 +111,14 @@ public class TileEntityScienceCraftingTable extends TileEntity {
        public void readPacket(ByteArrayDataInput data) {
                try {
                        this.activeTab = data.readUTF();
+                       for(int i = 0;i < this.decompositionInv.getSizeInventory();i++){
+                               int id = data.readInt();
+                               int damage = data.readInt();
+                               int size = data.readInt();
+                               if(id != 0){
+                                       this.decompositionInv.setInventorySlotContents(i, new ItemStack(id, size, damage));
+                               }
+                       }
                } catch (Exception e) {
                        e.printStackTrace();
                }
@@ -121,6 +128,17 @@ public class TileEntityScienceCraftingTable extends TileEntity {
        public void writePacket(DataOutputStream dos){
                try {
                        dos.writeUTF(this.activeTab);
+                       for(int i = 0;i < this.decompositionInv.getSizeInventory();i++){
+                               if(this.decompositionInv.getStackInSlot(i) != null){
+                                       dos.writeInt(this.decompositionInv.getStackInSlot(i).itemID);
+                                       dos.writeInt(this.decompositionInv.getStackInSlot(i).getItemDamage());
+                                       dos.writeInt(this.decompositionInv.getStackInSlot(i).stackSize);
+                               }else{
+                                       dos.writeInt(0);
+                                       dos.writeInt(0);
+                                       dos.writeInt(0);
+                               }
+                       }
                } catch (Exception e) {
                        e.printStackTrace();
                }
index 0399f32..c5c4805 100644 (file)
@@ -26,4 +26,9 @@ public class ClientProxy extends CommonProxy {
                return null;
        }
 
+       @Override
+       public World getClientWorld(){
+               return FMLClientHandler.instance().getClient().theWorld;
+       }
+
 }