package in.twizmwaz.cardinal.module.modules.scorebox; import in.twizmwaz.cardinal.match.Match; import in.twizmwaz.cardinal.module.ModuleBuilder; import in.twizmwaz.cardinal.module.ModuleCollection; import in.twizmwaz.cardinal.module.modules.filter.FilterModule; import in.twizmwaz.cardinal.module.modules.filter.FilterModuleBuilder; import in.twizmwaz.cardinal.module.modules.regions.RegionModule; import in.twizmwaz.cardinal.module.modules.regions.RegionModuleBuilder; import in.twizmwaz.cardinal.util.Numbers; import in.twizmwaz.cardinal.util.Parser; import org.bukkit.inventory.ItemStack; import org.jdom2.Element; import java.util.HashMap; import java.util.Map; public class ScoreboxBuilder implements ModuleBuilder { @Override public ModuleCollection<Scorebox> load(Match match) { ModuleCollection<Scorebox> results = new ModuleCollection<>(); for (Element score : match.getDocument().getRootElement().getChildren("score")) { for (Element box : score.getChildren("box")) { RegionModule region = RegionModuleBuilder.getAttributeOrChild("region", RegionModuleBuilder.getRegion(box), box); int points = Numbers.parseInt(Parser.getOrderedAttribute("points", box), Numbers.parseInt(box.getAttributeValue("value"), 0)); FilterModule filter = FilterModuleBuilder.getAttributeOrChild("filter", box); Map<ItemStack, Integer> redeemables = new HashMap<>(); boolean silent = Numbers.parseBoolean(Parser.getOrderedAttribute("silent", box), Numbers.parseBoolean(box.getAttributeValue("silent"), false)); for (Element child : box.getChildren("redeemables")) { for (Element item : child.getChildren("item")) { redeemables.put(Parser.getItem(item), (item.getAttributeValue("points") != null ? Numbers.parseInt(item.getAttributeValue("points")) : (item.getAttributeValue("value") != null ? Numbers.parseInt(item.getAttributeValue("value")) : 0))); } } results.add(new Scorebox(region, points, filter, silent, redeemables)); } } return results; } }