ProjectAres/PGM/src/main/java/tc/oc/pgm/playerstats/StatsUserFacet.java

76 lines
2.1 KiB
Java

package tc.oc.pgm.playerstats;
import java.util.UUID;
import javax.inject.Inject;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import tc.oc.commons.bukkit.event.targeted.TargetedEventHandler;
import tc.oc.pgm.events.MatchPlayerDeathEvent;
import tc.oc.pgm.events.PlayerPartyChangeEvent;
import tc.oc.pgm.match.MatchUserFacet;
import tc.oc.pgm.match.ParticipantState;
import tc.oc.pgm.match.inject.ForMatchUser;
import tc.oc.pgm.spawns.events.ParticipantSpawnEvent;
public class StatsUserFacet implements MatchUserFacet, Listener {
private final UUID player;
private int lifeKills, teamKills, matchKills, deaths;
@Inject public StatsUserFacet(@ForMatchUser UUID player) {
this.player = player;
}
/**
* Get the amount of kills since this player last spawned.
*/
public int lifeKills() {
return lifeKills;
}
/**
* Get the amount of kills since this player has been on a party.
*/
public int teamKills() {
return teamKills;
}
/**
* Get the amount of kills this player got in the whole match.
*/
public int matchKills() {
return matchKills;
}
/**
* Amount of times this player died.
*/
public int deaths() {
return deaths;
}
@TargetedEventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onKill(final MatchPlayerDeathEvent event) {
ParticipantState killer = event.getKiller();
if (event.getVictim().getUniqueId().equals(player)) {
++deaths;
} else if (killer != null && killer.getUniqueId().equals(player) && event.isEnemyKill()) {
++lifeKills;
++teamKills;
++matchKills;
}
}
@TargetedEventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onSpawn(final ParticipantSpawnEvent event) {
lifeKills = 0;
}
@TargetedEventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPartyChange(final PlayerPartyChangeEvent event) {
lifeKills = 0;
teamKills = 0;
}
}