3 import java.io.ByteArrayOutputStream;
\r
4 import java.io.DataInputStream;
\r
5 import java.io.DataOutputStream;
\r
6 import java.io.IOException;
\r
8 import com.google.common.io.ByteArrayDataInput;
\r
9 import com.google.common.io.ByteStreams;
\r
11 import net.minecraft.src.EntityPlayer;
\r
12 import net.minecraft.src.EntityPlayerMP;
\r
13 import net.minecraft.src.NetworkManager;
\r
14 import net.minecraft.src.Packet;
\r
15 import net.minecraft.src.Packet250CustomPayload;
\r
16 import net.minecraft.src.TileEntity;
\r
17 import net.minecraft.src.World;
\r
18 import cpw.mods.fml.common.network.IPacketHandler;
\r
19 import cpw.mods.fml.common.network.Player;
\r
22 * サーバーとクライアントのデータの同期に必要なクラス
\r
27 public class PacketHandler implements IPacketHandler {
\r
30 public void onPacketData(NetworkManager manager, Packet250CustomPayload packet, Player player) {
\r
31 if (packet.channel.equals("chemicraft")) {
\r
32 ByteArrayDataInput var1 = ByteStreams.newDataInput(packet.data);
\r
35 TileEntity tileEntity;
\r
36 TileEntityScienceCraftingTable var2;
\r
38 // TileEntityのx, y, z座標
\r
49 activeTab = var1.readUTF();
\r
51 // TileEntityを取得し読み込んだデータを送る
\r
52 // from Server to Client
\r
53 world = ChemiCraft.proxy.getClientWorld();
\r
54 tileEntity = world.getBlockTileEntity(x, y, z);
\r
55 if (tileEntity instanceof TileEntityScienceCraftingTable) {
\r
56 var2 = (TileEntityScienceCraftingTable) tileEntity;
\r
59 // from Client to Server
\r
60 world = ((EntityPlayer) player).worldObj;
\r
61 tileEntity = world.getBlockTileEntity(x, y, z);
\r
62 if (tileEntity instanceof TileEntityScienceCraftingTable) {
\r
63 var2 = (TileEntityScienceCraftingTable) tileEntity;
\r
64 var2.handlePacket(new Object[] { activeTab });
\r
70 public static Packet getPacket(TileEntityScienceCraftingTable tileEntity) {
\r
71 ByteArrayOutputStream var1 = new ByteArrayOutputStream(128);
\r
72 DataOutputStream var2 = new DataOutputStream(var1);
\r
81 x = tileEntity.xCoord;
\r
82 y = tileEntity.yCoord;
\r
83 z = tileEntity.zCoord;
\r
86 activeTab = tileEntity.getActiveTab();
\r
94 var2.writeUTF(activeTab);
\r
95 } catch (IOException e) {
\r
96 e.printStackTrace();
\r
100 Packet250CustomPayload packet = new Packet250CustomPayload();
\r
101 packet.channel = "chemicraft";
\r
102 packet.data = var1.toByteArray();
\r
103 packet.length = var1.size();
\r
104 packet.isChunkDataPacket = true;
\r