    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}