001 package net.minecraft.network.packet;
002
003 import java.io.DataInputStream;
004 import java.io.DataOutputStream;
005 import java.io.IOException;
006 import net.minecraft.world.EnumGameType;
007 import net.minecraft.world.WorldType;
008
009 public class Packet9Respawn extends Packet
010 {
011 public int respawnDimension;
012
013 /**
014 * The difficulty setting. 0 through 3 for peaceful, easy, normal, hard. The client always sends 1.
015 */
016 public int difficulty;
017
018 /** Defaults to 128 */
019 public int worldHeight;
020 public EnumGameType gameType;
021 public WorldType terrainType;
022
023 public Packet9Respawn() {}
024
025 public Packet9Respawn(int par1, byte par2, WorldType par3WorldType, int par4, EnumGameType par5EnumGameType)
026 {
027 this.respawnDimension = par1;
028 this.difficulty = par2;
029 this.worldHeight = par4;
030 this.gameType = par5EnumGameType;
031 this.terrainType = par3WorldType;
032 }
033
034 /**
035 * Passes this Packet on to the NetHandler for processing.
036 */
037 public void processPacket(NetHandler par1NetHandler)
038 {
039 par1NetHandler.handleRespawn(this);
040 }
041
042 /**
043 * Abstract. Reads the raw packet data from the data stream.
044 */
045 public void readPacketData(DataInputStream par1DataInputStream) throws IOException
046 {
047 this.respawnDimension = par1DataInputStream.readInt();
048 this.difficulty = par1DataInputStream.readByte();
049 this.gameType = EnumGameType.getByID(par1DataInputStream.readByte());
050 this.worldHeight = par1DataInputStream.readShort();
051 String var2 = readString(par1DataInputStream, 16);
052 this.terrainType = WorldType.parseWorldType(var2);
053
054 if (this.terrainType == null)
055 {
056 this.terrainType = WorldType.DEFAULT;
057 }
058 }
059
060 /**
061 * Abstract. Writes the raw packet data to the data stream.
062 */
063 public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
064 {
065 par1DataOutputStream.writeInt(this.respawnDimension);
066 par1DataOutputStream.writeByte(this.difficulty);
067 par1DataOutputStream.writeByte(this.gameType.getID());
068 par1DataOutputStream.writeShort(this.worldHeight);
069 writeString(this.terrainType.getWorldTypeName(), par1DataOutputStream);
070 }
071
072 /**
073 * Abstract. Return the size of the packet (not counting the header).
074 */
075 public int getPacketSize()
076 {
077 return 8 + (this.terrainType == null ? 0 : this.terrainType.getWorldTypeName().length());
078 }
079 }