001package net.minecraft.network.packet;
002
003import cpw.mods.fml.relauncher.Side;
004import cpw.mods.fml.relauncher.SideOnly;
005import java.io.DataInputStream;
006import java.io.DataOutputStream;
007import java.io.IOException;
008
009public class Packet204ClientInfo extends Packet
010{
011    private String language;
012    private int renderDistance;
013    private int chatVisisble;
014    private boolean chatColours;
015    private int gameDifficulty;
016    private boolean showCape;
017
018    public Packet204ClientInfo() {}
019
020    @SideOnly(Side.CLIENT)
021    public Packet204ClientInfo(String par1Str, int par2, int par3, boolean par4, int par5, boolean par6)
022    {
023        this.language = par1Str;
024        this.renderDistance = par2;
025        this.chatVisisble = par3;
026        this.chatColours = par4;
027        this.gameDifficulty = par5;
028        this.showCape = par6;
029    }
030
031    /**
032     * Abstract. Reads the raw packet data from the data stream.
033     */
034    public void readPacketData(DataInputStream par1DataInputStream) throws IOException
035    {
036        this.language = readString(par1DataInputStream, 7);
037        this.renderDistance = par1DataInputStream.readByte();
038        byte b0 = par1DataInputStream.readByte();
039        this.chatVisisble = b0 & 7;
040        this.chatColours = (b0 & 8) == 8;
041        this.gameDifficulty = par1DataInputStream.readByte();
042        this.showCape = par1DataInputStream.readBoolean();
043    }
044
045    /**
046     * Abstract. Writes the raw packet data to the data stream.
047     */
048    public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
049    {
050        writeString(this.language, par1DataOutputStream);
051        par1DataOutputStream.writeByte(this.renderDistance);
052        par1DataOutputStream.writeByte(this.chatVisisble | (this.chatColours ? 1 : 0) << 3);
053        par1DataOutputStream.writeByte(this.gameDifficulty);
054        par1DataOutputStream.writeBoolean(this.showCape);
055    }
056
057    /**
058     * Passes this Packet on to the NetHandler for processing.
059     */
060    public void processPacket(NetHandler par1NetHandler)
061    {
062        par1NetHandler.handleClientInfo(this);
063    }
064
065    /**
066     * Abstract. Return the size of the packet (not counting the header).
067     */
068    public int getPacketSize()
069    {
070        return 7;
071    }
072
073    public String getLanguage()
074    {
075        return this.language;
076    }
077
078    public int getRenderDistance()
079    {
080        return this.renderDistance;
081    }
082
083    public int getChatVisibility()
084    {
085        return this.chatVisisble;
086    }
087
088    public boolean getChatColours()
089    {
090        return this.chatColours;
091    }
092
093    public int getDifficulty()
094    {
095        return this.gameDifficulty;
096    }
097
098    public boolean getShowCape()
099    {
100        return this.showCape;
101    }
102
103    /**
104     * only false for the abstract Packet class, all real packets return true
105     */
106    public boolean isRealPacket()
107    {
108        return true;
109    }
110
111    /**
112     * eg return packet30entity.entityId == entityId; WARNING : will throw if you compare a packet to a different packet
113     * class
114     */
115    public boolean containsSameEntityIDAs(Packet par1Packet)
116    {
117        return true;
118    }
119}