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 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 var2 = par1DataInputStream.readByte();
039 this.chatVisisble = var2 & 7;
040 this.chatColours = (var2 & 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 }