package de.tobiyas.racesandclasses.addins.groups.impl;
import java.util.Collection;
import java.util.HashSet;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.herocraftonline.heroes.Heroes;
import com.herocraftonline.heroes.characters.Hero;
import com.herocraftonline.heroes.characters.party.HeroParty;
import com.herocraftonline.heroes.characters.party.PartyManager;
import de.tobiyas.racesandclasses.addins.groups.GroupManager;
public class HeroesGroupManager implements GroupManager {
@Override
public boolean isInSameGroup(Player player1, Player player2) {
HeroParty party1 = getParty(player1.getUniqueId());
HeroParty party2 = getParty(player2.getUniqueId());
return party1 != null && party2 != null && party1 == party2;
}
@Override
public boolean hasGroup(Player player) {
return getParty(player.getUniqueId()) != null;
}
@Override
public boolean addPlayerToGroup(Player groupOwner, Player toAdd) {
Heroes plugin = Heroes.getInstance();
HeroParty ownerParty = getParty(groupOwner.getUniqueId());
if(ownerParty == null){
ownerParty = new HeroParty(plugin.getCharacterManager().getHero(groupOwner), plugin);
plugin.getPartyManager().addParty(ownerParty);
}
ownerParty.addMember(plugin.getCharacterManager().getHero(toAdd));
return true;
}
@Override
public boolean playerLeavesGroup(Player player) {
HeroParty party = getParty(player.getUniqueId());
if(party == null) return true;
party.removeMember(Heroes.getInstance().getCharacterManager().getHero(player));
if(party.getMembers().isEmpty()) Heroes.getInstance().getPartyManager().removeParty(party);
return true;
}
@Override
public Collection<Player> getMembersOfGroup(Player player) {
HeroParty party = getParty(player.getUniqueId());
Collection<Player> members = new HashSet<>();
if(party == null) return members;
for(Hero hero : party.getMembers()) members.add(hero.getPlayer());
return members;
}
@Override
public Player getLeaderOfGroup(Player player) {
HeroParty party = getParty(player.getUniqueId());
if(party == null) return null;
return party.getLeader().getPlayer();
}
@Override
public boolean isEnabled() {
return Bukkit.getPluginManager().isPluginEnabled("Heroes");
}
@Override
public void deinit() {}
private PartyManager partyManager(){
return Heroes.getInstance().getPartyManager();
}
private HeroParty getParty(UUID player){
for(HeroParty party : partyManager().getParties()){
for(Hero hero : party.getMembers()){
if(player.equals(hero.getPlayer().getUniqueId())) return party;
}
}
return null;
}
}