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 import net.minecraft.entity.player.PlayerCapabilities; 009 010 public class Packet202PlayerAbilities extends Packet 011 { 012 /** Disables player damage. */ 013 private boolean disableDamage = false; 014 015 /** Indicates whether the player is flying or not. */ 016 private boolean isFlying = false; 017 018 /** Whether or not to allow the player to fly when they double jump. */ 019 private boolean allowFlying = false; 020 021 /** 022 * Used to determine if creative mode is enabled, and therefore if items should be depleted on usage 023 */ 024 private boolean isCreativeMode = false; 025 private float flySpeed; 026 private float walkSpeed; 027 028 public Packet202PlayerAbilities() {} 029 030 public Packet202PlayerAbilities(PlayerCapabilities par1PlayerCapabilities) 031 { 032 this.setDisableDamage(par1PlayerCapabilities.disableDamage); 033 this.setFlying(par1PlayerCapabilities.isFlying); 034 this.setAllowFlying(par1PlayerCapabilities.allowFlying); 035 this.setCreativeMode(par1PlayerCapabilities.isCreativeMode); 036 this.setFlySpeed(par1PlayerCapabilities.getFlySpeed()); 037 this.setWalkSpeed(par1PlayerCapabilities.getWalkSpeed()); 038 } 039 040 /** 041 * Abstract. Reads the raw packet data from the data stream. 042 */ 043 public void readPacketData(DataInputStream par1DataInputStream) throws IOException 044 { 045 byte var2 = par1DataInputStream.readByte(); 046 this.setDisableDamage((var2 & 1) > 0); 047 this.setFlying((var2 & 2) > 0); 048 this.setAllowFlying((var2 & 4) > 0); 049 this.setCreativeMode((var2 & 8) > 0); 050 this.setFlySpeed((float)par1DataInputStream.readByte() / 255.0F); 051 this.setWalkSpeed((float)par1DataInputStream.readByte() / 255.0F); 052 } 053 054 /** 055 * Abstract. Writes the raw packet data to the data stream. 056 */ 057 public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException 058 { 059 byte var2 = 0; 060 061 if (this.getDisableDamage()) 062 { 063 var2 = (byte)(var2 | 1); 064 } 065 066 if (this.getFlying()) 067 { 068 var2 = (byte)(var2 | 2); 069 } 070 071 if (this.getAllowFlying()) 072 { 073 var2 = (byte)(var2 | 4); 074 } 075 076 if (this.isCreativeMode()) 077 { 078 var2 = (byte)(var2 | 8); 079 } 080 081 par1DataOutputStream.writeByte(var2); 082 par1DataOutputStream.writeByte((int)(this.flySpeed * 255.0F)); 083 par1DataOutputStream.writeByte((int)(this.walkSpeed * 255.0F)); 084 } 085 086 /** 087 * Passes this Packet on to the NetHandler for processing. 088 */ 089 public void processPacket(NetHandler par1NetHandler) 090 { 091 par1NetHandler.handlePlayerAbilities(this); 092 } 093 094 /** 095 * Abstract. Return the size of the packet (not counting the header). 096 */ 097 public int getPacketSize() 098 { 099 return 2; 100 } 101 102 public boolean getDisableDamage() 103 { 104 return this.disableDamage; 105 } 106 107 /** 108 * Sets whether damage is disabled or not. 109 */ 110 public void setDisableDamage(boolean par1) 111 { 112 this.disableDamage = par1; 113 } 114 115 public boolean getFlying() 116 { 117 return this.isFlying; 118 } 119 120 /** 121 * Sets whether we're currently flying or not. 122 */ 123 public void setFlying(boolean par1) 124 { 125 this.isFlying = par1; 126 } 127 128 public boolean getAllowFlying() 129 { 130 return this.allowFlying; 131 } 132 133 public void setAllowFlying(boolean par1) 134 { 135 this.allowFlying = par1; 136 } 137 138 public boolean isCreativeMode() 139 { 140 return this.isCreativeMode; 141 } 142 143 public void setCreativeMode(boolean par1) 144 { 145 this.isCreativeMode = par1; 146 } 147 148 @SideOnly(Side.CLIENT) 149 public float getFlySpeed() 150 { 151 return this.flySpeed; 152 } 153 154 /** 155 * Sets the flying speed. 156 */ 157 public void setFlySpeed(float par1) 158 { 159 this.flySpeed = par1; 160 } 161 162 @SideOnly(Side.CLIENT) 163 public float func_82558_j() 164 { 165 return this.walkSpeed; 166 } 167 168 /** 169 * Sets the walking speed. 170 */ 171 public void setWalkSpeed(float par1) 172 { 173 this.walkSpeed = par1; 174 } 175 176 /** 177 * only false for the abstract Packet class, all real packets return true 178 */ 179 public boolean isRealPacket() 180 { 181 return true; 182 } 183 184 /** 185 * eg return packet30entity.entityId == entityId; WARNING : will throw if you compare a packet to a different packet 186 * class 187 */ 188 public boolean containsSameEntityIDAs(Packet par1Packet) 189 { 190 return true; 191 } 192 }