package org.poopki.duckdns.user_db; import org.bukkit.Bukkit; import java.util.*; public class GroupArray { public static Map m_GroupArray = new HashMap(); public static Map m_GroupNameList = new HashMap(); UserInfoArray m_UserInfoArray; UUID ZERO_UUID = UUID.fromString("00000000-0000-0000-0000-000000000000"); public GroupArray(UserInfoArray m_UIA){ m_UserInfoArray = m_UIA; } public boolean CreateGroup(UUID GroupUUID, String Name, UUID PlayerUUID){ if(m_GroupNameList.containsKey(Name)){ return false; // Conflict } else{ m_GroupArray.put(GroupUUID, new Group(Name, PlayerUUID)); m_GroupNameList.put(Name, GroupUUID); return true; } } public boolean CheckGroup(String GroupType, String Name){ return m_GroupArray.containsKey(m_GroupNameList.get(Name)); } public static K getKey(Map map, V value) { for (K key : map.keySet()) { if (value.equals(map.get(key))) { return key; } } return null; } public boolean DeleteGroup(UUID GroupUUID, String GroupType){ if(m_GroupArray.containsKey(GroupUUID)){ for(UUID key: GetGroupMembersUUID(GroupUUID)){ m_UserInfoArray.setUserGroupUUID(GroupType,key,new UUID(0,0)); } m_GroupNameList.remove(GetGroupName(GroupUUID)); m_GroupArray.remove(GroupUUID); return true; } else{ return false; // Group is not exists. } } public Integer SignUpGroup(String GroupType, UUID GroupUUID, UUID PlayerUUID){ if(m_GroupArray.containsKey(GroupUUID)){ if(isOffline(PlayerUUID)){ Group m_Group = m_GroupArray.get(GroupUUID); m_Group.SignUp(PlayerUUID); m_UserInfoArray.setUserGroupUUID(GroupType,PlayerUUID,GroupUUID); return 1; // Success }else{ return 2; // Offline Player } } else{ return 3; // Wrong Group } } public boolean ExpulsionGroupPlayer(String GroupType, UUID GroupUUID, UUID PlayerUUID){ if(m_GroupArray.get(GroupUUID).isMember(PlayerUUID)) { Group m_Group = m_GroupArray.get(GroupUUID); m_Group.Expulsion(PlayerUUID); m_UserInfoArray.setUserGroupUUID(GroupType,PlayerUUID,ZERO_UUID); if(m_Group.isEmpty()==0){ m_GroupArray.remove(GroupUUID); m_GroupNameList.remove(getKey(m_GroupNameList,GroupUUID)); } return true; } else{ return false; // Wrong Player Name. FIXME{Need Checking function for a validate user name's } /* Player op = Bukkit.getPlayer(args[1]); if (op != null) { */ } } public List GetGroupMembersName(UUID GroupUUID){ List MembersName = new ArrayList<>(); for (UUID key : m_GroupArray.get(GroupUUID).getGroupMembers()){ MembersName.add(Bukkit.getPlayer(key).getDisplayName()); } return MembersName; } public List GetGroupMembersUUID(UUID GroupUUID){ return m_GroupArray.get(GroupUUID).getGroupMembers(); } public boolean isGroupMember(UUID GroupUUID, UUID PlayerUUID){ Group m_Group = m_GroupArray.get(GroupUUID); return m_Group.isMember(PlayerUUID); } public Set GetGroupNameList(){ return m_GroupNameList.keySet(); } public String GetGroupName(UUID GroupUUID){ Group m_Group = m_GroupArray.get(GroupUUID); return m_Group.getGroupName(); } public static boolean isOffline(UUID uuid){ return Bukkit.getPlayer(uuid).equals(null) && !Bukkit.getOfflinePlayer(uuid).equals(null); } private boolean isAvaliableGroup(UUID GroupUUID){ return m_GroupArray.containsKey(GroupUUID); } }