package at.er.ytbattle.plugin.player; import at.er.ytbattle.plugin.BattlePlugin; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; import java.util.*; public class BattlePlayerManager implements Listener { private Map<UUID, BattlePlayer> players; public BattlePlayerManager() { this.players = new HashMap<>(); BattlePlugin.instance().getServer().getPluginManager().registerEvents(this, BattlePlugin.instance()); for (Player p : Bukkit.getOnlinePlayers()) { if (!this.players.containsKey(p.getUniqueId())) { BattlePlayer battlePlayer = new BattlePlayer(p); this.players.put(UUID.fromString(p.getUniqueId().toString()), battlePlayer); } } } private Object readResolve() { BattlePlugin.instance().getServer().getPluginManager().registerEvents(this, BattlePlugin.instance()); return this; } public BattlePlayer getBattlePlayer(UUID uuid) { return this.players.get(uuid); } public BattlePlayer getBattlePlayer(Player player) { return this.getBattlePlayer(player.getUniqueId()); } public List<BattlePlayer> getAllBattlePlayers() { return new ArrayList<>(this.players.values()); } public int getBattlePlayerCount() { return this.players.size(); } @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerLogin(PlayerLoginEvent event) { Player player = event.getPlayer(); if (!this.players.containsKey(player.getUniqueId())) { BattlePlayer battlePlayer = new BattlePlayer(player); this.players.put(UUID.fromString(player.getUniqueId().toString()), battlePlayer); } } @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerQuit(PlayerQuitEvent event) { this.getBattlePlayer(event.getPlayer()).store(); } @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerKick(PlayerKickEvent event) { this.getBattlePlayer(event.getPlayer()).store(); } }