package be.isach.ultracosmetics.player; import be.isach.ultracosmetics.UltraCosmetics; import be.isach.ultracosmetics.config.SettingsManager; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import java.util.Collection; import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; /** * Manager for UltraPlayers. * * @author iSach * @since 12-16-2015 */ public class UltraPlayerManager { private Map<UUID, UltraPlayer> playerCache; private UltraCosmetics ultraCosmetics; public UltraPlayerManager(UltraCosmetics ultraCosmetics) { this.playerCache = new ConcurrentHashMap<>(); this.ultraCosmetics = ultraCosmetics; } public UltraPlayer getUltraPlayer(Player player) { UltraPlayer p = playerCache.get(player.getUniqueId()); if (p == null) return create(player); return p; } public UltraPlayer create(Player player) { UltraPlayer customPlayer = new UltraPlayer(player.getUniqueId(), ultraCosmetics); playerCache.put(player.getUniqueId(), customPlayer); return customPlayer; } public boolean remove(Player player) { return playerCache.remove(player.getUniqueId()) != null; } public Collection<UltraPlayer> getUltraPlayers() { return playerCache.values(); } /** * Initialize players. */ public void initPlayers() { for (Player p : Bukkit.getOnlinePlayers()) { create(p); if ((boolean) SettingsManager.getConfig().get("Menu-Item.Give-On-Join") && (SettingsManager.getConfig().getStringList("Enabled-Worlds")).contains(p.getWorld().getName())) getUltraPlayer(p).giveMenuItem(); } } public void dispose() { Collection<UltraPlayer> set = playerCache.values(); for (UltraPlayer cp : set) { if (cp.getCurrentTreasureChest() != null) cp.getCurrentTreasureChest().forceOpen(0); cp.clear(); cp.removeMenuItem(); } playerCache.clear(); playerCache = null; } }