package in.twizmwaz.cardinal.module.modules.filter.type; import com.google.common.base.Optional; import in.twizmwaz.cardinal.module.modules.filter.FilterModule; import in.twizmwaz.cardinal.module.modules.filter.FilterState; import in.twizmwaz.cardinal.module.modules.filter.parsers.ChildFilterParser; import in.twizmwaz.cardinal.module.modules.team.TeamModule; import in.twizmwaz.cardinal.util.Teams; import org.bukkit.entity.Player; import java.util.List; public class SameTeamFilter extends FilterModule { private final FilterModule child; public SameTeamFilter(ChildFilterParser parser) { super(parser.getName(), parser.getParent()); this.child = parser.getChild(); } @Override public FilterState evaluate(Object... objects) { for (Object object : objects) { if (object instanceof Player) { Optional<TeamModule> team = Teams.getTeamByPlayer((Player) object); if (!team.isPresent()) continue; for (Player player : (List<Player>) team.get()) { if (child.evaluate(player).equals(FilterState.ALLOW)) return FilterState.ALLOW; } return FilterState.DENY; } } return (getParent() == null ? FilterState.ABSTAIN : getParent().evaluate(objects)); } }