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