Server lags on players death

Discussion in 'Plugin Development' started by viper_monster, Apr 14, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    viper_monster

    I have a BIG problem... Every time a player dies server lags for a few seconds and no errors show in teh console. Here is the code:
    Code:java
    1. @EventHandler(priority = EventPriority.LOWEST)
    2. public void onPlayerDeath(PlayerDeathEvent e) {
    3. final Player player = e.getEntity();
    4. Long kbRemoveDelay = Main.getPl().config.getConfig().getLong("kill-boosting-tag-duration", 180);
    5.  
    6. if (player.isInsideVehicle()) {
    7. if (player.getVehicle() instanceof Horse) {
    8. Horse horse = (Horse) player.getVehicle();
    9. horse.eject();
    10. horse.setHealth(0);
    11. } else {
    12. Entity entity = player.getVehicle();
    13. entity.eject();
    14. }
    15. }
    16.  
    17. if (e.getEntity().getKiller() != null) {
    18. final Player killer = e.getEntity().getKiller();
    19.  
    20. if (!PlayerUtils.getPlayerUtils().hasPermission(killer, "bypass.killboosting")) {
    21. if (StorageUtils.getStorageUtils().killBoosting.contains(killer.getUniqueId(), player.getUniqueId())) {
    22. if (StorageUtils.getStorageUtils().killBoosting.get(killer.getUniqueId(), player.getUniqueId()) < 5) {
    23. StorageUtils.getStorageUtils().killBoosting.put(killer.getUniqueId(), player.getUniqueId(), StorageUtils.getStorageUtils().killBoosting.get(killer.getUniqueId(), player.getUniqueId()) + 1);
    24. }
    25. if (StorageUtils.getStorageUtils().killBoosting.get(killer.getUniqueId(), player.getUniqueId()) == 5) {
    26. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7started boosting kills on %s&7!", killer.getDisplayName(), player.getDisplayName())));
    27. Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.getPl(), new BukkitRunnable() {
    28. public void run() {
    29. if (StorageUtils.getStorageUtils().killBoosting.contains(killer.getUniqueId(), player.getUniqueId())) {
    30. StorageUtils.getStorageUtils().killBoosting.remove(killer.getUniqueId(), player.getUniqueId());
    31. MessageUtils.getMessageUtils().sendMessage(killer, String.format("&7You can start killing %s &7again.", player.getDisplayName()));
    32. }
    33. }
    34. }, 20L * kbRemoveDelay);
    35. }
    36.  
    37. } else {
    38. StorageUtils.getStorageUtils().killBoosting.put(killer.getUniqueId(), player.getUniqueId(), 1);
    39. }
    40. }
    41.  
    42. if (PlayerUtils.getPlayerUtils().hasKit(player) && PlayerUtils.getPlayerUtils().hasKit(killer)) {
    43. StatUtils.getStatUtils().setKills(killer, StatUtils.getStatUtils().getKills(killer) + 1);
    44. StatUtils.getStatUtils().setKillstreak(killer, StatUtils.getStatUtils().getKillstreak(killer) + 1);
    45.  
    46. int randomNum = RandomUtils.getRandomUtils().getRandomInt(1, 3);
    47. if ((randomNum == 1) || (randomNum == 3)) {
    48. int money = 200;
    49. Main.getPl().economy.depositPlayer(killer.getName(), money);
    50. MessageUtils.getMessageUtils().sendMessage(killer, String.format("&7You received &c%s$ &7for killing %s&7.", money, player.getDisplayName()));
    51. } else if (randomNum == 2) {
    52. int money = RandomUtils.getRandomUtils().getRandomInt(200, 300);
    53. Main.getPl().economy.depositPlayer(killer.getName(), money);
    54. MessageUtils.getMessageUtils().sendMessage(killer, String.format("&7You received &c%s$ &7for killing %s&7.", money, player.getDisplayName()));
    55. }
    56.  
    57. int killstreak = StatUtils.getStatUtils().getKillstreak(killer);
    58. switch (killstreak) {
    59. case 10:
    60. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    61. break;
    62. case 25:
    63. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    64. break;
    65. case 30:
    66. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    67. break;
    68. case 40:
    69. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    70. break;
    71. case 50:
    72. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "manpromote " + killer.getName() + " vip");
    73. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    74. break;
    75. case 75:
    76. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    77. break;
    78. case 100:
    79. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "manpromote " + killer.getName() + " mvp");
    80. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    81. break;
    82. case 150:
    83. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "manpromote " + killer.getName() + " pro");
    84. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    85. break;
    86. case 200:
    87. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    88. break;
    89. case 300:
    90. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    91. break;
    92. case 400:
    93. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    94. break;
    95. case 500:
    96. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "manpromote " + killer.getName() + " pro+");
    97. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    98. break;
    99. case 750:
    100. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    101. break;
    102. case 1000:
    103. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7has gotten a killstreak of &c%s&7.", killer.getDisplayName(), killstreak)));
    104. }
    105. }
    106.  
    107. if (e.getDeathMessage().contains("using ")) {
    108. e.setDeathMessage(player.getDisplayName() + " was slain by " + killer.getDisplayName());
    109. } else {
    110. e.setDeathMessage(e.getDeathMessage().replace(player.getName(), player.getDisplayName()).replace(killer.getName(), killer.getDisplayName()));
    111. }
    112.  
    113.  
    114. if (StatUtils.getStatUtils().getKillstreak(player) >= 10) {
    115. Bukkit.getServer().broadcastMessage(MessageUtils.getMessageUtils().translateColors(String.format("%s &7just ended %s&7's killstreak of &c%s&7!", killer.getDisplayName(), player.getDisplayName(), StatUtils.getStatUtils().getKillstreak(player))));
    116. }
    117.  
    118. StatUtils.getStatUtils().setDeaths(player, StatUtils.getStatUtils().getDeaths(player) + 1);
    119. StatUtils.getStatUtils().setKillstreak(player, 0);
    120.  
    121. ScoreboardManager scoreboardManager = new ScoreboardManager(killer,
    122. StatUtils.getStatUtils().getKills(killer),
    123. StatUtils.getStatUtils().getDeaths(killer),
    124. StatUtils.getStatUtils().getKillstreak(killer));
    125. scoreboardManager.setScoreboard();
    126. } else {
    127.  
    128. StatUtils.getStatUtils().setKillstreak(player, 0);
    129. StatUtils.getStatUtils().setDeaths(player, StatUtils.getStatUtils().getDeaths(player) + 1);
    130.  
    131. e.setDeathMessage(e.getDeathMessage().replace(player.getName(), player.getDisplayName()));
    132. }
    133.  
    134. if (PlayerUtils.getPlayerUtils().getKit(player).equalsIgnoreCase("jesus")) {
    135. if (!StorageUtils.getStorageUtils().jesus.containsKey(player.getUniqueId())) {
    136. player.setHealth(20);
    137. PlayerUtils.getPlayerUtils().resetPlayer(player);
    138. StorageUtils.getStorageUtils().jesus.put(player.getUniqueId(), 1);
    139. MessageUtils.getMessageUtils().sendMessage(player, "&7You have one more life left! Use it wisely!");
    140. Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.getPl(), new BukkitRunnable() {
    141. public void run() {
    142. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "kit jesus " + player.getName());
    143. }
    144. });
    145. } else {
    146. CooldownUtils.getCooldownUtils().removeCooldowns(player);
    147. StorageUtils.getStorageUtils().jesus.remove(player.getUniqueId());
    148. }
    149. }
    150.  
    151. ScoreboardManager scoreboardManager = new ScoreboardManager(player,
    152. StatUtils.getStatUtils().getKills(player),
    153. StatUtils.getStatUtils().getDeaths(player),
    154. StatUtils.getStatUtils().getKillstreak(player));
    155. scoreboardManager.setScoreboard();
    156.  
    157. StorageUtils.getStorageUtils().frozen.remove(player.getUniqueId());
    158. StorageUtils.getStorageUtils().noFallEnder.remove(player.getUniqueId());
    159. StorageUtils.getStorageUtils().pvpLogg.remove(player.getUniqueId());
    160. StorageUtils.getStorageUtils().epLoc.remove(player.getUniqueId());
    161. StorageUtils.getStorageUtils().refillArmor.remove(player.getUniqueId());
    162. StorageUtils.getStorageUtils().refillHealth.remove(player.getUniqueId());
    163. PlayerUtils.getPlayerUtils().removeKit(player);
    164.  
    165. e.getDrops().clear();
    166.  
    167. /*if (DisguiseAPI.isDisguised(player)) {
    168.   DisguiseAPI.undisguiseToAll(player);
    169.   }*/
    170. }
     
  2. Offline

    skyrimfan1

    My god. Just my god.

    You're obviously writing and reading results from/to a database of some sort. Judging by the amount of queries made, this is what is lagging the server. I would recommend passing off the set [var] queries to a ScheduledExecutorService or running them asynchronously.
     
    Garris0n likes this.
  3. Offline

    viper_monster

    skyrimfan1 I'm reading data from HashMaps + it didn't lag at all when I was using 1.7.4
     
Thread Status:
Not open for further replies.

Share This Page