X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Freactor%2Fengine%2FEngine.java;h=9edbdb4e06f3067507e7912d2c7acf91da23a144;hb=9cd054fb2fec1c2a1f0f24b3b88f477720563094;hp=949ce127119f10438465f715c860dec790fbeb85;hpb=92ffd9cd79bb63c41cc81ec580ec331bec345456;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/reactor/engine/Engine.java b/src/main/java/net/pterodactylus/reactor/engine/Engine.java index 949ce12..9edbdb4 100644 --- a/src/main/java/net/pterodactylus/reactor/engine/Engine.java +++ b/src/main/java/net/pterodactylus/reactor/engine/Engine.java @@ -137,16 +137,20 @@ public class Engine extends AbstractExecutionThreadService { /* convert states. */ for (Filter filter : nextReaction.filters()) { - net.pterodactylus.reactor.State newState = filter.filter(state); - logger.debug(String.format("Old state is %s, new state is %s.", state, newState)); - state = newState; + if (state.success()) { + net.pterodactylus.reactor.State newState = filter.filter(state); + logger.debug(String.format("Old state is %s, new state is %s.", state, newState)); + state = newState; + } + } + if (state.success()) { + reactionExecution.addState(state); } - reactionExecution.addState(state); /* only run trigger if we have collected two states. */ Trigger trigger = nextReaction.trigger(); boolean triggerHit = false; - if (reactionExecution.previousState() != null) { + if ((reactionExecution.previousState() != null) && state.success()) { logger.debug("Checking Trigger for changes..."); triggerHit = trigger.triggers(reactionExecution.currentState(), reactionExecution.previousState()); } @@ -155,7 +159,7 @@ public class Engine extends AbstractExecutionThreadService { logger.debug(String.format("Trigger was hit: %s.", triggerHit)); if (triggerHit) { logger.info("Executing Action..."); - nextReaction.action().execute(trigger.trigger()); + nextReaction.action().execute(trigger.output()); } }