Java tutorial
/** * Craftus Machinilorum * * * @Author Trevi Awater * @License Gnu Public License Version 3 * **/ package Trevi.Machinilorum.Packet; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.INetworkManager; import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import Trevi.Machinilorum.Handler.LogHandler; import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteStreams; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.network.IPacketHandler; import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.common.network.Player; public class PacketManager implements IPacketHandler { // If There Is Data To Be Send @Override public void onPacketData(INetworkManager INetworkManager, Packet250CustomPayload Packet, Player Player) { try { ByteArrayDataInput Data = ByteStreams.newDataInput(Packet.data); DataInputStream DataInput = new DataInputStream((InputStream) Data); int Var1 = Data.readInt(); int Var2 = Data.readInt(); int Var3 = Data.readInt(); World World = ((EntityPlayer) Player).worldObj; if (World != null) { TileEntity TileEntity = World.getBlockTileEntity(Var1, Var2, Var3); if (TileEntity != null) { if (TileEntity instanceof PacketReciever) { ((PacketReciever) TileEntity).handlePacketData(INetworkManager, Packet.channel, Data); TileEntity.readFromNBT(Packet.readNBTTagCompound(DataInput)); } } } } catch (Exception Exception) { LogHandler.Print("Could Not Sent Tag Compound Packet: " + Exception); } } // Trying To Sent Tile Packet public static void sendTileEntityPacket(TileEntity TileEntity, String Name, Object... SenderData) { ByteArrayOutputStream ByteArrayOutputStream = new ByteArrayOutputStream(); DataOutputStream DataOutputStream = new DataOutputStream(ByteArrayOutputStream); try { DataOutputStream.writeInt(TileEntity.xCoord); DataOutputStream.writeInt(TileEntity.yCoord); DataOutputStream.writeInt(TileEntity.zCoord); sendPacketToClient(Name, ByteArrayOutputStream, DataOutputStream, SenderData); } catch (IOException IOException) { LogHandler.Print("Could Not Sent Tile Entity Data: " + IOException); } } // Trying To Send Packet To Client public static void sendPacketToClient(String Channel, ByteArrayOutputStream ByteArrayOutputStream, DataOutputStream Data, Object... senderData) { try { for (Object DataValue : senderData) { if (DataValue instanceof Integer) { Data.writeInt((Integer) DataValue); } else if (DataValue instanceof Float) { Data.writeFloat((Float) DataValue); } else if (DataValue instanceof Double) { Data.writeDouble((Double) DataValue); } else if (DataValue instanceof Byte) { Data.writeByte((Byte) DataValue); } else if (DataValue instanceof Boolean) { Data.writeBoolean((Boolean) DataValue); } else if (DataValue instanceof String) { Data.writeUTF((String) DataValue); } else if (DataValue instanceof Short) { Data.writeShort((Short) DataValue); } else if (DataValue instanceof Long) { Data.writeLong((Long) DataValue); } } Packet250CustomPayload Packet = new Packet250CustomPayload(); Packet.channel = Channel; Packet.data = ByteArrayOutputStream.toByteArray(); Packet.length = Packet.data.length; Packet.isChunkDataPacket = true; FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager() .sendPacketToAllPlayers(Packet); LogHandler.Print("Packet Successfully Sent To Client."); } catch (IOException IOException) { LogHandler.Print("Failed To Sent Packet To Client: " + IOException); } } // Trying To Send Packet To Server public static void sendPacketToServer(String Channel, ByteArrayOutputStream ByteArrayOutputStream, DataOutputStream Data, Object... SenderData) { try { for (Object DataValue : SenderData) { if (DataValue instanceof Integer) { Data.writeInt((Integer) DataValue); } else if (DataValue instanceof Float) { Data.writeFloat((Float) DataValue); } else if (DataValue instanceof Double) { Data.writeDouble((Double) DataValue); } else if (DataValue instanceof Byte) { Data.writeByte((Byte) DataValue); } else if (DataValue instanceof Boolean) { Data.writeBoolean((Boolean) DataValue); } else if (DataValue instanceof String) { Data.writeUTF((String) DataValue); } else if (DataValue instanceof Short) { Data.writeShort((Short) DataValue); } else if (DataValue instanceof Long) { Data.writeLong((Long) DataValue); } } Packet250CustomPayload Packet = new Packet250CustomPayload(); Packet.channel = Channel; Packet.data = ByteArrayOutputStream.toByteArray(); Packet.length = Packet.data.length; Packet.isChunkDataPacket = true; PacketDispatcher.sendPacketToServer(Packet); LogHandler.Print("Packet Successfully Sent To Server."); } catch (IOException IOException) { LogHandler.Print("Failed To Sent Packet To Server: " + IOException); } } }