package in.twizmwaz.cardinal.module.modules.filter.type.constant;
import in.twizmwaz.cardinal.module.modules.filter.FilterState;
import org.bukkit.event.Event;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import static in.twizmwaz.cardinal.module.modules.filter.FilterState.ABSTAIN;
public class AllWorldFilter extends AllEventFilter {
public AllWorldFilter(final String name, final boolean allow) {
super(name, allow);
}
@Override
public FilterState evaluate(final Object... objects) {
boolean abstain = true;
for (Object object : objects) {
if (object instanceof Event) {
if (!(object instanceof BlockPlaceEvent) && !(object instanceof BlockBreakEvent)) {
return allow ? FilterState.ALLOW : FilterState.DENY;
}
abstain = false;
}
}
if (abstain) {
return (getParent() == null ? ABSTAIN : getParent().evaluate(objects));
}
return allow ? FilterState.DENY : FilterState.ALLOW;
}
}