001    package net.minecraft.network.packet;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.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    }