package jk_5.nailed.server.mappack.metadata.xml; import jk_5.nailed.api.chat.ChatColor; import jk_5.nailed.api.mappack.MappackConfigurationException; import jk_5.nailed.api.mappack.metadata.MappackTeam; import jk_5.nailed.api.scoreboard.Visibility; import org.jdom2.Element; public class XmlMappackTeam implements MappackTeam { private final String id; private final String name; private final ChatColor color; private final boolean friendlyFire; private final boolean friendlyInvisiblesInvisible; private final Visibility nameTagVisibility; private final Visibility deathMessageVisibility; public XmlMappackTeam(Element element) throws MappackConfigurationException { if(element.getChild("id", element.getNamespace()) == null){ throw new MappackConfigurationException("Invalid team. Team doesn't have an id element"); } if(element.getChild("name", element.getNamespace()) == null){ throw new MappackConfigurationException("Invalid team. Team doesn't have a name element"); } if(element.getChild("color", element.getNamespace()) == null){ throw new MappackConfigurationException("Invalid team. Team doesn't have a color"); } this.id = XmlUtils.getRequiredText(element, "id"); this.name = XmlUtils.getRequiredText(element, "name"); this.color = XmlUtils.getRequiredChatColor(element, "color"); this.friendlyFire = XmlUtils.getBoolean(element, "friendlyFire", true); this.friendlyInvisiblesInvisible = XmlUtils.getBoolean(element, "friendlyInvisiblesInvisible", true); this.nameTagVisibility = XmlUtils.getVisibility(element, "nameTagVisibility", Visibility.ALWAYS); this.deathMessageVisibility = XmlUtils.getVisibility(element, "deathMessageVisibility", Visibility.ALWAYS); } @Override public String id() { return this.id; } @Override public String name() { return this.name; } @Override public ChatColor color() { return this.color; } @Override public boolean isFriendlyFire() { return this.friendlyFire; } @Override public boolean areFriendlyInvisiblesInvisible() { return this.friendlyInvisiblesInvisible; } @Override public Visibility getNameTagVisibility() { return this.nameTagVisibility; } @Override public Visibility getDeathMessageVisibility() { return this.deathMessageVisibility; } }