package com.nisovin.magicspells.teams;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import com.nisovin.magicspells.MagicSpells;
public class Team {
private String permissionNode;
private boolean friendlyFire;
private List<String> canTargetNames;
private List<Team> canTargetTeams;
private List<String> cantTargetNames;
private List<Team> cantTargetTeams;
public Team(ConfigurationSection config, String name) {
permissionNode = config.getString("permission", "magicspells.team." + name);
friendlyFire = config.getBoolean("friendly-fire", false);
canTargetNames = config.getStringList("can-target");
cantTargetNames = config.getStringList("cant-target");
}
public void initialize(MagicSpellsTeams plugin) {
if (canTargetNames != null && canTargetNames.size() > 0) {
canTargetTeams = new ArrayList<Team>();
for (String name : canTargetNames) {
Team team = plugin.getTeamByName(name);
if (team != null) {
canTargetTeams.add(team);
} else {
MagicSpells.error("Invalid team defined in can-target list");
}
}
if (canTargetTeams.size() == 0) {
canTargetTeams = null;
}
}
canTargetNames = null;
if (cantTargetNames != null && cantTargetNames.size() > 0) {
cantTargetTeams = new ArrayList<Team>();
for (String name : cantTargetNames) {
Team team = plugin.getTeamByName(name);
if (team != null) {
cantTargetTeams.add(team);
} else {
MagicSpells.error("Invalid team defined in cant-target list");
}
}
if (cantTargetTeams.size() == 0) {
cantTargetTeams = null;
}
}
cantTargetNames = null;
}
public boolean inTeam(Player player) {
return player.hasPermission(permissionNode);
}
public boolean allowFriendlyFire() {
return friendlyFire;
}
public boolean canTarget(Team team) {
if (canTargetTeams != null && !canTargetTeams.contains(team)) return false;
if (cantTargetTeams != null && cantTargetTeams.contains(team)) return false;
return true;
}
}