X-Git-Url: https://git.pterodactylus.net/?p=rhynodge.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Freactor%2Fengine%2FEngine.java;h=7c50081629ac459b45938fdecbf051be74aef037;hp=60bc91dc116d449a2b7b642800ea68f5d613c7c8;hb=fb6252bcb9e3689b3320fb6a0ff2805fd2465e2a;hpb=615e3ec264d5e8215daf21c589f5e40dcf6f98f8 diff --git a/src/main/java/net/pterodactylus/reactor/engine/Engine.java b/src/main/java/net/pterodactylus/reactor/engine/Engine.java index 60bc91d..7c50081 100644 --- a/src/main/java/net/pterodactylus/reactor/engine/Engine.java +++ b/src/main/java/net/pterodactylus/reactor/engine/Engine.java @@ -136,6 +136,7 @@ public class Engine extends AbstractExecutionThreadService { /* wait until the next reaction has to run. */ net.pterodactylus.reactor.State lastState = stateManager.loadState(reactionName); long lastStateTime = (lastState != null) ? lastState.time() : 0; + int lastStateFailCount = (lastState != null) ? lastState.failCount() : 0; long waitTime = (lastStateTime + nextReaction.updateInterval()) - System.currentTimeMillis(); logger.debug(String.format("Time to wait for next Reaction: %d millseconds.", waitTime)); if (waitTime > 0) { @@ -179,14 +180,15 @@ public class Engine extends AbstractExecutionThreadService { state = newState; } } - if (state.success()) { - stateManager.saveState(reactionName, state); + if (!state.success()) { + state.setFailCount(lastStateFailCount + 1); } + stateManager.saveState(reactionName, state); - /* only run trigger if we have collected two states. */ + /* only run trigger if we have collected two successful states. */ Trigger trigger = nextReaction.trigger(); boolean triggerHit = false; - if ((lastState != null) && state.success()) { + if ((lastState != null) && lastState.success() && state.success()) { logger.debug("Checking Trigger for changes..."); triggerHit = trigger.triggers(state, lastState); }