diff --git a/gradle.properties b/gradle.properties index bb35633..4501b51 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.daemon=false mod_id=twitchspawn mod_group=net.programmer.igoodie -mod_version=0.6.4 +mod_version=0.6.5 minecraft_version=1.12.2 forge_version=14.23.3.2655 diff --git a/src/main/java/net/programmer/igoodie/twitchspawn/tracer/chat/TwitchChatTracer.java b/src/main/java/net/programmer/igoodie/twitchspawn/tracer/chat/TwitchChatTracer.java index 5ca651b..ee86250 100644 --- a/src/main/java/net/programmer/igoodie/twitchspawn/tracer/chat/TwitchChatTracer.java +++ b/src/main/java/net/programmer/igoodie/twitchspawn/tracer/chat/TwitchChatTracer.java @@ -97,24 +97,25 @@ protected void onMessage(CredentialsConfig.Streamer streamer, WebSocket socket, protected void onChatMessage(CredentialsConfig.Streamer streamer, TwitchChatMessage twitchChatMessage, WebSocket socket) { CooldownBucket cooldownBucket = cooldownBuckets.get(streamer.twitchNick); - if (cooldownBucket.canConsume(twitchChatMessage.username)) { - EventArguments eventArguments = new EventArguments("chat", "twitch"); - eventArguments.streamerNickname = streamer.minecraftNick; - eventArguments.actorNickname = twitchChatMessage.username; - eventArguments.message = twitchChatMessage.message; - eventArguments.subscriptionMonths = twitchChatMessage.subscriptionMonths; - eventArguments.chatBadges = twitchChatMessage.badges; + EventArguments eventArguments = new EventArguments("chat", "twitch"); + eventArguments.streamerNickname = streamer.minecraftNick; + eventArguments.actorNickname = twitchChatMessage.username; + eventArguments.message = twitchChatMessage.message; + eventArguments.subscriptionMonths = twitchChatMessage.subscriptionMonths; + eventArguments.chatBadges = twitchChatMessage.badges; + + if (cooldownBucket.hasGlobalCooldown()) { + TwitchSpawn.LOGGER.info("Still has {} seconds global cooldown.", cooldownBucket.getGlobalCooldown()); + } else if (cooldownBucket.canConsume(twitchChatMessage.username)) { ConfigManager.RULESET_COLLECTION.handleEvent(eventArguments, cooldownBucket); - } else { - TwitchSpawn.LOGGER.info("Still has {} seconds global cooldown.", cooldownBucket.getGlobalCooldown()); - if (!cooldownBucket.hasGlobalCooldown()) { - socket.send("PRIVMSG #" + streamer.twitchNick.toLowerCase() - + String.format(" :@%s, you still have %s second(s), before you can trigger another action", - twitchChatMessage.username, cooldownBucket.getCooldown(twitchChatMessage.username) / 1000)); - } + } else if (ConfigManager.RULESET_COLLECTION.getRuleset(streamer.minecraftNick).willPerform(eventArguments)) { + socket.send("PRIVMSG #" + streamer.twitchNick.toLowerCase() + + String.format(" :@%s, you still have %s second(s), before you can trigger another action", + twitchChatMessage.username, cooldownBucket.getCooldown(twitchChatMessage.username) / 1000)); } + } public static void main(String[] args) { diff --git a/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/TSLRuleset.java b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/TSLRuleset.java index 06361d2..7ee73e0 100644 --- a/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/TSLRuleset.java +++ b/src/main/java/net/programmer/igoodie/twitchspawn/tslanguage/TSLRuleset.java @@ -48,6 +48,13 @@ public Collection getEvents() { return eventMap.values(); } + public boolean willPerform(EventArguments args) { + for (TSLEvent event : eventMap.values()) { + if (event.willPerform(args)) return true; + } + return false; + } + @Override public String toString() { Map occurrences = new HashMap<>(); @@ -71,7 +78,7 @@ public String toString() { StringBuilder builder = new StringBuilder(); occurrences.forEach((actionKeyword, occurrence) -> { - if(builder.length() != 0) builder.append("\n"); + if (builder.length() != 0) builder.append("\n"); builder.append(String.format("%s action %d time(s).", actionKeyword, occurrence)); });