\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
- if (packet.channel.equals("chemicraft")) {\r
- ByteArrayDataInput var1 = ByteStreams.newDataInput(packet.data);\r
-\r
- World world;\r
- TileEntity tileEntity;\r
- TileEntityScienceCraftingTable var2;\r
-\r
- // TileEntityのx, y, z座標\r
- int x, y, z;\r
-\r
- // activeTab\r
- String activeTab;\r
-\r
- // 座標読み込み\r
- x = var1.readInt();\r
- y = var1.readInt();\r
- z = var1.readInt();\r
- // activeTab読み込み\r
- activeTab = var1.readUTF();\r
-\r
- // TileEntityを取得し読み込んだデータを送る\r
- // from Server to Client\r
- world = ChemiCraft.proxy.getClientWorld();\r
- tileEntity = world.getBlockTileEntity(x, y, z);\r
- if (tileEntity instanceof TileEntityScienceCraftingTable) {\r
- var2 = (TileEntityScienceCraftingTable) tileEntity;\r
- \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.handlePacket(new Object[] { activeTab });\r
- }\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
+\r
+ World worldClient;\r
+ World worldServer;\r
+ TileEntity tileEntity;\r
+ TileEntityChemicalCraftingTable var2;\r
+\r
+ // TileEntityのx, y, z座標\r
+ int x, y, z;\r
+\r
+ // 座標読み込み\r
+ x = var1.readInt();\r
+ y = var1.readInt();\r
+ z = var1.readInt();\r
+\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 TileEntityChemicalCraftingTable) {\r
+ var2 = (TileEntityChemicalCraftingTable) tileEntity;\r
+ var2.readPacket(var1);\r
+ }\r
+ return;\r
+ }\r
+ if(worldServer != null){\r
+ tileEntity = worldServer.getBlockTileEntity(x, y, z);\r
+ if (tileEntity instanceof TileEntityChemicalCraftingTable) {\r
+ var2 = (TileEntityChemicalCraftingTable) tileEntity;\r
+ var2.readPacket(var1);\r
+ }\r
+ return;\r
+ }\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
-\r
- // Blockのx, y, z座標\r
- int x, y, z;\r
-\r
- // activeTab\r
- String activeTab;\r
-\r
- // x, y, z座標を代入\r
- x = tileEntity.xCoord;\r
- y = tileEntity.yCoord;\r
- z = tileEntity.zCoord;\r
-\r
- // activeTabに代入\r
- activeTab = tileEntity.getActiveTab();\r
-\r
- try {\r
- // 座標書き込み\r
- var2.writeInt(x);\r
- var2.writeInt(y);\r
- var2.writeInt(z);\r
- // activeTab書き込み\r
- var2.writeUTF(activeTab);\r
- } catch (IOException e) {\r
- e.printStackTrace();\r
+ public static Packet getPacket(TileEntityChemicalCraftingTable tileEntity) {\r
+ ByteArrayOutputStream var1 = new ByteArrayOutputStream(128);\r
+ DataOutputStream var2 = new DataOutputStream(var1);\r
+\r
+ // Blockのx, y, z座標\r
+ int x, y, z;\r
+\r
+ // activeTab\r
+ String activeTab;\r
+\r
+ // x, y, z座標を代入\r
+ x = tileEntity.xCoord;\r
+ y = tileEntity.yCoord;\r
+ z = tileEntity.zCoord;\r
+\r
+ try {\r
+ // 座標書き込み\r
+ var2.writeInt(x);\r
+ var2.writeInt(y);\r
+ var2.writeInt(z);\r
+ tileEntity.writePacket(var2);\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
- // パケットの作成\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