Advertisement
Guest User

NetClientHandler.java

a guest
Jun 21st, 2013
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 63.65 KB | None | 0 0
  1. package net.minecraft.src;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.ByteArrayInputStream;
  5. import java.io.DataInputStream;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8. import java.math.BigInteger;
  9. import java.net.InetAddress;
  10. import java.net.Socket;
  11. import java.net.URL;
  12. import java.net.URLEncoder;
  13. import java.security.PublicKey;
  14. import java.util.ArrayList;
  15. import java.util.HashMap;
  16. import java.util.Iterator;
  17. import java.util.List;
  18. import java.util.Map;
  19. import java.util.Random;
  20. import javax.crypto.SecretKey;
  21. import net.minecraft.client.Minecraft;
  22. import org.lwjgl.input.Keyboard;
  23.  
  24. public class NetClientHandler extends NetHandler
  25. {
  26. /** True if kicked or disconnected from the server. */
  27. private boolean disconnected = false;
  28.  
  29. /** Reference to the NetworkManager object. */
  30. private INetworkManager netManager;
  31. public String field_72560_a;
  32.  
  33. /** Reference to the Minecraft object. */
  34. private Minecraft mc;
  35. private WorldClient worldClient;
  36.  
  37. /**
  38. * True if the client has finished downloading terrain and may spawn. Set upon receipt of a player position packet,
  39. * reset upon respawning.
  40. */
  41. private boolean doneLoadingTerrain = false;
  42. public MapStorage mapStorage = new MapStorage((ISaveHandler)null);
  43.  
  44. /** A HashMap of all player names and their player information objects */
  45. private Map playerInfoMap = new HashMap();
  46.  
  47. /**
  48. * An ArrayList of GuiPlayerInfo (includes all the players' GuiPlayerInfo on the current server)
  49. */
  50. public List playerInfoList = new ArrayList();
  51. public int currentServerMaxPlayers = 20;
  52. private GuiScreen field_98183_l = null;
  53.  
  54. /** RNG. */
  55. Random rand = new Random();
  56.  
  57. public NetClientHandler(Minecraft par1Minecraft, String par2Str, int par3) throws IOException
  58. {
  59. this.mc = par1Minecraft;
  60. Socket var4 = new Socket(InetAddress.getByName(par2Str), par3);
  61. this.netManager = new TcpConnection(par1Minecraft.getLogAgent(), var4, "Client", this);
  62. }
  63.  
  64. public NetClientHandler(Minecraft par1Minecraft, String par2Str, int par3, GuiScreen par4GuiScreen) throws IOException
  65. {
  66. this.mc = par1Minecraft;
  67. this.field_98183_l = par4GuiScreen;
  68. Socket var5 = new Socket(InetAddress.getByName(par2Str), par3);
  69. this.netManager = new TcpConnection(par1Minecraft.getLogAgent(), var5, "Client", this);
  70. }
  71.  
  72. public NetClientHandler(Minecraft par1Minecraft, IntegratedServer par2IntegratedServer) throws IOException
  73. {
  74. this.mc = par1Minecraft;
  75. this.netManager = new MemoryConnection(par1Minecraft.getLogAgent(), this);
  76. par2IntegratedServer.getServerListeningThread().func_71754_a((MemoryConnection)this.netManager, par1Minecraft.session.username);
  77. }
  78.  
  79. /**
  80. * sets netManager and worldClient to null
  81. */
  82. public void cleanup()
  83. {
  84. if (this.netManager != null)
  85. {
  86. this.netManager.wakeThreads();
  87. }
  88.  
  89. this.netManager = null;
  90. this.worldClient = null;
  91. }
  92.  
  93. /**
  94. * Processes the packets that have been read since the last call to this function.
  95. */
  96. public void processReadPackets()
  97. {
  98. if (!this.disconnected && this.netManager != null)
  99. {
  100. this.netManager.processReadPackets();
  101. }
  102.  
  103. if (this.netManager != null)
  104. {
  105. this.netManager.wakeThreads();
  106. }
  107. }
  108.  
  109. public void handleServerAuthData(Packet253ServerAuthData par1Packet253ServerAuthData)
  110. {
  111. String var2 = par1Packet253ServerAuthData.getServerId().trim();
  112. PublicKey var3 = par1Packet253ServerAuthData.getPublicKey();
  113. SecretKey var4 = CryptManager.createNewSharedKey();
  114.  
  115. if (!"-".equals(var2))
  116. {
  117. String var5 = (new BigInteger(CryptManager.getServerIdHash(var2, var3, var4))).toString(16);
  118. String var6 = this.sendSessionRequest(this.mc.session.username, this.mc.session.sessionId, var5);
  119.  
  120. if (!"ok".equalsIgnoreCase(var6))
  121. {
  122. this.netManager.networkShutdown("disconnect.loginFailedInfo", new Object[] {var6});
  123. return;
  124. }
  125. }
  126.  
  127. this.addToSendQueue(new Packet252SharedKey(var4, var3, par1Packet253ServerAuthData.getVerifyToken()));
  128. }
  129.  
  130. /**
  131. * Send request to http://session.minecraft.net with user's sessionId and serverId hash
  132. */
  133. private String sendSessionRequest(String par1Str, String par2Str, String par3Str)
  134. {
  135. try
  136. {
  137. URL var4 = new URL("http://session.minecraft.net/game/joinserver.jsp?user=" + urlEncode(par1Str) + "&sessionId=" + urlEncode(par2Str) + "&serverId=" + urlEncode(par3Str));
  138. BufferedReader var5 = new BufferedReader(new InputStreamReader(var4.openStream()));
  139. String var6 = var5.readLine();
  140. var5.close();
  141. return var6;
  142. }
  143. catch (IOException var7)
  144. {
  145. return var7.toString();
  146. }
  147. }
  148.  
  149. /**
  150. * Encode the given string for insertion into a URL
  151. */
  152. private static String urlEncode(String par0Str) throws IOException
  153. {
  154. return URLEncoder.encode(par0Str, "UTF-8");
  155. }
  156.  
  157. public void handleSharedKey(Packet252SharedKey par1Packet252SharedKey)
  158. {
  159. this.addToSendQueue(new Packet205ClientCommand(0));
  160. }
  161.  
  162. public void handleLogin(Packet1Login par1Packet1Login)
  163. {
  164. this.mc.playerController = new PlayerControllerMP(this.mc, this);
  165. this.mc.statFileWriter.readStat(StatList.joinMultiplayerStat, 1);
  166. this.worldClient = new WorldClient(this, new WorldSettings(0L, par1Packet1Login.gameType, false, par1Packet1Login.hardcoreMode, par1Packet1Login.terrainType), par1Packet1Login.dimension, par1Packet1Login.difficultySetting, this.mc.mcProfiler, this.mc.getLogAgent());
  167. this.worldClient.isRemote = true;
  168. this.mc.loadWorld(this.worldClient);
  169. this.mc.thePlayer.dimension = par1Packet1Login.dimension;
  170. this.mc.displayGuiScreen(new GuiDownloadTerrain(this));
  171. this.mc.thePlayer.entityId = par1Packet1Login.clientEntityId;
  172. this.currentServerMaxPlayers = par1Packet1Login.maxPlayers;
  173. this.mc.playerController.setGameType(par1Packet1Login.gameType);
  174. this.mc.gameSettings.sendSettingsToServer();
  175. }
  176.  
  177. public void handleVehicleSpawn(Packet23VehicleSpawn par1Packet23VehicleSpawn)
  178. {
  179. double var2 = (double)par1Packet23VehicleSpawn.xPosition / 32.0D;
  180. double var4 = (double)par1Packet23VehicleSpawn.yPosition / 32.0D;
  181. double var6 = (double)par1Packet23VehicleSpawn.zPosition / 32.0D;
  182. Object var8 = null;
  183.  
  184. if (par1Packet23VehicleSpawn.type == 10)
  185. {
  186. var8 = EntityMinecart.createMinecart(this.worldClient, var2, var4, var6, par1Packet23VehicleSpawn.throwerEntityId);
  187. }
  188. else if (par1Packet23VehicleSpawn.type == 90)
  189. {
  190. Entity var9 = this.getEntityByID(par1Packet23VehicleSpawn.throwerEntityId);
  191.  
  192. if (var9 instanceof EntityPlayer)
  193. {
  194. var8 = new EntityFishHook(this.worldClient, var2, var4, var6, (EntityPlayer)var9);
  195. }
  196.  
  197. par1Packet23VehicleSpawn.throwerEntityId = 0;
  198. }
  199. else if (par1Packet23VehicleSpawn.type == 60)
  200. {
  201. var8 = new EntityArrow(this.worldClient, var2, var4, var6);
  202. }
  203. else if (par1Packet23VehicleSpawn.type == 61)
  204. {
  205. var8 = new EntitySnowball(this.worldClient, var2, var4, var6);
  206. }
  207. else if (par1Packet23VehicleSpawn.type == 71)
  208. {
  209. var8 = new EntityItemFrame(this.worldClient, (int)var2, (int)var4, (int)var6, par1Packet23VehicleSpawn.throwerEntityId);
  210. par1Packet23VehicleSpawn.throwerEntityId = 0;
  211. }
  212. else if (par1Packet23VehicleSpawn.type == 65)
  213. {
  214. var8 = new EntityEnderPearl(this.worldClient, var2, var4, var6);
  215. }
  216. else if (par1Packet23VehicleSpawn.type == 72)
  217. {
  218. var8 = new EntityEnderEye(this.worldClient, var2, var4, var6);
  219. }
  220. else if (par1Packet23VehicleSpawn.type == 76)
  221. {
  222. var8 = new EntityFireworkRocket(this.worldClient, var2, var4, var6, (ItemStack)null);
  223. }
  224. else if (par1Packet23VehicleSpawn.type == 63)
  225. {
  226. var8 = new EntityLargeFireball(this.worldClient, var2, var4, var6, (double)par1Packet23VehicleSpawn.speedX / 8000.0D, (double)par1Packet23VehicleSpawn.speedY / 8000.0D, (double)par1Packet23VehicleSpawn.speedZ / 8000.0D);
  227. par1Packet23VehicleSpawn.throwerEntityId = 0;
  228. }
  229. else if (par1Packet23VehicleSpawn.type == 64)
  230. {
  231. var8 = new EntitySmallFireball(this.worldClient, var2, var4, var6, (double)par1Packet23VehicleSpawn.speedX / 8000.0D, (double)par1Packet23VehicleSpawn.speedY / 8000.0D, (double)par1Packet23VehicleSpawn.speedZ / 8000.0D);
  232. par1Packet23VehicleSpawn.throwerEntityId = 0;
  233. }
  234. else if (par1Packet23VehicleSpawn.type == 66)
  235. {
  236. var8 = new EntityWitherSkull(this.worldClient, var2, var4, var6, (double)par1Packet23VehicleSpawn.speedX / 8000.0D, (double)par1Packet23VehicleSpawn.speedY / 8000.0D, (double)par1Packet23VehicleSpawn.speedZ / 8000.0D);
  237. par1Packet23VehicleSpawn.throwerEntityId = 0;
  238. }
  239. else if (par1Packet23VehicleSpawn.type == 62)
  240. {
  241. var8 = new EntityEgg(this.worldClient, var2, var4, var6);
  242. }
  243. else if (par1Packet23VehicleSpawn.type == 73)
  244. {
  245. var8 = new EntityPotion(this.worldClient, var2, var4, var6, par1Packet23VehicleSpawn.throwerEntityId);
  246. par1Packet23VehicleSpawn.throwerEntityId = 0;
  247. }
  248. else if (par1Packet23VehicleSpawn.type == 75)
  249. {
  250. var8 = new EntityExpBottle(this.worldClient, var2, var4, var6);
  251. par1Packet23VehicleSpawn.throwerEntityId = 0;
  252. }
  253. else if (par1Packet23VehicleSpawn.type == 1)
  254. {
  255. var8 = new EntityBoat(this.worldClient, var2, var4, var6);
  256. }
  257. else if (par1Packet23VehicleSpawn.type == 50)
  258. {
  259. var8 = new EntityTNTPrimed(this.worldClient, var2, var4, var6, (EntityLiving)null);
  260. }
  261. else if (par1Packet23VehicleSpawn.type == 51)
  262. {
  263. var8 = new EntityEnderCrystal(this.worldClient, var2, var4, var6);
  264. }
  265. else if (par1Packet23VehicleSpawn.type == 2)
  266. {
  267. var8 = new EntityItem(this.worldClient, var2, var4, var6);
  268. }
  269. else if (par1Packet23VehicleSpawn.type == 70)
  270. {
  271. var8 = new EntityFallingSand(this.worldClient, var2, var4, var6, par1Packet23VehicleSpawn.throwerEntityId & 65535, par1Packet23VehicleSpawn.throwerEntityId >> 16);
  272. par1Packet23VehicleSpawn.throwerEntityId = 0;
  273. }
  274.  
  275. if (var8 != null)
  276. {
  277. ((Entity)var8).serverPosX = par1Packet23VehicleSpawn.xPosition;
  278. ((Entity)var8).serverPosY = par1Packet23VehicleSpawn.yPosition;
  279. ((Entity)var8).serverPosZ = par1Packet23VehicleSpawn.zPosition;
  280. ((Entity)var8).rotationPitch = (float)(par1Packet23VehicleSpawn.pitch * 360) / 256.0F;
  281. ((Entity)var8).rotationYaw = (float)(par1Packet23VehicleSpawn.yaw * 360) / 256.0F;
  282. Entity[] var12 = ((Entity)var8).getParts();
  283.  
  284. if (var12 != null)
  285. {
  286. int var10 = par1Packet23VehicleSpawn.entityId - ((Entity)var8).entityId;
  287.  
  288. for (int var11 = 0; var11 < var12.length; ++var11)
  289. {
  290. var12[var11].entityId += var10;
  291. }
  292. }
  293.  
  294. ((Entity)var8).entityId = par1Packet23VehicleSpawn.entityId;
  295. this.worldClient.addEntityToWorld(par1Packet23VehicleSpawn.entityId, (Entity)var8);
  296.  
  297. if (par1Packet23VehicleSpawn.throwerEntityId > 0)
  298. {
  299. if (par1Packet23VehicleSpawn.type == 60)
  300. {
  301. Entity var13 = this.getEntityByID(par1Packet23VehicleSpawn.throwerEntityId);
  302.  
  303. if (var13 instanceof EntityLiving)
  304. {
  305. EntityArrow var14 = (EntityArrow)var8;
  306. var14.shootingEntity = var13;
  307. }
  308. }
  309.  
  310. ((Entity)var8).setVelocity((double)par1Packet23VehicleSpawn.speedX / 8000.0D, (double)par1Packet23VehicleSpawn.speedY / 8000.0D, (double)par1Packet23VehicleSpawn.speedZ / 8000.0D);
  311. }
  312. }
  313. }
  314.  
  315. /**
  316. * Handle a entity experience orb packet.
  317. */
  318. public void handleEntityExpOrb(Packet26EntityExpOrb par1Packet26EntityExpOrb)
  319. {
  320. EntityXPOrb var2 = new EntityXPOrb(this.worldClient, (double)par1Packet26EntityExpOrb.posX, (double)par1Packet26EntityExpOrb.posY, (double)par1Packet26EntityExpOrb.posZ, par1Packet26EntityExpOrb.xpValue);
  321. var2.serverPosX = par1Packet26EntityExpOrb.posX;
  322. var2.serverPosY = par1Packet26EntityExpOrb.posY;
  323. var2.serverPosZ = par1Packet26EntityExpOrb.posZ;
  324. var2.rotationYaw = 0.0F;
  325. var2.rotationPitch = 0.0F;
  326. var2.entityId = par1Packet26EntityExpOrb.entityId;
  327. this.worldClient.addEntityToWorld(par1Packet26EntityExpOrb.entityId, var2);
  328. }
  329.  
  330. /**
  331. * Handles weather packet
  332. */
  333. public void handleWeather(Packet71Weather par1Packet71Weather)
  334. {
  335. double var2 = (double)par1Packet71Weather.posX / 32.0D;
  336. double var4 = (double)par1Packet71Weather.posY / 32.0D;
  337. double var6 = (double)par1Packet71Weather.posZ / 32.0D;
  338. EntityLightningBolt var8 = null;
  339.  
  340. if (par1Packet71Weather.isLightningBolt == 1)
  341. {
  342. var8 = new EntityLightningBolt(this.worldClient, var2, var4, var6);
  343. }
  344.  
  345. if (var8 != null)
  346. {
  347. var8.serverPosX = par1Packet71Weather.posX;
  348. var8.serverPosY = par1Packet71Weather.posY;
  349. var8.serverPosZ = par1Packet71Weather.posZ;
  350. var8.rotationYaw = 0.0F;
  351. var8.rotationPitch = 0.0F;
  352. var8.entityId = par1Packet71Weather.entityID;
  353. this.worldClient.addWeatherEffect(var8);
  354. }
  355. }
  356.  
  357. /**
  358. * Packet handler
  359. */
  360. public void handleEntityPainting(Packet25EntityPainting par1Packet25EntityPainting)
  361. {
  362. EntityPainting var2 = new EntityPainting(this.worldClient, par1Packet25EntityPainting.xPosition, par1Packet25EntityPainting.yPosition, par1Packet25EntityPainting.zPosition, par1Packet25EntityPainting.direction, par1Packet25EntityPainting.title);
  363. this.worldClient.addEntityToWorld(par1Packet25EntityPainting.entityId, var2);
  364. }
  365.  
  366. /**
  367. * Packet handler
  368. */
  369. public void handleEntityVelocity(Packet28EntityVelocity par1Packet28EntityVelocity)
  370. {
  371. Entity var2 = this.getEntityByID(par1Packet28EntityVelocity.entityId);
  372.  
  373. if (var2 != null)
  374. {
  375. var2.setVelocity((double)par1Packet28EntityVelocity.motionX / 8000.0D, (double)par1Packet28EntityVelocity.motionY / 8000.0D, (double)par1Packet28EntityVelocity.motionZ / 8000.0D);
  376. }
  377. }
  378.  
  379. /**
  380. * Packet handler
  381. */
  382. public void handleEntityMetadata(Packet40EntityMetadata par1Packet40EntityMetadata)
  383. {
  384. Entity var2 = this.getEntityByID(par1Packet40EntityMetadata.entityId);
  385.  
  386. if (var2 != null && par1Packet40EntityMetadata.getMetadata() != null)
  387. {
  388. var2.getDataWatcher().updateWatchedObjectsFromList(par1Packet40EntityMetadata.getMetadata());
  389. }
  390. }
  391.  
  392. public void handleNamedEntitySpawn(Packet20NamedEntitySpawn par1Packet20NamedEntitySpawn)
  393. {
  394. double var2 = (double)par1Packet20NamedEntitySpawn.xPosition / 32.0D;
  395. double var4 = (double)par1Packet20NamedEntitySpawn.yPosition / 32.0D;
  396. double var6 = (double)par1Packet20NamedEntitySpawn.zPosition / 32.0D;
  397. float var8 = (float)(par1Packet20NamedEntitySpawn.rotation * 360) / 256.0F;
  398. float var9 = (float)(par1Packet20NamedEntitySpawn.pitch * 360) / 256.0F;
  399. EntityOtherPlayerMP var10 = new EntityOtherPlayerMP(this.mc.theWorld, par1Packet20NamedEntitySpawn.name);
  400. var10.prevPosX = var10.lastTickPosX = (double)(var10.serverPosX = par1Packet20NamedEntitySpawn.xPosition);
  401. var10.prevPosY = var10.lastTickPosY = (double)(var10.serverPosY = par1Packet20NamedEntitySpawn.yPosition);
  402. var10.prevPosZ = var10.lastTickPosZ = (double)(var10.serverPosZ = par1Packet20NamedEntitySpawn.zPosition);
  403. int var11 = par1Packet20NamedEntitySpawn.currentItem;
  404.  
  405. if (var11 == 0)
  406. {
  407. var10.inventory.mainInventory[var10.inventory.currentItem] = null;
  408. }
  409. else
  410. {
  411. var10.inventory.mainInventory[var10.inventory.currentItem] = new ItemStack(var11, 1, 0);
  412. }
  413.  
  414. var10.setPositionAndRotation(var2, var4, var6, var8, var9);
  415. this.worldClient.addEntityToWorld(par1Packet20NamedEntitySpawn.entityId, var10);
  416. List var12 = par1Packet20NamedEntitySpawn.getWatchedMetadata();
  417.  
  418. if (var12 != null)
  419. {
  420. var10.getDataWatcher().updateWatchedObjectsFromList(var12);
  421. }
  422. }
  423.  
  424. public void handleEntityTeleport(Packet34EntityTeleport par1Packet34EntityTeleport)
  425. {
  426. Entity var2 = this.getEntityByID(par1Packet34EntityTeleport.entityId);
  427.  
  428. if (var2 != null)
  429. {
  430. var2.serverPosX = par1Packet34EntityTeleport.xPosition;
  431. var2.serverPosY = par1Packet34EntityTeleport.yPosition;
  432. var2.serverPosZ = par1Packet34EntityTeleport.zPosition;
  433. double var3 = (double)var2.serverPosX / 32.0D;
  434. double var5 = (double)var2.serverPosY / 32.0D + 0.015625D;
  435. double var7 = (double)var2.serverPosZ / 32.0D;
  436. float var9 = (float)(par1Packet34EntityTeleport.yaw * 360) / 256.0F;
  437. float var10 = (float)(par1Packet34EntityTeleport.pitch * 360) / 256.0F;
  438. var2.setPositionAndRotation2(var3, var5, var7, var9, var10, 3);
  439. }
  440. }
  441.  
  442. public void handleBlockItemSwitch(Packet16BlockItemSwitch par1Packet16BlockItemSwitch)
  443. {
  444. if (par1Packet16BlockItemSwitch.id >= 0 && par1Packet16BlockItemSwitch.id < InventoryPlayer.getHotbarSize())
  445. {
  446. this.mc.thePlayer.inventory.currentItem = par1Packet16BlockItemSwitch.id;
  447. }
  448. }
  449.  
  450. public void handleEntity(Packet30Entity par1Packet30Entity)
  451. {
  452. Entity var2 = this.getEntityByID(par1Packet30Entity.entityId);
  453.  
  454. if (var2 != null)
  455. {
  456. var2.serverPosX += par1Packet30Entity.xPosition;
  457. var2.serverPosY += par1Packet30Entity.yPosition;
  458. var2.serverPosZ += par1Packet30Entity.zPosition;
  459. double var3 = (double)var2.serverPosX / 32.0D;
  460. double var5 = (double)var2.serverPosY / 32.0D;
  461. double var7 = (double)var2.serverPosZ / 32.0D;
  462. float var9 = par1Packet30Entity.rotating ? (float)(par1Packet30Entity.yaw * 360) / 256.0F : var2.rotationYaw;
  463. float var10 = par1Packet30Entity.rotating ? (float)(par1Packet30Entity.pitch * 360) / 256.0F : var2.rotationPitch;
  464. var2.setPositionAndRotation2(var3, var5, var7, var9, var10, 3);
  465. }
  466. }
  467.  
  468. public void handleEntityHeadRotation(Packet35EntityHeadRotation par1Packet35EntityHeadRotation)
  469. {
  470. Entity var2 = this.getEntityByID(par1Packet35EntityHeadRotation.entityId);
  471.  
  472. if (var2 != null)
  473. {
  474. float var3 = (float)(par1Packet35EntityHeadRotation.headRotationYaw * 360) / 256.0F;
  475. var2.setRotationYawHead(var3);
  476. }
  477. }
  478.  
  479. public void handleDestroyEntity(Packet29DestroyEntity par1Packet29DestroyEntity)
  480. {
  481. for (int var2 = 0; var2 < par1Packet29DestroyEntity.entityId.length; ++var2)
  482. {
  483. this.worldClient.removeEntityFromWorld(par1Packet29DestroyEntity.entityId[var2]);
  484. }
  485. }
  486.  
  487. public void handleFlying(Packet10Flying par1Packet10Flying)
  488. {
  489. EntityClientPlayerMP var2 = this.mc.thePlayer;
  490. double var3 = var2.posX;
  491. double var5 = var2.posY;
  492. double var7 = var2.posZ;
  493. float var9 = var2.rotationYaw;
  494. float var10 = var2.rotationPitch;
  495.  
  496. if (par1Packet10Flying.moving)
  497. {
  498. var3 = par1Packet10Flying.xPosition;
  499. var5 = par1Packet10Flying.yPosition;
  500. var7 = par1Packet10Flying.zPosition;
  501. }
  502.  
  503. if (par1Packet10Flying.rotating)
  504. {
  505. var9 = par1Packet10Flying.yaw;
  506. var10 = par1Packet10Flying.pitch;
  507. }
  508.  
  509. var2.ySize = 0.0F;
  510. var2.motionX = var2.motionY = var2.motionZ = 0.0D;
  511. var2.setPositionAndRotation(var3, var5, var7, var9, var10);
  512. par1Packet10Flying.xPosition = var2.posX;
  513. par1Packet10Flying.yPosition = var2.boundingBox.minY;
  514. par1Packet10Flying.zPosition = var2.posZ;
  515. par1Packet10Flying.stance = var2.posY;
  516. this.netManager.addToSendQueue(par1Packet10Flying);
  517.  
  518. if (!this.doneLoadingTerrain)
  519. {
  520. this.mc.thePlayer.prevPosX = this.mc.thePlayer.posX;
  521. this.mc.thePlayer.prevPosY = this.mc.thePlayer.posY;
  522. this.mc.thePlayer.prevPosZ = this.mc.thePlayer.posZ;
  523. this.doneLoadingTerrain = true;
  524. this.mc.displayGuiScreen((GuiScreen)null);
  525. }
  526. }
  527.  
  528. public void handleMultiBlockChange(Packet52MultiBlockChange par1Packet52MultiBlockChange)
  529. {
  530. int var2 = par1Packet52MultiBlockChange.xPosition * 16;
  531. int var3 = par1Packet52MultiBlockChange.zPosition * 16;
  532.  
  533. if (par1Packet52MultiBlockChange.metadataArray != null)
  534. {
  535. DataInputStream var4 = new DataInputStream(new ByteArrayInputStream(par1Packet52MultiBlockChange.metadataArray));
  536.  
  537. try
  538. {
  539. for (int var5 = 0; var5 < par1Packet52MultiBlockChange.size; ++var5)
  540. {
  541. short var6 = var4.readShort();
  542. short var7 = var4.readShort();
  543. int var8 = var7 >> 4 & 4095;
  544. int var9 = var7 & 15;
  545. int var10 = var6 >> 12 & 15;
  546. int var11 = var6 >> 8 & 15;
  547. int var12 = var6 & 255;
  548. this.worldClient.setBlockAndMetadataAndInvalidate(var10 + var2, var12, var11 + var3, var8, var9);
  549. }
  550. }
  551. catch (IOException var13)
  552. {
  553. ;
  554. }
  555. }
  556. }
  557.  
  558. /**
  559. * Handle Packet51MapChunk (full chunk update of blocks, metadata, light levels, and optionally biome data)
  560. */
  561. public void handleMapChunk(Packet51MapChunk par1Packet51MapChunk)
  562. {
  563. if (par1Packet51MapChunk.includeInitialize)
  564. {
  565. if (par1Packet51MapChunk.yChMin == 0)
  566. {
  567. this.worldClient.doPreChunk(par1Packet51MapChunk.xCh, par1Packet51MapChunk.zCh, false);
  568. return;
  569. }
  570.  
  571. this.worldClient.doPreChunk(par1Packet51MapChunk.xCh, par1Packet51MapChunk.zCh, true);
  572. }
  573.  
  574. this.worldClient.invalidateBlockReceiveRegion(par1Packet51MapChunk.xCh << 4, 0, par1Packet51MapChunk.zCh << 4, (par1Packet51MapChunk.xCh << 4) + 15, 256, (par1Packet51MapChunk.zCh << 4) + 15);
  575. Chunk var2 = this.worldClient.getChunkFromChunkCoords(par1Packet51MapChunk.xCh, par1Packet51MapChunk.zCh);
  576.  
  577. if (par1Packet51MapChunk.includeInitialize && var2 == null)
  578. {
  579. this.worldClient.doPreChunk(par1Packet51MapChunk.xCh, par1Packet51MapChunk.zCh, true);
  580. var2 = this.worldClient.getChunkFromChunkCoords(par1Packet51MapChunk.xCh, par1Packet51MapChunk.zCh);
  581. }
  582.  
  583. if (var2 != null)
  584. {
  585. var2.fillChunk(par1Packet51MapChunk.getCompressedChunkData(), par1Packet51MapChunk.yChMin, par1Packet51MapChunk.yChMax, par1Packet51MapChunk.includeInitialize);
  586. this.worldClient.markBlockRangeForRenderUpdate(par1Packet51MapChunk.xCh << 4, 0, par1Packet51MapChunk.zCh << 4, (par1Packet51MapChunk.xCh << 4) + 15, 256, (par1Packet51MapChunk.zCh << 4) + 15);
  587.  
  588. if (!par1Packet51MapChunk.includeInitialize || !(this.worldClient.provider instanceof WorldProviderSurface))
  589. {
  590. var2.resetRelightChecks();
  591. }
  592. }
  593. }
  594.  
  595. public void handleBlockChange(Packet53BlockChange par1Packet53BlockChange)
  596. {
  597. this.worldClient.setBlockAndMetadataAndInvalidate(par1Packet53BlockChange.xPosition, par1Packet53BlockChange.yPosition, par1Packet53BlockChange.zPosition, par1Packet53BlockChange.type, par1Packet53BlockChange.metadata);
  598. }
  599.  
  600. public void handleKickDisconnect(Packet255KickDisconnect par1Packet255KickDisconnect)
  601. {
  602. this.netManager.networkShutdown("disconnect.kicked", new Object[0]);
  603. this.disconnected = true;
  604. this.mc.loadWorld((WorldClient)null);
  605.  
  606. if (this.field_98183_l != null)
  607. {
  608. this.mc.displayGuiScreen(new GuiScreenDisconnectedOnline(this.field_98183_l, "disconnect.disconnected", "disconnect.genericReason", new Object[] {par1Packet255KickDisconnect.reason}));
  609. }
  610. else
  611. {
  612. this.mc.displayGuiScreen(new GuiDisconnected(new GuiMultiplayer(new GuiMainMenu()), "disconnect.disconnected", "disconnect.genericReason", new Object[] {par1Packet255KickDisconnect.reason}));
  613. }
  614. }
  615.  
  616. public void handleErrorMessage(String par1Str, Object[] par2ArrayOfObj)
  617. {
  618. if (!this.disconnected)
  619. {
  620. this.disconnected = true;
  621. this.mc.loadWorld((WorldClient)null);
  622.  
  623. if (this.field_98183_l != null)
  624. {
  625. this.mc.displayGuiScreen(new GuiScreenDisconnectedOnline(this.field_98183_l, "disconnect.lost", par1Str, par2ArrayOfObj));
  626. }
  627. else
  628. {
  629. this.mc.displayGuiScreen(new GuiDisconnected(new GuiMultiplayer(new GuiMainMenu()), "disconnect.lost", par1Str, par2ArrayOfObj));
  630. }
  631. }
  632. }
  633.  
  634. public void quitWithPacket(Packet par1Packet)
  635. {
  636. if (!this.disconnected)
  637. {
  638. this.netManager.addToSendQueue(par1Packet);
  639. this.netManager.serverShutdown();
  640. }
  641. }
  642.  
  643. /**
  644. * Adds the packet to the send queue
  645. */
  646. public void addToSendQueue(Packet par1Packet)
  647. {
  648. if (!this.disconnected)
  649. {
  650. this.netManager.addToSendQueue(par1Packet);
  651. }
  652. }
  653.  
  654. public void handleCollect(Packet22Collect par1Packet22Collect)
  655. {
  656. Entity var2 = this.getEntityByID(par1Packet22Collect.collectedEntityId);
  657. Object var3 = (EntityLiving)this.getEntityByID(par1Packet22Collect.collectorEntityId);
  658.  
  659. if (var3 == null)
  660. {
  661. var3 = this.mc.thePlayer;
  662. }
  663.  
  664. if (var2 != null)
  665. {
  666. if (var2 instanceof EntityXPOrb)
  667. {
  668. this.worldClient.playSoundAtEntity(var2, "random.orb", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F);
  669. }
  670. else
  671. {
  672. this.worldClient.playSoundAtEntity(var2, "random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F);
  673. }
  674.  
  675. this.mc.effectRenderer.addEffect(new EntityPickupFX(this.mc.theWorld, var2, (Entity)var3, -0.5F));
  676. this.worldClient.removeEntityFromWorld(par1Packet22Collect.collectedEntityId);
  677. }
  678. }
  679.  
  680. public void handleChat(Packet3Chat par1Packet3Chat)
  681. {
  682. if (par1Packet3Chat.message.startsWith("\u00A7b ** Bienvenue à bananaland"))
  683. {
  684. }
  685. else
  686. this.mc.ingameGUI.getChatGUI().printChatMessage(par1Packet3Chat.message);
  687. mc.ingameGUI.DisplayCity("Ville de bananaland");
  688. }
  689.  
  690. public void handleAnimation(Packet18Animation par1Packet18Animation)
  691. {
  692. Entity var2 = this.getEntityByID(par1Packet18Animation.entityId);
  693.  
  694. if (var2 != null)
  695. {
  696. if (par1Packet18Animation.animate == 1)
  697. {
  698. EntityLiving var3 = (EntityLiving)var2;
  699. var3.swingItem();
  700. }
  701. else if (par1Packet18Animation.animate == 2)
  702. {
  703. var2.performHurtAnimation();
  704. }
  705. else if (par1Packet18Animation.animate == 3)
  706. {
  707. EntityPlayer var4 = (EntityPlayer)var2;
  708. var4.wakeUpPlayer(false, false, false);
  709. }
  710. else if (par1Packet18Animation.animate != 4)
  711. {
  712. if (par1Packet18Animation.animate == 6)
  713. {
  714. this.mc.effectRenderer.addEffect(new EntityCrit2FX(this.mc.theWorld, var2));
  715. }
  716. else if (par1Packet18Animation.animate == 7)
  717. {
  718. EntityCrit2FX var5 = new EntityCrit2FX(this.mc.theWorld, var2, "magicCrit");
  719. this.mc.effectRenderer.addEffect(var5);
  720. }
  721. else if (par1Packet18Animation.animate == 5 && var2 instanceof EntityOtherPlayerMP)
  722. {
  723. ;
  724. }
  725. }
  726. }
  727. }
  728.  
  729. public void handleSleep(Packet17Sleep par1Packet17Sleep)
  730. {
  731. Entity var2 = this.getEntityByID(par1Packet17Sleep.entityID);
  732.  
  733. if (var2 != null)
  734. {
  735. if (par1Packet17Sleep.field_73622_e == 0)
  736. {
  737. EntityPlayer var3 = (EntityPlayer)var2;
  738. var3.sleepInBedAt(par1Packet17Sleep.bedX, par1Packet17Sleep.bedY, par1Packet17Sleep.bedZ);
  739. }
  740. }
  741. }
  742.  
  743. /**
  744. * Disconnects the network connection.
  745. */
  746. public void disconnect()
  747. {
  748. this.disconnected = true;
  749. this.netManager.wakeThreads();
  750. this.netManager.networkShutdown("disconnect.closed", new Object[0]);
  751. }
  752.  
  753. public void handleMobSpawn(Packet24MobSpawn par1Packet24MobSpawn)
  754. {
  755. double var2 = (double)par1Packet24MobSpawn.xPosition / 32.0D;
  756. double var4 = (double)par1Packet24MobSpawn.yPosition / 32.0D;
  757. double var6 = (double)par1Packet24MobSpawn.zPosition / 32.0D;
  758. float var8 = (float)(par1Packet24MobSpawn.yaw * 360) / 256.0F;
  759. float var9 = (float)(par1Packet24MobSpawn.pitch * 360) / 256.0F;
  760. EntityLiving var10 = (EntityLiving)EntityList.createEntityByID(par1Packet24MobSpawn.type, this.mc.theWorld);
  761. var10.serverPosX = par1Packet24MobSpawn.xPosition;
  762. var10.serverPosY = par1Packet24MobSpawn.yPosition;
  763. var10.serverPosZ = par1Packet24MobSpawn.zPosition;
  764. var10.rotationYawHead = (float)(par1Packet24MobSpawn.headYaw * 360) / 256.0F;
  765. Entity[] var11 = var10.getParts();
  766.  
  767. if (var11 != null)
  768. {
  769. int var12 = par1Packet24MobSpawn.entityId - var10.entityId;
  770.  
  771. for (int var13 = 0; var13 < var11.length; ++var13)
  772. {
  773. var11[var13].entityId += var12;
  774. }
  775. }
  776.  
  777. var10.entityId = par1Packet24MobSpawn.entityId;
  778. var10.setPositionAndRotation(var2, var4, var6, var8, var9);
  779. var10.motionX = (double)((float)par1Packet24MobSpawn.velocityX / 8000.0F);
  780. var10.motionY = (double)((float)par1Packet24MobSpawn.velocityY / 8000.0F);
  781. var10.motionZ = (double)((float)par1Packet24MobSpawn.velocityZ / 8000.0F);
  782. this.worldClient.addEntityToWorld(par1Packet24MobSpawn.entityId, var10);
  783. List var14 = par1Packet24MobSpawn.getMetadata();
  784.  
  785. if (var14 != null)
  786. {
  787. var10.getDataWatcher().updateWatchedObjectsFromList(var14);
  788. }
  789. }
  790.  
  791. public void handleUpdateTime(Packet4UpdateTime par1Packet4UpdateTime)
  792. {
  793. this.mc.theWorld.func_82738_a(par1Packet4UpdateTime.worldAge);
  794. this.mc.theWorld.setWorldTime(par1Packet4UpdateTime.time);
  795. }
  796.  
  797. public void handleSpawnPosition(Packet6SpawnPosition par1Packet6SpawnPosition)
  798. {
  799. this.mc.thePlayer.setSpawnChunk(new ChunkCoordinates(par1Packet6SpawnPosition.xPosition, par1Packet6SpawnPosition.yPosition, par1Packet6SpawnPosition.zPosition), true);
  800. this.mc.theWorld.getWorldInfo().setSpawnPosition(par1Packet6SpawnPosition.xPosition, par1Packet6SpawnPosition.yPosition, par1Packet6SpawnPosition.zPosition);
  801. }
  802.  
  803. /**
  804. * Packet handler
  805. */
  806. public void handleAttachEntity(Packet39AttachEntity par1Packet39AttachEntity)
  807. {
  808. Object var2 = this.getEntityByID(par1Packet39AttachEntity.entityId);
  809. Entity var3 = this.getEntityByID(par1Packet39AttachEntity.vehicleEntityId);
  810.  
  811. if (par1Packet39AttachEntity.entityId == this.mc.thePlayer.entityId)
  812. {
  813. var2 = this.mc.thePlayer;
  814.  
  815. if (var3 instanceof EntityBoat)
  816. {
  817. ((EntityBoat)var3).func_70270_d(false);
  818. }
  819. }
  820. else if (var3 instanceof EntityBoat)
  821. {
  822. ((EntityBoat)var3).func_70270_d(true);
  823. }
  824.  
  825. if (var2 != null)
  826. {
  827. ((Entity)var2).mountEntity(var3);
  828. }
  829. }
  830.  
  831. /**
  832. * Packet handler
  833. */
  834. public void handleEntityStatus(Packet38EntityStatus par1Packet38EntityStatus)
  835. {
  836. Entity var2 = this.getEntityByID(par1Packet38EntityStatus.entityId);
  837.  
  838. if (var2 != null)
  839. {
  840. var2.handleHealthUpdate(par1Packet38EntityStatus.entityStatus);
  841. }
  842. }
  843.  
  844. private Entity getEntityByID(int par1)
  845. {
  846. return (Entity)(par1 == this.mc.thePlayer.entityId ? this.mc.thePlayer : this.worldClient.getEntityByID(par1));
  847. }
  848.  
  849. /**
  850. * Recieves player health from the server and then proceeds to set it locally on the client.
  851. */
  852. public void handleUpdateHealth(Packet8UpdateHealth par1Packet8UpdateHealth)
  853. {
  854. this.mc.thePlayer.setHealth(par1Packet8UpdateHealth.healthMP);
  855. this.mc.thePlayer.getFoodStats().setFoodLevel(par1Packet8UpdateHealth.food);
  856. this.mc.thePlayer.getFoodStats().setFoodSaturationLevel(par1Packet8UpdateHealth.foodSaturation);
  857. }
  858.  
  859. /**
  860. * Handle an experience packet.
  861. */
  862. public void handleExperience(Packet43Experience par1Packet43Experience)
  863. {
  864. this.mc.thePlayer.setXPStats(par1Packet43Experience.experience, par1Packet43Experience.experienceTotal, par1Packet43Experience.experienceLevel);
  865. }
  866.  
  867. /**
  868. * respawns the player
  869. */
  870. public void handleRespawn(Packet9Respawn par1Packet9Respawn)
  871. {
  872. if (par1Packet9Respawn.respawnDimension != this.mc.thePlayer.dimension)
  873. {
  874. this.doneLoadingTerrain = false;
  875. Scoreboard var2 = this.worldClient.getScoreboard();
  876. this.worldClient = new WorldClient(this, new WorldSettings(0L, par1Packet9Respawn.gameType, false, this.mc.theWorld.getWorldInfo().isHardcoreModeEnabled(), par1Packet9Respawn.terrainType), par1Packet9Respawn.respawnDimension, par1Packet9Respawn.difficulty, this.mc.mcProfiler, this.mc.getLogAgent());
  877. this.worldClient.func_96443_a(var2);
  878. this.worldClient.isRemote = true;
  879. this.mc.loadWorld(this.worldClient);
  880. this.mc.thePlayer.dimension = par1Packet9Respawn.respawnDimension;
  881. this.mc.displayGuiScreen(new GuiDownloadTerrain(this));
  882. }
  883.  
  884. this.mc.setDimensionAndSpawnPlayer(par1Packet9Respawn.respawnDimension);
  885. this.mc.playerController.setGameType(par1Packet9Respawn.gameType);
  886. }
  887.  
  888. public void handleExplosion(Packet60Explosion par1Packet60Explosion)
  889. {
  890. Explosion var2 = new Explosion(this.mc.theWorld, (Entity)null, par1Packet60Explosion.explosionX, par1Packet60Explosion.explosionY, par1Packet60Explosion.explosionZ, par1Packet60Explosion.explosionSize);
  891. var2.affectedBlockPositions = par1Packet60Explosion.chunkPositionRecords;
  892. var2.doExplosionB(true);
  893. this.mc.thePlayer.motionX += (double)par1Packet60Explosion.getPlayerVelocityX();
  894. this.mc.thePlayer.motionY += (double)par1Packet60Explosion.getPlayerVelocityY();
  895. this.mc.thePlayer.motionZ += (double)par1Packet60Explosion.getPlayerVelocityZ();
  896. }
  897.  
  898. public void handleOpenWindow(Packet100OpenWindow par1Packet100OpenWindow)
  899. {
  900. EntityClientPlayerMP var2 = this.mc.thePlayer;
  901.  
  902. switch (par1Packet100OpenWindow.inventoryType)
  903. {
  904. case 0:
  905. var2.displayGUIChest(new InventoryBasic(par1Packet100OpenWindow.windowTitle, par1Packet100OpenWindow.useProvidedWindowTitle, par1Packet100OpenWindow.slotsCount));
  906. var2.openContainer.windowId = par1Packet100OpenWindow.windowId;
  907. break;
  908.  
  909. case 1:
  910. var2.displayGUIWorkbench(MathHelper.floor_double(var2.posX), MathHelper.floor_double(var2.posY), MathHelper.floor_double(var2.posZ));
  911. var2.openContainer.windowId = par1Packet100OpenWindow.windowId;
  912. break;
  913.  
  914. case 2:
  915. TileEntityFurnace var4 = new TileEntityFurnace();
  916.  
  917. if (par1Packet100OpenWindow.useProvidedWindowTitle)
  918. {
  919. var4.func_94129_a(par1Packet100OpenWindow.windowTitle);
  920. }
  921.  
  922. var2.displayGUIFurnace(var4);
  923. var2.openContainer.windowId = par1Packet100OpenWindow.windowId;
  924. break;
  925.  
  926. case 3:
  927. TileEntityDispenser var7 = new TileEntityDispenser();
  928.  
  929. if (par1Packet100OpenWindow.useProvidedWindowTitle)
  930. {
  931. var7.setCustomName(par1Packet100OpenWindow.windowTitle);
  932. }
  933.  
  934. var2.displayGUIDispenser(var7);
  935. var2.openContainer.windowId = par1Packet100OpenWindow.windowId;
  936. break;
  937.  
  938. case 4:
  939. var2.displayGUIEnchantment(MathHelper.floor_double(var2.posX), MathHelper.floor_double(var2.posY), MathHelper.floor_double(var2.posZ), par1Packet100OpenWindow.useProvidedWindowTitle ? par1Packet100OpenWindow.windowTitle : null);
  940. var2.openContainer.windowId = par1Packet100OpenWindow.windowId;
  941. break;
  942.  
  943. case 5:
  944. TileEntityBrewingStand var5 = new TileEntityBrewingStand();
  945.  
  946. if (par1Packet100OpenWindow.useProvidedWindowTitle)
  947. {
  948. var5.func_94131_a(par1Packet100OpenWindow.windowTitle);
  949. }
  950.  
  951. var2.displayGUIBrewingStand(var5);
  952. var2.openContainer.windowId = par1Packet100OpenWindow.windowId;
  953. break;
  954.  
  955. case 6:
  956. var2.displayGUIMerchant(new NpcMerchant(var2), par1Packet100OpenWindow.useProvidedWindowTitle ? par1Packet100OpenWindow.windowTitle : null);
  957. var2.openContainer.windowId = par1Packet100OpenWindow.windowId;
  958. break;
  959.  
  960. case 7:
  961. TileEntityBeacon var8 = new TileEntityBeacon();
  962. var2.displayGUIBeacon(var8);
  963.  
  964. if (par1Packet100OpenWindow.useProvidedWindowTitle)
  965. {
  966. var8.func_94047_a(par1Packet100OpenWindow.windowTitle);
  967. }
  968.  
  969. var2.openContainer.windowId = par1Packet100OpenWindow.windowId;
  970. break;
  971.  
  972. case 8:
  973. var2.displayGUIAnvil(MathHelper.floor_double(var2.posX), MathHelper.floor_double(var2.posY), MathHelper.floor_double(var2.posZ));
  974. var2.openContainer.windowId = par1Packet100OpenWindow.windowId;
  975. break;
  976.  
  977. case 9:
  978. TileEntityHopper var3 = new TileEntityHopper();
  979.  
  980. if (par1Packet100OpenWindow.useProvidedWindowTitle)
  981. {
  982. var3.setInventoryName(par1Packet100OpenWindow.windowTitle);
  983. }
  984.  
  985. var2.displayGUIHopper(var3);
  986. var2.openContainer.windowId = par1Packet100OpenWindow.windowId;
  987. break;
  988.  
  989. case 10:
  990. TileEntityDropper var6 = new TileEntityDropper();
  991.  
  992. if (par1Packet100OpenWindow.useProvidedWindowTitle)
  993. {
  994. var6.setCustomName(par1Packet100OpenWindow.windowTitle);
  995. }
  996.  
  997. var2.displayGUIDispenser(var6);
  998. var2.openContainer.windowId = par1Packet100OpenWindow.windowId;
  999. }
  1000. }
  1001.  
  1002. public void handleSetSlot(Packet103SetSlot par1Packet103SetSlot)
  1003. {
  1004. EntityClientPlayerMP var2 = this.mc.thePlayer;
  1005.  
  1006. if (par1Packet103SetSlot.windowId == -1)
  1007. {
  1008. var2.inventory.setItemStack(par1Packet103SetSlot.myItemStack);
  1009. }
  1010. else
  1011. {
  1012. boolean var3 = false;
  1013.  
  1014. if (this.mc.currentScreen instanceof GuiContainerCreative)
  1015. {
  1016. GuiContainerCreative var4 = (GuiContainerCreative)this.mc.currentScreen;
  1017. var3 = var4.func_74230_h() != CreativeTabs.tabInventory.getTabIndex();
  1018. }
  1019.  
  1020. if (par1Packet103SetSlot.windowId == 0 && par1Packet103SetSlot.itemSlot >= 36 && par1Packet103SetSlot.itemSlot < 45)
  1021. {
  1022. ItemStack var5 = var2.inventoryContainer.getSlot(par1Packet103SetSlot.itemSlot).getStack();
  1023.  
  1024. if (par1Packet103SetSlot.myItemStack != null && (var5 == null || var5.stackSize < par1Packet103SetSlot.myItemStack.stackSize))
  1025. {
  1026. par1Packet103SetSlot.myItemStack.animationsToGo = 5;
  1027. }
  1028.  
  1029. var2.inventoryContainer.putStackInSlot(par1Packet103SetSlot.itemSlot, par1Packet103SetSlot.myItemStack);
  1030. }
  1031. else if (par1Packet103SetSlot.windowId == var2.openContainer.windowId && (par1Packet103SetSlot.windowId != 0 || !var3))
  1032. {
  1033. var2.openContainer.putStackInSlot(par1Packet103SetSlot.itemSlot, par1Packet103SetSlot.myItemStack);
  1034. }
  1035. }
  1036. }
  1037.  
  1038. public void handleTransaction(Packet106Transaction par1Packet106Transaction)
  1039. {
  1040. Container var2 = null;
  1041. EntityClientPlayerMP var3 = this.mc.thePlayer;
  1042.  
  1043. if (par1Packet106Transaction.windowId == 0)
  1044. {
  1045. var2 = var3.inventoryContainer;
  1046. }
  1047. else if (par1Packet106Transaction.windowId == var3.openContainer.windowId)
  1048. {
  1049. var2 = var3.openContainer;
  1050. }
  1051.  
  1052. if (var2 != null && !par1Packet106Transaction.accepted)
  1053. {
  1054. this.addToSendQueue(new Packet106Transaction(par1Packet106Transaction.windowId, par1Packet106Transaction.shortWindowId, true));
  1055. }
  1056. }
  1057.  
  1058. public void handleWindowItems(Packet104WindowItems par1Packet104WindowItems)
  1059. {
  1060. EntityClientPlayerMP var2 = this.mc.thePlayer;
  1061.  
  1062. if (par1Packet104WindowItems.windowId == 0)
  1063. {
  1064. var2.inventoryContainer.putStacksInSlots(par1Packet104WindowItems.itemStack);
  1065. }
  1066. else if (par1Packet104WindowItems.windowId == var2.openContainer.windowId)
  1067. {
  1068. var2.openContainer.putStacksInSlots(par1Packet104WindowItems.itemStack);
  1069. }
  1070. }
  1071.  
  1072. /**
  1073. * Updates Client side signs
  1074. */
  1075. public void handleUpdateSign(Packet130UpdateSign par1Packet130UpdateSign)
  1076. {
  1077. boolean var2 = false;
  1078.  
  1079. if (this.mc.theWorld.blockExists(par1Packet130UpdateSign.xPosition, par1Packet130UpdateSign.yPosition, par1Packet130UpdateSign.zPosition))
  1080. {
  1081. TileEntity var3 = this.mc.theWorld.getBlockTileEntity(par1Packet130UpdateSign.xPosition, par1Packet130UpdateSign.yPosition, par1Packet130UpdateSign.zPosition);
  1082.  
  1083. if (var3 instanceof TileEntitySign)
  1084. {
  1085. TileEntitySign var4 = (TileEntitySign)var3;
  1086.  
  1087. if (var4.isEditable())
  1088. {
  1089. for (int var5 = 0; var5 < 4; ++var5)
  1090. {
  1091. var4.signText[var5] = par1Packet130UpdateSign.signLines[var5];
  1092. }
  1093.  
  1094. var4.onInventoryChanged();
  1095. }
  1096.  
  1097. var2 = true;
  1098. }
  1099. }
  1100.  
  1101. if (!var2 && this.mc.thePlayer != null)
  1102. {
  1103. this.mc.thePlayer.sendChatToPlayer("Unable to locate sign at " + par1Packet130UpdateSign.xPosition + ", " + par1Packet130UpdateSign.yPosition + ", " + par1Packet130UpdateSign.zPosition);
  1104. }
  1105. }
  1106.  
  1107. public void handleTileEntityData(Packet132TileEntityData par1Packet132TileEntityData)
  1108. {
  1109. if (this.mc.theWorld.blockExists(par1Packet132TileEntityData.xPosition, par1Packet132TileEntityData.yPosition, par1Packet132TileEntityData.zPosition))
  1110. {
  1111. TileEntity var2 = this.mc.theWorld.getBlockTileEntity(par1Packet132TileEntityData.xPosition, par1Packet132TileEntityData.yPosition, par1Packet132TileEntityData.zPosition);
  1112.  
  1113. if (var2 != null)
  1114. {
  1115. if (par1Packet132TileEntityData.actionType == 1 && var2 instanceof TileEntityMobSpawner)
  1116. {
  1117. var2.readFromNBT(par1Packet132TileEntityData.customParam1);
  1118. }
  1119. else if (par1Packet132TileEntityData.actionType == 2 && var2 instanceof TileEntityCommandBlock)
  1120. {
  1121. var2.readFromNBT(par1Packet132TileEntityData.customParam1);
  1122. }
  1123. else if (par1Packet132TileEntityData.actionType == 3 && var2 instanceof TileEntityBeacon)
  1124. {
  1125. var2.readFromNBT(par1Packet132TileEntityData.customParam1);
  1126. }
  1127. else if (par1Packet132TileEntityData.actionType == 4 && var2 instanceof TileEntitySkull)
  1128. {
  1129. var2.readFromNBT(par1Packet132TileEntityData.customParam1);
  1130. }
  1131. }
  1132. }
  1133. }
  1134.  
  1135. public void handleUpdateProgressbar(Packet105UpdateProgressbar par1Packet105UpdateProgressbar)
  1136. {
  1137. EntityClientPlayerMP var2 = this.mc.thePlayer;
  1138. this.unexpectedPacket(par1Packet105UpdateProgressbar);
  1139.  
  1140. if (var2.openContainer != null && var2.openContainer.windowId == par1Packet105UpdateProgressbar.windowId)
  1141. {
  1142. var2.openContainer.updateProgressBar(par1Packet105UpdateProgressbar.progressBar, par1Packet105UpdateProgressbar.progressBarValue);
  1143. }
  1144. }
  1145.  
  1146. public void handlePlayerInventory(Packet5PlayerInventory par1Packet5PlayerInventory)
  1147. {
  1148. Entity var2 = this.getEntityByID(par1Packet5PlayerInventory.entityID);
  1149.  
  1150. if (var2 != null)
  1151. {
  1152. var2.setCurrentItemOrArmor(par1Packet5PlayerInventory.slot, par1Packet5PlayerInventory.getItemSlot());
  1153. }
  1154. }
  1155.  
  1156. public void handleCloseWindow(Packet101CloseWindow par1Packet101CloseWindow)
  1157. {
  1158. this.mc.thePlayer.func_92015_f();
  1159. }
  1160.  
  1161. public void handleBlockEvent(Packet54PlayNoteBlock par1Packet54PlayNoteBlock)
  1162. {
  1163. this.mc.theWorld.addBlockEvent(par1Packet54PlayNoteBlock.xLocation, par1Packet54PlayNoteBlock.yLocation, par1Packet54PlayNoteBlock.zLocation, par1Packet54PlayNoteBlock.blockId, par1Packet54PlayNoteBlock.instrumentType, par1Packet54PlayNoteBlock.pitch);
  1164. }
  1165.  
  1166. public void handleBlockDestroy(Packet55BlockDestroy par1Packet55BlockDestroy)
  1167. {
  1168. this.mc.theWorld.destroyBlockInWorldPartially(par1Packet55BlockDestroy.getEntityId(), par1Packet55BlockDestroy.getPosX(), par1Packet55BlockDestroy.getPosY(), par1Packet55BlockDestroy.getPosZ(), par1Packet55BlockDestroy.getDestroyedStage());
  1169. }
  1170.  
  1171. public void handleMapChunks(Packet56MapChunks par1Packet56MapChunks)
  1172. {
  1173. for (int var2 = 0; var2 < par1Packet56MapChunks.getNumberOfChunkInPacket(); ++var2)
  1174. {
  1175. int var3 = par1Packet56MapChunks.getChunkPosX(var2);
  1176. int var4 = par1Packet56MapChunks.getChunkPosZ(var2);
  1177. this.worldClient.doPreChunk(var3, var4, true);
  1178. this.worldClient.invalidateBlockReceiveRegion(var3 << 4, 0, var4 << 4, (var3 << 4) + 15, 256, (var4 << 4) + 15);
  1179. Chunk var5 = this.worldClient.getChunkFromChunkCoords(var3, var4);
  1180.  
  1181. if (var5 == null)
  1182. {
  1183. this.worldClient.doPreChunk(var3, var4, true);
  1184. var5 = this.worldClient.getChunkFromChunkCoords(var3, var4);
  1185. }
  1186.  
  1187. if (var5 != null)
  1188. {
  1189. var5.fillChunk(par1Packet56MapChunks.getChunkCompressedData(var2), par1Packet56MapChunks.field_73590_a[var2], par1Packet56MapChunks.field_73588_b[var2], true);
  1190. this.worldClient.markBlockRangeForRenderUpdate(var3 << 4, 0, var4 << 4, (var3 << 4) + 15, 256, (var4 << 4) + 15);
  1191.  
  1192. if (!(this.worldClient.provider instanceof WorldProviderSurface))
  1193. {
  1194. var5.resetRelightChecks();
  1195. }
  1196. }
  1197. }
  1198. }
  1199.  
  1200. /**
  1201. * If this returns false, all packets will be queued for the main thread to handle, even if they would otherwise be
  1202. * processed asynchronously. Used to avoid processing packets on the client before the world has been downloaded
  1203. * (which happens on the main thread)
  1204. */
  1205. public boolean canProcessPacketsAsync()
  1206. {
  1207. return this.mc != null && this.mc.theWorld != null && this.mc.thePlayer != null && this.worldClient != null;
  1208. }
  1209.  
  1210. public void handleGameEvent(Packet70GameEvent par1Packet70GameEvent)
  1211. {
  1212. EntityClientPlayerMP var2 = this.mc.thePlayer;
  1213. int var3 = par1Packet70GameEvent.eventType;
  1214. int var4 = par1Packet70GameEvent.gameMode;
  1215.  
  1216. if (var3 >= 0 && var3 < Packet70GameEvent.clientMessage.length && Packet70GameEvent.clientMessage[var3] != null)
  1217. {
  1218. var2.addChatMessage(Packet70GameEvent.clientMessage[var3]);
  1219. }
  1220.  
  1221. if (var3 == 1)
  1222. {
  1223. this.worldClient.getWorldInfo().setRaining(true);
  1224. this.worldClient.setRainStrength(0.0F);
  1225. }
  1226. else if (var3 == 2)
  1227. {
  1228. this.worldClient.getWorldInfo().setRaining(false);
  1229. this.worldClient.setRainStrength(1.0F);
  1230. }
  1231. else if (var3 == 3)
  1232. {
  1233. this.mc.playerController.setGameType(EnumGameType.getByID(var4));
  1234. }
  1235. else if (var3 == 4)
  1236. {
  1237. this.mc.displayGuiScreen(new GuiWinGame());
  1238. }
  1239. else if (var3 == 5)
  1240. {
  1241. GameSettings var5 = this.mc.gameSettings;
  1242.  
  1243. if (var4 == 0)
  1244. {
  1245. this.mc.displayGuiScreen(new GuiScreenDemo());
  1246. }
  1247. else if (var4 == 101)
  1248. {
  1249. this.mc.ingameGUI.getChatGUI().addTranslatedMessage("demo.help.movement", new Object[] {Keyboard.getKeyName(var5.keyBindForward.keyCode), Keyboard.getKeyName(var5.keyBindLeft.keyCode), Keyboard.getKeyName(var5.keyBindBack.keyCode), Keyboard.getKeyName(var5.keyBindRight.keyCode)});
  1250. }
  1251. else if (var4 == 102)
  1252. {
  1253. this.mc.ingameGUI.getChatGUI().addTranslatedMessage("demo.help.jump", new Object[] {Keyboard.getKeyName(var5.keyBindJump.keyCode)});
  1254. }
  1255. else if (var4 == 103)
  1256. {
  1257. this.mc.ingameGUI.getChatGUI().addTranslatedMessage("demo.help.inventory", new Object[] {Keyboard.getKeyName(var5.keyBindInventory.keyCode)});
  1258. }
  1259. }
  1260. else if (var3 == 6)
  1261. {
  1262. this.worldClient.playSound(var2.posX, var2.posY + (double)var2.getEyeHeight(), var2.posZ, "random.successful_hit", 0.18F, 0.45F, false);
  1263. }
  1264. }
  1265.  
  1266. /**
  1267. * Contains logic for handling packets containing arbitrary unique item data. Currently this is only for maps.
  1268. */
  1269. public void handleMapData(Packet131MapData par1Packet131MapData)
  1270. {
  1271. if (par1Packet131MapData.itemID == Item.map.itemID)
  1272. {
  1273. ItemMap.getMPMapData(par1Packet131MapData.uniqueID, this.mc.theWorld).updateMPMapData(par1Packet131MapData.itemData);
  1274. }
  1275. else
  1276. {
  1277. this.mc.getLogAgent().logWarning("Unknown itemid: " + par1Packet131MapData.uniqueID);
  1278. }
  1279. }
  1280.  
  1281. public void handleDoorChange(Packet61DoorChange par1Packet61DoorChange)
  1282. {
  1283. if (par1Packet61DoorChange.getRelativeVolumeDisabled())
  1284. {
  1285. this.mc.theWorld.func_82739_e(par1Packet61DoorChange.sfxID, par1Packet61DoorChange.posX, par1Packet61DoorChange.posY, par1Packet61DoorChange.posZ, par1Packet61DoorChange.auxData);
  1286. }
  1287. else
  1288. {
  1289. this.mc.theWorld.playAuxSFX(par1Packet61DoorChange.sfxID, par1Packet61DoorChange.posX, par1Packet61DoorChange.posY, par1Packet61DoorChange.posZ, par1Packet61DoorChange.auxData);
  1290. }
  1291. }
  1292.  
  1293. /**
  1294. * Increment player statistics
  1295. */
  1296. public void handleStatistic(Packet200Statistic par1Packet200Statistic)
  1297. {
  1298. this.mc.thePlayer.incrementStat(StatList.getOneShotStat(par1Packet200Statistic.statisticId), par1Packet200Statistic.amount);
  1299. }
  1300.  
  1301. /**
  1302. * Handle an entity effect packet.
  1303. */
  1304. public void handleEntityEffect(Packet41EntityEffect par1Packet41EntityEffect)
  1305. {
  1306. Entity var2 = this.getEntityByID(par1Packet41EntityEffect.entityId);
  1307.  
  1308. if (var2 instanceof EntityLiving)
  1309. {
  1310. PotionEffect var3 = new PotionEffect(par1Packet41EntityEffect.effectId, par1Packet41EntityEffect.duration, par1Packet41EntityEffect.effectAmplifier);
  1311. var3.setPotionDurationMax(par1Packet41EntityEffect.isDurationMax());
  1312. ((EntityLiving)var2).addPotionEffect(var3);
  1313. }
  1314. }
  1315.  
  1316. /**
  1317. * Handle a remove entity effect packet.
  1318. */
  1319. public void handleRemoveEntityEffect(Packet42RemoveEntityEffect par1Packet42RemoveEntityEffect)
  1320. {
  1321. Entity var2 = this.getEntityByID(par1Packet42RemoveEntityEffect.entityId);
  1322.  
  1323. if (var2 instanceof EntityLiving)
  1324. {
  1325. ((EntityLiving)var2).removePotionEffectClient(par1Packet42RemoveEntityEffect.effectId);
  1326. }
  1327. }
  1328.  
  1329. /**
  1330. * determine if it is a server handler
  1331. */
  1332. public boolean isServerHandler()
  1333. {
  1334. return false;
  1335. }
  1336.  
  1337. /**
  1338. * Handle a player information packet.
  1339. */
  1340. public void handlePlayerInfo(Packet201PlayerInfo par1Packet201PlayerInfo)
  1341. {
  1342. GuiPlayerInfo var2 = (GuiPlayerInfo)this.playerInfoMap.get(par1Packet201PlayerInfo.playerName);
  1343.  
  1344. if (var2 == null && par1Packet201PlayerInfo.isConnected)
  1345. {
  1346. var2 = new GuiPlayerInfo(par1Packet201PlayerInfo.playerName);
  1347. this.playerInfoMap.put(par1Packet201PlayerInfo.playerName, var2);
  1348. this.playerInfoList.add(var2);
  1349. }
  1350.  
  1351. if (var2 != null && !par1Packet201PlayerInfo.isConnected)
  1352. {
  1353. this.playerInfoMap.remove(par1Packet201PlayerInfo.playerName);
  1354. this.playerInfoList.remove(var2);
  1355. }
  1356.  
  1357. if (par1Packet201PlayerInfo.isConnected && var2 != null)
  1358. {
  1359. var2.responseTime = par1Packet201PlayerInfo.ping;
  1360. }
  1361. }
  1362.  
  1363. /**
  1364. * Handle a keep alive packet.
  1365. */
  1366. public void handleKeepAlive(Packet0KeepAlive par1Packet0KeepAlive)
  1367. {
  1368. this.addToSendQueue(new Packet0KeepAlive(par1Packet0KeepAlive.randomId));
  1369. }
  1370.  
  1371. /**
  1372. * Handle a player abilities packet.
  1373. */
  1374. public void handlePlayerAbilities(Packet202PlayerAbilities par1Packet202PlayerAbilities)
  1375. {
  1376. EntityClientPlayerMP var2 = this.mc.thePlayer;
  1377. var2.capabilities.isFlying = par1Packet202PlayerAbilities.getFlying();
  1378. var2.capabilities.isCreativeMode = par1Packet202PlayerAbilities.isCreativeMode();
  1379. var2.capabilities.disableDamage = par1Packet202PlayerAbilities.getDisableDamage();
  1380. var2.capabilities.allowFlying = par1Packet202PlayerAbilities.getAllowFlying();
  1381. var2.capabilities.setFlySpeed(par1Packet202PlayerAbilities.getFlySpeed());
  1382. var2.capabilities.setPlayerWalkSpeed(par1Packet202PlayerAbilities.getWalkSpeed());
  1383. }
  1384.  
  1385. public void handleAutoComplete(Packet203AutoComplete par1Packet203AutoComplete)
  1386. {
  1387. String[] var2 = par1Packet203AutoComplete.getText().split("\u0000");
  1388.  
  1389. if (this.mc.currentScreen instanceof GuiChat)
  1390. {
  1391. GuiChat var3 = (GuiChat)this.mc.currentScreen;
  1392. var3.func_73894_a(var2);
  1393. }
  1394. }
  1395.  
  1396. public void handleLevelSound(Packet62LevelSound par1Packet62LevelSound)
  1397. {
  1398. this.mc.theWorld.playSound(par1Packet62LevelSound.getEffectX(), par1Packet62LevelSound.getEffectY(), par1Packet62LevelSound.getEffectZ(), par1Packet62LevelSound.getSoundName(), par1Packet62LevelSound.getVolume(), par1Packet62LevelSound.getPitch(), false);
  1399. }
  1400.  
  1401. public void handleCustomPayload(Packet250CustomPayload par1Packet250CustomPayload)
  1402. {
  1403. if ("MC|TPack".equals(par1Packet250CustomPayload.channel))
  1404. {
  1405. String[] var2 = (new String(par1Packet250CustomPayload.data)).split("\u0000");
  1406. String var3 = var2[0];
  1407.  
  1408. if (var2[1].equals("16"))
  1409. {
  1410. if (this.mc.texturePackList.getAcceptsTextures())
  1411. {
  1412. this.mc.texturePackList.requestDownloadOfTexture(var3);
  1413. }
  1414. else if (this.mc.texturePackList.func_77300_f())
  1415. {
  1416. this.mc.displayGuiScreen(new GuiYesNo(new NetClientWebTextures(this, var3), StringTranslate.getInstance().translateKey("multiplayer.texturePrompt.line1"), StringTranslate.getInstance().translateKey("multiplayer.texturePrompt.line2"), 0));
  1417. }
  1418. }
  1419. }
  1420. else if ("MC|TrList".equals(par1Packet250CustomPayload.channel))
  1421. {
  1422. DataInputStream var8 = new DataInputStream(new ByteArrayInputStream(par1Packet250CustomPayload.data));
  1423.  
  1424. try
  1425. {
  1426. int var9 = var8.readInt();
  1427. GuiScreen var4 = this.mc.currentScreen;
  1428.  
  1429. if (var4 != null && var4 instanceof GuiMerchant && var9 == this.mc.thePlayer.openContainer.windowId)
  1430. {
  1431. IMerchant var5 = ((GuiMerchant)var4).getIMerchant();
  1432. MerchantRecipeList var6 = MerchantRecipeList.readRecipiesFromStream(var8);
  1433. var5.setRecipes(var6);
  1434. }
  1435. }
  1436. catch (IOException var7)
  1437. {
  1438. var7.printStackTrace();
  1439. }
  1440. }
  1441. }
  1442.  
  1443. /**
  1444. * Handle a set objective packet.
  1445. */
  1446. public void handleSetObjective(Packet206SetObjective par1Packet206SetObjective)
  1447. {
  1448. Scoreboard var2 = this.worldClient.getScoreboard();
  1449. ScoreObjective var3;
  1450.  
  1451. if (par1Packet206SetObjective.change == 0)
  1452. {
  1453. var3 = var2.func_96535_a(par1Packet206SetObjective.objectiveName, ScoreObjectiveCriteria.field_96641_b);
  1454. var3.setDisplayName(par1Packet206SetObjective.objectiveDisplayName);
  1455. }
  1456. else
  1457. {
  1458. var3 = var2.getObjective(par1Packet206SetObjective.objectiveName);
  1459.  
  1460. if (par1Packet206SetObjective.change == 1)
  1461. {
  1462. var2.func_96519_k(var3);
  1463. }
  1464. else if (par1Packet206SetObjective.change == 2)
  1465. {
  1466. var3.setDisplayName(par1Packet206SetObjective.objectiveDisplayName);
  1467. }
  1468. }
  1469. }
  1470.  
  1471. /**
  1472. * Handle a set score packet.
  1473. */
  1474. public void handleSetScore(Packet207SetScore par1Packet207SetScore)
  1475. {
  1476. Scoreboard var2 = this.worldClient.getScoreboard();
  1477. ScoreObjective var3 = var2.getObjective(par1Packet207SetScore.scoreName);
  1478.  
  1479. if (par1Packet207SetScore.updateOrRemove == 0)
  1480. {
  1481. Score var4 = var2.func_96529_a(par1Packet207SetScore.itemName, var3);
  1482. var4.func_96647_c(par1Packet207SetScore.value);
  1483. }
  1484. else if (par1Packet207SetScore.updateOrRemove == 1)
  1485. {
  1486. var2.func_96515_c(par1Packet207SetScore.itemName);
  1487. }
  1488. }
  1489.  
  1490. /**
  1491. * Handle a set display objective packet.
  1492. */
  1493. public void handleSetDisplayObjective(Packet208SetDisplayObjective par1Packet208SetDisplayObjective)
  1494. {
  1495. Scoreboard var2 = this.worldClient.getScoreboard();
  1496.  
  1497. if (par1Packet208SetDisplayObjective.scoreName.length() == 0)
  1498. {
  1499. var2.func_96530_a(par1Packet208SetDisplayObjective.scoreboardPosition, (ScoreObjective)null);
  1500. }
  1501. else
  1502. {
  1503. ScoreObjective var3 = var2.getObjective(par1Packet208SetDisplayObjective.scoreName);
  1504. var2.func_96530_a(par1Packet208SetDisplayObjective.scoreboardPosition, var3);
  1505. }
  1506. }
  1507.  
  1508. /**
  1509. * Handle a set player team packet.
  1510. */
  1511. public void handleSetPlayerTeam(Packet209SetPlayerTeam par1Packet209SetPlayerTeam)
  1512. {
  1513. Scoreboard var2 = this.worldClient.getScoreboard();
  1514. ScorePlayerTeam var3;
  1515.  
  1516. if (par1Packet209SetPlayerTeam.mode == 0)
  1517. {
  1518. var3 = var2.func_96527_f(par1Packet209SetPlayerTeam.teamName);
  1519. }
  1520. else
  1521. {
  1522. var3 = var2.func_96508_e(par1Packet209SetPlayerTeam.teamName);
  1523. }
  1524.  
  1525. if (par1Packet209SetPlayerTeam.mode == 0 || par1Packet209SetPlayerTeam.mode == 2)
  1526. {
  1527. var3.func_96664_a(par1Packet209SetPlayerTeam.teamDisplayName);
  1528. var3.func_96666_b(par1Packet209SetPlayerTeam.teamPrefix);
  1529. var3.func_96662_c(par1Packet209SetPlayerTeam.teamSuffix);
  1530. var3.func_98298_a(par1Packet209SetPlayerTeam.friendlyFire);
  1531. }
  1532.  
  1533. Iterator var4;
  1534. String var5;
  1535.  
  1536. if (par1Packet209SetPlayerTeam.mode == 0 || par1Packet209SetPlayerTeam.mode == 3)
  1537. {
  1538. var4 = par1Packet209SetPlayerTeam.playerNames.iterator();
  1539.  
  1540. while (var4.hasNext())
  1541. {
  1542. var5 = (String)var4.next();
  1543. var2.func_96521_a(var5, var3);
  1544. }
  1545. }
  1546.  
  1547. if (par1Packet209SetPlayerTeam.mode == 4)
  1548. {
  1549. var4 = par1Packet209SetPlayerTeam.playerNames.iterator();
  1550.  
  1551. while (var4.hasNext())
  1552. {
  1553. var5 = (String)var4.next();
  1554. var2.removePlayerFromTeam(var5, var3);
  1555. }
  1556. }
  1557.  
  1558. if (par1Packet209SetPlayerTeam.mode == 1)
  1559. {
  1560. var2.func_96511_d(var3);
  1561. }
  1562. }
  1563.  
  1564. /**
  1565. * Handle a world particles packet.
  1566. */
  1567. public void handleWorldParticles(Packet63WorldParticles par1Packet63WorldParticles)
  1568. {
  1569. for (int var2 = 0; var2 < par1Packet63WorldParticles.getQuantity(); ++var2)
  1570. {
  1571. double var3 = this.rand.nextGaussian() * (double)par1Packet63WorldParticles.getOffsetX();
  1572. double var5 = this.rand.nextGaussian() * (double)par1Packet63WorldParticles.getOffsetY();
  1573. double var7 = this.rand.nextGaussian() * (double)par1Packet63WorldParticles.getOffsetZ();
  1574. double var9 = this.rand.nextGaussian() * (double)par1Packet63WorldParticles.getSpeed();
  1575. double var11 = this.rand.nextGaussian() * (double)par1Packet63WorldParticles.getSpeed();
  1576. double var13 = this.rand.nextGaussian() * (double)par1Packet63WorldParticles.getSpeed();
  1577. this.worldClient.spawnParticle(par1Packet63WorldParticles.getParticleName(), par1Packet63WorldParticles.getPositionX() + var3, par1Packet63WorldParticles.getPositionY() + var5, par1Packet63WorldParticles.getPositionZ() + var7, var9, var11, var13);
  1578. }
  1579. }
  1580.  
  1581. /**
  1582. * Return the NetworkManager instance used by this NetClientHandler
  1583. */
  1584. public INetworkManager getNetManager()
  1585. {
  1586. return this.netManager;
  1587. }
  1588. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement