package in.twizmwaz.cardinal.module.modules.filter.type; import in.twizmwaz.cardinal.module.modules.filter.FilterModule; import in.twizmwaz.cardinal.module.modules.filter.FilterState; import in.twizmwaz.cardinal.module.modules.filter.parsers.CauseFilterParser; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import static in.twizmwaz.cardinal.module.modules.filter.FilterState.*; public class CauseFilter extends FilterModule { private final EventCause cause; public CauseFilter(final CauseFilterParser parser) { super(parser.getName(), parser.getParent()); this.cause = parser.getCause(); } @Override public FilterState evaluate(final Object... objects) { for (Object object : objects) { EventCause eventCause = null; if (object instanceof Player) { eventCause = EventCause.PLAYER; } else if (object instanceof Entity) { if (((Entity) object).getType().equals(EntityType.PRIMED_TNT)) { eventCause = EventCause.TNT; } } if (cause.equals(eventCause)) return ALLOW; else if (eventCause != null) return DENY; } return (getParent() == null ? ABSTAIN : getParent().evaluate(objects)); } public enum EventCause { /** * The event was generated be a player action. */ PLAYER(), /** * The event was generated by TNT. */ TNT(); public static EventCause getEventCause(String string) { switch (string.toLowerCase().replaceAll(" ", "")) { case "player": return PLAYER; case "tnt": return TNT; default: return null; } } } }