    001    package net.minecraft.network.packet;
    002
    003    import cpw.mods.fml.common.Side;
    004    import cpw.mods.fml.common.asm.SideOnly;
    005    import java.io.DataInputStream;
    006    import java.io.DataOutputStream;
    007    import java.io.IOException;
    008
    009    public class Packet2ClientProtocol extends Packet
    010    {
    011        private int protocolVersion;
    012        private String username;
    013        private String serverHost;
    014        private int serverPort;
    015
    016        public Packet2ClientProtocol() {}
    017
    018        @SideOnly(Side.CLIENT)
    019        public Packet2ClientProtocol(int par1, String par2Str, String par3Str, int par4)
    020        {
    021            this.protocolVersion = par1;
    022            this.username = par2Str;
    023            this.serverHost = par3Str;
    024            this.serverPort = par4;
    025        }
    026
    027        /**
    028         * Abstract. Reads the raw packet data from the data stream.
    029         */
    030        public void readPacketData(DataInputStream par1DataInputStream) throws IOException
    031        {
    032            this.protocolVersion = par1DataInputStream.readByte();
    033            this.username = readString(par1DataInputStream, 16);
    034            this.serverHost = readString(par1DataInputStream, 255);
    035            this.serverPort = par1DataInputStream.readInt();
    036        }
    037
    038        /**
    039         * Abstract. Writes the raw packet data to the data stream.
    040         */
    041        public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
    042        {
    043            par1DataOutputStream.writeByte(this.protocolVersion);
    044            writeString(this.username, par1DataOutputStream);
    045            writeString(this.serverHost, par1DataOutputStream);
    046            par1DataOutputStream.writeInt(this.serverPort);
    047        }
    048
    049        /**
    050         * Passes this Packet on to the NetHandler for processing.
    051         */
    052        public void processPacket(NetHandler par1NetHandler)
    053        {
    054            par1NetHandler.handleClientProtocol(this);
    055        }
    056
    057        /**
    058         * Abstract. Return the size of the packet (not counting the header).
    059         */
    060        public int getPacketSize()
    061        {
    062            return 3 + 2 * this.username.length();
    063        }
    064
    065        /**
    066         * Returns the protocol version.
    067         */
    068        public int getProtocolVersion()
    069        {
    070            return this.protocolVersion;
    071        }
    072
    073        /**
    074         * Returns the username.
    075         */
    076        public String getUsername()
    077        {
    078            return this.username;
    079        }
    080    }