package ctbrec.event; import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; import java.util.function.Predicate; public class EventReaction { private List> predicates = new ArrayList<>(); private Consumer action; @SafeVarargs public EventReaction(Consumer action, Predicate... predicates) { this.action = action; for (Predicate predicate : predicates) { this.predicates.add(predicate); } } public void reactToEvent(Event evt) { boolean matches = true; for (Predicate predicate : predicates) { if(!predicate.test(evt)) { matches = false; } } if(matches) { action.accept(evt); } } }