Advertisement
Guest User

Untitled

a guest
May 27th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. package org.rscdaemon.server.packetbuilder.client;
  2.  
  3. import org.rscdaemon.server.packetbuilder.RSCPacketBuilder;
  4. import org.rscdaemon.server.util.DataConversions;
  5. import org.rscdaemon.server.model.*;
  6. import org.rscdaemon.server.net.RSCPacket;
  7.  
  8.  
  9.  
  10. import java.util.List;
  11. import java.lang.String;
  12.  
  13. public class PlayerUpdatePacketBuilder {
  14. private Player playerToUpdate;
  15.  
  16. /**
  17. * Sets the player to update
  18. */
  19. public void setPlayer(Player p) {
  20. playerToUpdate = p;
  21. }
  22.  
  23. public RSCPacket getPacket() {
  24. List<Bubble> bubblesNeedingDisplayed = playerToUpdate
  25. .getBubblesNeedingDisplayed();
  26. List<ChatMessage> chatMessagesNeedingDisplayed = playerToUpdate
  27. .getChatMessagesNeedingDisplayed();
  28. List<Player> playersNeedingHitsUpdate = playerToUpdate
  29. .getPlayersRequiringHitsUpdate();
  30.  
  31. List<Projectile> projectilesNeedingDisplayed = playerToUpdate
  32. .getProjectilesNeedingDisplayed();
  33. List<Player> playersNeedingAppearanceUpdate = playerToUpdate
  34. .getPlayersRequiringAppearanceUpdate();
  35.  
  36. int updateSize = bubblesNeedingDisplayed.size()
  37. + chatMessagesNeedingDisplayed.size()
  38. + playersNeedingHitsUpdate.size()
  39. + projectilesNeedingDisplayed.size()
  40. + playersNeedingAppearanceUpdate.size();
  41. if (updateSize > 0) {
  42. RSCPacketBuilder updates = new RSCPacketBuilder();
  43. updates.setID(53);
  44. updates.addShort(updateSize);
  45. for (Bubble b : bubblesNeedingDisplayed) { // 0 - Draws item over
  46. // players head
  47. updates.addShort(b.getOwner().getIndex());
  48. updates.addByte((byte) 0);
  49. updates.addShort(b.getID());
  50. }
  51. for (ChatMessage cm : chatMessagesNeedingDisplayed) { // 1/6 -
  52. // Player
  53. // talking
  54. updates.addShort(cm.getSender().getIndex());
  55. updates.addByte((byte) (cm.getRecipient() == null ? 1 : 6));
  56. updates.addByte((byte) cm.getLength());
  57. updates.addBytes(cm.getMessage());
  58. }
  59. for (Player p : playersNeedingHitsUpdate) { // 2 - Hitpoints update
  60. // for players, draws
  61. // health bar etc too
  62. updates.addShort(p.getIndex());
  63. updates.addByte((byte) 2);
  64. updates.addByte((byte) p.getLastDamage());
  65. updates.addByte((byte) p.getCurStat(3));
  66. updates.addByte((byte) p.getMaxStat(3));
  67. }
  68. for (Projectile p : projectilesNeedingDisplayed) { // 3/4 - Draws a
  69. // projectile
  70. Entity victim = p.getVictim();
  71. if (victim instanceof Npc) {
  72. updates.addShort(p.getCaster().getIndex());
  73. updates.addByte((byte) 3);
  74. updates.addShort(p.getType());
  75. updates.addShort(((Npc) victim).getIndex());
  76. } else if (victim instanceof Player) {
  77. updates.addShort(p.getCaster().getIndex());
  78. updates.addByte((byte) 4);
  79. updates.addShort(p.getType());
  80. updates.addShort(((Player) victim).getIndex());
  81. }
  82. }
  83. for (Player p : playersNeedingAppearanceUpdate) { // 5 - Updates
  84. // players
  85. // appearance,
  86. // clothes,
  87. // skull, combat
  88. // etc.
  89. PlayerAppearance appearance = p.getPlayerAppearance();
  90. updates.addShort(p.getIndex());
  91. updates.addByte((byte) 5);
  92. updates.addShort(p.getAppearanceID());
  93. if (p.isGay()) // 4 miles and ch3rry
  94. updates.addLong(DataConversions.usernameToHash("GAY "
  95. + p.getUsername()));
  96. else
  97. updates.addLong(p.getClanNameHash().concat(p.getUsernameHash()));
  98. updates.addByte((byte) p.getWornItems().length);
  99. for (int i : p.getWornItems()) {
  100.  
  101. updates.addByte((byte) i);
  102. }
  103. updates.addByte(appearance.getHairColour());
  104. updates.addByte(appearance.getTopColour());
  105. updates.addByte(appearance.getTrouserColour());
  106. updates.addByte(appearance.getSkinColour());
  107. updates.addShort(p.getCombatLevel());
  108. updates.addByte((byte) (p.isSkulled() ? 1 : 0));
  109. updates.addByte((byte) (p.isAdmin() ? 3 : (p.isMod() ? 2 : (p
  110. .isPMod() ? 1 : 0))));
  111. // updates.addBytes((p.flag == null ? "--".getBytes() :
  112. // p.flag.getBytes()));
  113. updates.addLong(DataConversions
  114. .usernameToHash((p.flag == null ? "--" : p.flag)));
  115. // System.out.println("Byte size: " + p.flag.getBytes().length);
  116. }
  117. return updates.toPacket();
  118. }
  119. return null;
  120. }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement