/* * This file is part of MyPet * * Copyright © 2011-2016 Keyle * MyPet is licensed under the GNU Lesser General Public License. * * MyPet is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * MyPet is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package de.Keyle.MyPet.api.repository; import de.Keyle.MyPet.MyPetApi; import de.Keyle.MyPet.api.player.MyPetPlayer; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; public abstract class PlayerManager { protected final Map<UUID, UUID> uuidToInternalUUID = new ConcurrentHashMap<>(); protected final Map<UUID, MyPetPlayer> onlinePlayers = new ConcurrentHashMap<>(); public UUID getInternalUUID(Player player) { return uuidToInternalUUID.get(player.getUniqueId()); } public UUID getInternalUUID(UUID playerUUID) { return uuidToInternalUUID.get(playerUUID); } public MyPetPlayer getMyPetPlayer(UUID internalUUID) { if (internalUUID != null) { return onlinePlayers.get(internalUUID); } return null; } public MyPetPlayer getMyPetPlayer(Player player) { UUID internalUUID = getInternalUUID(player); if (internalUUID == null) { return null; } return getMyPetPlayer(internalUUID); } public MyPetPlayer getMyPetPlayer(String name) { Player player = Bukkit.getPlayer(name); return getMyPetPlayer(player); } public void setOnline(MyPetPlayer player) { onlinePlayers.put(player.getInternalUUID(), player); uuidToInternalUUID.put(player.getPlayerUUID(), player.getInternalUUID()); } public void setOffline(MyPetPlayer player) { onlinePlayers.remove(player.getInternalUUID()); uuidToInternalUUID.remove(player.getPlayerUUID()); MyPetApi.getRepository().updateMyPetPlayer(player, null); } public abstract MyPetPlayer createMyPetPlayer(Player player); public boolean isMyPetPlayer(String name) { Player player = Bukkit.getPlayer(name); return player != null && isMyPetPlayer(player); } public boolean isMyPetPlayer(Player player) { return uuidToInternalUUID.containsKey(player.getUniqueId()); } public MyPetPlayer[] getMyPetPlayers() { MyPetPlayer[] playerArray; int playerCounter = 0; playerArray = new MyPetPlayer[onlinePlayers.size()]; for (MyPetPlayer player : onlinePlayers.values()) { playerArray[playerCounter++] = player; } return playerArray; } public MyPetPlayer registerMyPetPlayer(Player player) { MyPetPlayer myPetPlayer = createMyPetPlayer(player); MyPetApi.getRepository().addMyPetPlayer(myPetPlayer, null); setOnline(myPetPlayer); return myPetPlayer; } }