OSDN Git Service

パケットの実装 あとは値を増やしていくごとに追加していくよ
authorlilly <lillyo_o@users.sourceforge.jp>
Sun, 9 Dec 2012 01:19:46 +0000 (10:19 +0900)
committerlilly <lillyo_o@users.sourceforge.jp>
Sun, 9 Dec 2012 01:19:46 +0000 (10:19 +0900)
Signed-off-by: lilly <lillyo_o@users.sourceforge.jp>
common/chemicraft/PacketHandler.java
common/chemicraft/TileEntityScienceCraftingTable.java

index 52e1535..a55e9c5 100644 (file)
@@ -1,18 +1,75 @@
 package chemicraft;\r
 \r
+import java.io.ByteArrayOutputStream;\r
+import java.io.DataInputStream;\r
+import java.io.DataOutputStream;\r
+import java.io.IOException;\r
+\r
+import com.google.common.io.ByteArrayDataInput;\r
+import com.google.common.io.ByteStreams;\r
+\r
 import net.minecraft.src.NetworkManager;\r
+import net.minecraft.src.Packet;\r
 import net.minecraft.src.Packet250CustomPayload;\r
+import net.minecraft.src.TileEntity;\r
+import net.minecraft.src.World;\r
 import cpw.mods.fml.common.network.IPacketHandler;\r
 import cpw.mods.fml.common.network.Player;\r
 \r
 /**\r
  * サーバーとクライアントのデータの同期に必要なクラス\r
+ * \r
  * @author Lilly\r
- *\r
+ * \r
  */\r
 public class PacketHandler implements IPacketHandler {\r
 \r
-       @Override\r
-       public void onPacketData(NetworkManager manager, Packet250CustomPayload packet, Player player){}\r
+    @Override\r
+    public void onPacketData(NetworkManager manager, Packet250CustomPayload packet, Player player) {\r
+       if (packet.channel.equals("chemicraft")) {\r
+           ByteArrayDataInput var1 = ByteStreams.newDataInput(packet.data);\r
+           int x, y, z;\r
+\r
+           // パケットからデータ読み込み\r
+           x = var1.readInt();\r
+           y = var1.readInt();\r
+           z = var1.readInt();\r
+\r
+           // TileEntityを取得し読み込んだデータを送る\r
+           World world = ChemiCraft.proxy.getClientWorld();\r
+           TileEntity tileEntity = world.getBlockTileEntity(x, y, z);\r
+           if (tileEntity instanceof TileEntityScienceCraftingTable) {\r
+               TileEntityScienceCraftingTable var2 = (TileEntityScienceCraftingTable) tileEntity;\r
+               var2.handlePacket(null);\r
+           }\r
+       }\r
+    }\r
+\r
+\r
+    public static Packet getPacket(TileEntityScienceCraftingTable tileEntity) {\r
+       ByteArrayOutputStream var1 = new ByteArrayOutputStream(128);\r
+       DataOutputStream var2 = new DataOutputStream(var1);\r
+       int x, y, z;\r
+\r
+       // データの用意\r
+       x = tileEntity.xCoord;\r
+       y = tileEntity.yCoord;\r
+       z = tileEntity.zCoord;\r
+\r
+       try {\r
+           var2.writeInt(x);\r
+           var2.writeInt(y);\r
+           var2.writeInt(z);\r
+       } catch (IOException e) {\r
+           e.printStackTrace();\r
+       }\r
 \r
+       // パケットの作成\r
+       Packet250CustomPayload packet = new Packet250CustomPayload();\r
+       packet.channel = "chemicraft";\r
+       packet.data = var1.toByteArray();\r
+       packet.length = var1.size();\r
+       packet.isChunkDataPacket = true;\r
+       return packet;\r
+    }\r
 }\r
index 8653f7f..0568574 100644 (file)
@@ -6,96 +6,113 @@ import net.minecraft.src.ItemStack;
 import net.minecraft.src.NBTTagCompound;
 import net.minecraft.src.Packet;
 import net.minecraft.src.TileEntity;
+import net.minecraftforge.common.ForgeDirection;
+import net.minecraftforge.common.ISidedInventory;
 
-public class TileEntityScienceCraftingTable extends TileEntity implements IInventory {
+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() {
+    }
 
-       public TileEntityScienceCraftingTable(){}
 
+    @Override
+    public void updateEntity() {
+       super.updateEntity();
+    }
 
 
-       @Override
-       public void updateEntity(){
-               super.updateEntity();
-       }
+    @Override
+    public void readFromNBT(NBTTagCompound par1) {
+    }
 
 
+    @Override
+    public void writeToNBT(NBTTagCompound par1) {
+    }
 
-       @Override
-       public void readFromNBT(NBTTagCompound par1){}
 
+    @Override
+    public int getSizeInventory() {
+       return inventory.length;
+    }
 
 
-       @Override
-       public void writeToNBT(NBTTagCompound par1){}
+    @Override
+    public ItemStack getStackInSlot(int var1) {
+       return inventory[var1];
+    }
 
 
+    @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 String getInvName() {
+       return null;
+    }
 
-       @Override
-       public ItemStack decrStackSize(int var1, int var2) {
-               return null;
-       }
 
+    @Override
+    public int getInventoryStackLimit() {
+       return 64;
+    }
 
 
-       @Override
-       public ItemStack getStackInSlotOnClosing(int var1) {
-               return null;
-       }
+    @Override
+    public boolean isUseableByPlayer(EntityPlayer var1) {
+       return false;
+    }
 
 
+    @Override
+    public void openChest() {
+    }
 
-       @Override
-       public void setInventorySlotContents(int var1, ItemStack var2) {}
 
+    @Override
+    public void closeChest() {
+    }
 
 
-       @Override
-       public String getInvName() {
-               return null;
-       }
+    @Override
+    public Packet getDescriptionPacket() {
+       return PacketHandler.getPacket(this);
+    }
 
 
+    public void handlePacket(Object[] data) {
 
-       @Override
-       public int getInventoryStackLimit() {
-               return 64;
-       }
+    }
 
 
+    @Override
+    public int getStartInventorySide(ForgeDirection side) {
+       return 0;
+    }
 
-       @Override
-       public boolean isUseableByPlayer(EntityPlayer var1) {
-               return false;
-       }
 
-
-
-       @Override
-       public void openChest() {}
-
-
-
-       @Override
-       public void closeChest() {}
+    @Override
+    public int getSizeInventorySide(ForgeDirection side) {
+       return 0;
+    }
 }