Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.12 KB | None | 0 0
  1. package pl.hardage.core.listeners;
  2.  
  3. import java.util.Collection;
  4. import java.util.Iterator;
  5. import org.bukkit.command.CommandSender;
  6. import org.bukkit.entity.Player;
  7. import org.bukkit.event.EventHandler;
  8. import org.bukkit.event.Listener;
  9. import org.bukkit.event.entity.EntityDamageEvent;
  10. import org.bukkit.event.entity.PlayerDeathEvent;
  11. import pl.hardage.haantilogout.data.Assist;
  12. import pl.hardage.haantilogout.data.Combat;
  13. import pl.hardage.haantilogout.managers.CombatManager;
  14. import pl.hardage.core.data.base.Guild;
  15. import pl.hardage.core.data.base.User;
  16. import pl.hardage.core.lang.Lang;
  17. import pl.hardage.core.managers.DeathBanManager;
  18. import pl.hardage.core.managers.GuildManager;
  19. import pl.hardage.core.managers.UserManager;
  20. import pl.hardage.core.utils.ItemUtil;
  21. //import pl.hardage.core.utils.PolishItemNames;
  22. import pl.hardage.core.utils.Util;
  23. import pl.hardage.core.data.base.Backup;
  24.  
  25. public class PlayerDeathListener implements Listener {
  26. @SuppressWarnings({ "rawtypes", "deprecation" })
  27. @EventHandler
  28. public void onPlayerDeath(PlayerDeathEvent event) {
  29. Player victim = event.getEntity();
  30. DeathBanManager.banPlayer(victim);
  31.  
  32. User pUser = UserManager.getUser(victim);
  33.  
  34. new Backup(victim, desc(victim));
  35. if (!(event.getEntity().getKiller() instanceof Player)) {
  36. pUser.addDeath(1);
  37. pUser.update(false);
  38. event.setDeathMessage(null);
  39. return;
  40. }
  41.  
  42.  
  43. Combat combat = CombatManager.getCombat(victim);
  44.  
  45. if(combat == null){
  46. return;
  47. }
  48. if(combat.getLastAttacker() == null){
  49. return;
  50. }
  51. Player attacker = combat.getLastAttacker().getPlayer();
  52. Collection assists = combat.getAssists();
  53. Assist lastAssist = combat.getLastAttacker();
  54.  
  55. User kUser = null;
  56. CombatManager.removeCombat(victim);
  57. if(attacker != null) {
  58. CombatManager.removeCombat(attacker);
  59. kUser = UserManager.getUser(attacker);
  60. kUser.setFirstKill(victim.getName());
  61. Guild pGuild = GuildManager.getGuild(victim);
  62. Guild kGuild = GuildManager.getGuild(attacker);
  63. String allAssists = "";
  64. int number = 0;
  65. Iterator losePoints = assists.iterator();
  66.  
  67. while(losePoints.hasNext()) {
  68. Assist winPoints = (Assist)losePoints.next();
  69. ++number;
  70. if(!winPoints.getPlayer().getName().equalsIgnoreCase(attacker.getName())) {
  71. User msg = UserManager.getUser(winPoints.getPlayer());
  72. int percent = combat.getDamagePercent(winPoints);
  73. int ranking = this.calculateRanking(pUser, msg, (double)percent);
  74. msg.addAssist(1);
  75. msg.addPoints(ranking);
  76. String format = Lang.MSG_PLAYER_DEATHMESSAGE_ASSISTS_FORMAT;
  77. format = format.replace("{PLAYER}", winPoints.getPlayer().getName());
  78. format = format.replace("{PERCENT}", Integer.toString(percent));
  79. format = format.replace("{+}", Integer.toString(ranking));
  80. allAssists = allAssists + format + (number < assists.size() - 1?", ":"");
  81. }
  82. }
  83.  
  84. int var19 = this.calculateRanking(pUser, kUser, lastAssist.getDamage());
  85. int var20 = Math.abs(var19 / 2);
  86. pUser.removePoints(var20);
  87. kUser.addPoints(var19);
  88. kUser.addKill(1);
  89. String var21 = Lang.MSG_PLAYER_DEATHMESSAGE;
  90. var21 = var21.replace("{DPLAYER}", victim.getName());
  91. if(pGuild != null) {
  92. var21 = var21.replace("{DTAG}", " &6[&c" + pGuild.getTag() + "&6]");
  93. } else {
  94. var21 = var21.replace("{DTAG}", "");
  95. }
  96.  
  97. var21 = var21.replace("{KPLAYER}", attacker.getName());
  98. if(kGuild != null) {
  99. var21 = var21.replace("{KTAG}", " &6[&c" + kGuild.getTag() + "&6]");
  100. } else {
  101. var21 = var21.replace("{KTAG}", "");
  102. }
  103.  
  104. //var21 = var21.replace("{ITEM}", PolishItemNames.getPolishName(attacker.getItemInHand().getType()));
  105. var21 = var21.replace("{-}", Integer.toString(var20));
  106. var21 = var21.replace("{PERCENT}", Integer.toString(combat.getDamagePercent(lastAssist)));
  107. var21 = var21.replace("{+}", Integer.toString(var19));
  108. event.setDeathMessage(Util.fixColor(var21 + (assists.size() > 1?"\n" + Lang.MSG_PLAYER_DEATHMESSAGE_ASSISTS.replace("{ASSISTS}", allAssists):"")));
  109. } else {
  110. event.setDeathMessage((String)null);
  111. }
  112. Util.sendMsg((CommandSender)victim, "&8Kopia zapasowa twojego ekwipunktu zostala utworzona z data &c" + Util.getDate(System.currentTimeMillis()) + "&8!");
  113. pUser.addDeath(1);
  114. pUser.update(false);
  115. victim.getLocation().getWorld().dropItemNaturally(victim.getLocation(), ItemUtil.getPlayerHead(pUser.getLastName()));
  116. }
  117.  
  118. private int calculateRanking(User victim, User attacker, double percent) {
  119. int winPoints = (int)(304.0D + (double)(attacker.getPoints() - victim.getPoints()) * -0.3D);
  120. if(winPoints <= -10) {
  121. winPoints = -10;
  122. } else if(attacker.getLastIp().equalsIgnoreCase(victim.getLastIp())) {
  123. winPoints = 0;
  124. }
  125.  
  126. return (int)((double)winPoints * percent / 100.0D);
  127. }
  128.  
  129. private String desc(final Player p) {
  130. final EntityDamageEvent e = p.getLastDamageCause();
  131. String cause = "-";
  132. if (e == null) {
  133. cause = "logouth";
  134. }
  135. else if (e.getCause() == EntityDamageEvent.DamageCause.ENTITY_ATTACK) {
  136. if (p.getKiller() != null) {
  137. cause = p.getKiller().getName();
  138. }
  139. else {
  140. cause = "mob";
  141. }
  142. }
  143. else {
  144. cause = p.getLastDamageCause().getCause().name().toLowerCase();
  145. }
  146. return cause;
  147. }
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement