Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package pl.hardage.core.listeners;
- import java.util.Collection;
- import java.util.Iterator;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.entity.EntityDamageEvent;
- import org.bukkit.event.entity.PlayerDeathEvent;
- import pl.hardage.haantilogout.data.Assist;
- import pl.hardage.haantilogout.data.Combat;
- import pl.hardage.haantilogout.managers.CombatManager;
- import pl.hardage.core.data.base.Guild;
- import pl.hardage.core.data.base.User;
- import pl.hardage.core.lang.Lang;
- import pl.hardage.core.managers.DeathBanManager;
- import pl.hardage.core.managers.GuildManager;
- import pl.hardage.core.managers.UserManager;
- import pl.hardage.core.utils.ItemUtil;
- //import pl.hardage.core.utils.PolishItemNames;
- import pl.hardage.core.utils.Util;
- import pl.hardage.core.data.base.Backup;
- public class PlayerDeathListener implements Listener {
- @SuppressWarnings({ "rawtypes", "deprecation" })
- @EventHandler
- public void onPlayerDeath(PlayerDeathEvent event) {
- Player victim = event.getEntity();
- DeathBanManager.banPlayer(victim);
- User pUser = UserManager.getUser(victim);
- new Backup(victim, desc(victim));
- Util.sendMsg((CommandSender)victim, "&8Kopia zapasowa twojego ekwipunktu zostala utworzona z data &c" + Util.getDate(System.currentTimeMillis()) + "&8!");
- if (!(event.getEntity().getKiller() instanceof Player)) {
- pUser.addDeath(1);
- pUser.update(false);
- event.setDeathMessage(null);
- return;
- }
- Combat combat = CombatManager.getCombat(victim);
- if(combat == null){
- return;
- }
- if(combat.getLastAttacker() == null){
- return;
- }
- Player attacker = combat.getLastAttacker().getPlayer();
- Collection assists = combat.getAssists();
- Assist lastAssist = combat.getLastAttacker();
- User kUser = null;
- CombatManager.removeCombat(victim);
- if(attacker != null) {
- CombatManager.removeCombat(attacker);
- kUser = UserManager.getUser(attacker);
- kUser.setFirstKill(victim.getName());
- Guild pGuild = GuildManager.getGuild(victim);
- Guild kGuild = GuildManager.getGuild(attacker);
- String allAssists = "";
- int number = 0;
- Iterator losePoints = assists.iterator();
- while(losePoints.hasNext()) {
- Assist winPoints = (Assist)losePoints.next();
- ++number;
- if(!winPoints.getPlayer().getName().equalsIgnoreCase(attacker.getName())) {
- User msg = UserManager.getUser(winPoints.getPlayer());
- int percent = combat.getDamagePercent(winPoints);
- int ranking = this.calculateRanking(pUser, msg, (double)percent);
- msg.addAssist(1);
- msg.addPoints(ranking);
- String format = Lang.MSG_PLAYER_DEATHMESSAGE_ASSISTS_FORMAT;
- format = format.replace("{PLAYER}", winPoints.getPlayer().getName());
- format = format.replace("{PERCENT}", Integer.toString(percent));
- format = format.replace("{+}", Integer.toString(ranking));
- allAssists = allAssists + format + (number < assists.size() - 1?", ":"");
- }
- }
- int var19 = this.calculateRanking(pUser, kUser, lastAssist.getDamage());
- int var20 = Math.abs(var19 / 2);
- pUser.removePoints(var20);
- kUser.addPoints(var19);
- kUser.addKill(1);
- String var21 = Lang.MSG_PLAYER_DEATHMESSAGE;
- var21 = var21.replace("{DPLAYER}", victim.getName());
- if(pGuild != null) {
- var21 = var21.replace("{DTAG}", " &6[&c" + pGuild.getTag() + "&6]");
- } else {
- var21 = var21.replace("{DTAG}", "");
- }
- var21 = var21.replace("{KPLAYER}", attacker.getName());
- if(kGuild != null) {
- var21 = var21.replace("{KTAG}", " &6[&c" + kGuild.getTag() + "&6]");
- } else {
- var21 = var21.replace("{KTAG}", "");
- }
- //var21 = var21.replace("{ITEM}", PolishItemNames.getPolishName(attacker.getItemInHand().getType()));
- var21 = var21.replace("{-}", Integer.toString(var20));
- var21 = var21.replace("{PERCENT}", Integer.toString(combat.getDamagePercent(lastAssist)));
- var21 = var21.replace("{+}", Integer.toString(var19));
- event.setDeathMessage(Util.fixColor(var21 + (assists.size() > 1?"\n" + Lang.MSG_PLAYER_DEATHMESSAGE_ASSISTS.replace("{ASSISTS}", allAssists):"")));
- } else {
- event.setDeathMessage((String)null);
- }
- pUser.addDeath(1);
- pUser.update(false);
- victim.getLocation().getWorld().dropItemNaturally(victim.getLocation(), ItemUtil.getPlayerHead(pUser.getLastName()));
- }
- private int calculateRanking(User victim, User attacker, double percent) {
- int winPoints = (int)(304.0D + (double)(attacker.getPoints() - victim.getPoints()) * -0.3D);
- if(winPoints <= -10) {
- winPoints = -10;
- } else if(attacker.getLastIp().equalsIgnoreCase(victim.getLastIp())) {
- winPoints = 0;
- }
- return (int)((double)winPoints * percent / 100.0D);
- }
- private String desc(final Player p) {
- final EntityDamageEvent e = p.getLastDamageCause();
- String cause = "-";
- if (e == null) {
- cause = "logouth";
- }
- else if (e.getCause() == EntityDamageEvent.DamageCause.ENTITY_ATTACK) {
- if (p.getKiller() != null) {
- cause = p.getKiller().getName();
- }
- else {
- cause = "mob";
- }
- }
- else {
- cause = p.getLastDamageCause().getCause().name().toLowerCase();
- }
- return cause;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement