package com.nisovin.magicspells; import java.util.HashMap; import java.util.Map; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerRespawnEvent; public class LifeLengthTracker implements Listener { Map<String, Long> lastSpawn = new HashMap<String, Long>(); Map<String, Integer> lastLifeLength = new HashMap<String, Integer>(); public LifeLengthTracker() { for (Player player : Bukkit.getOnlinePlayers()) { lastSpawn.put(player.getName(), System.currentTimeMillis()); } MagicSpells.registerEvents(this); } public int getCurrentLifeLength(Player player) { if (lastSpawn.containsKey(player.getName())) { long spawn = lastSpawn.get(player.getName()); return (int)((System.currentTimeMillis() - spawn) / 1000); } else { return 0; } } public int getLastLifeLength(Player player) { if (lastLifeLength.containsKey(player.getName())) { return lastLifeLength.get(player.getName()); } else { return 0; } } @EventHandler public void onJoin(PlayerJoinEvent event) { lastSpawn.put(event.getPlayer().getName(), System.currentTimeMillis()); } @EventHandler public void onQuit(PlayerQuitEvent event) { Long spawn = lastSpawn.remove(event.getPlayer().getName()); if (spawn != null) { lastLifeLength.put(event.getPlayer().getName(), (int)((System.currentTimeMillis() - spawn) / 1000)); } } @EventHandler public void onDeath(PlayerDeathEvent event) { Long spawn = lastSpawn.remove(event.getEntity().getName()); if (spawn != null) { lastLifeLength.put(event.getEntity().getName(), (int)((System.currentTimeMillis() - spawn) / 1000)); } } @EventHandler public void onRespawn(PlayerRespawnEvent event) { lastSpawn.put(event.getPlayer().getName(), System.currentTimeMillis()); } }