Advertisement
Guest User

Untitled

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