aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-05-02 20:21:05 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2024-05-02 23:08:19 -0400
commit792a6c5c4ae1e9ee945fae13c04d416083a886bd (patch)
tree20ff0d64474ddc3988609fa37d6ea8351c460471 /src/main
parentc36b93a6d1887596fc75759743a29955142e3cc7 (diff)
downloadSkyblocker-792a6c5c4ae1e9ee945fae13c04d416083a886bd.tar.gz
Skyblocker-792a6c5c4ae1e9ee945fae13c04d416083a886bd.tar.bz2
Skyblocker-792a6c5c4ae1e9ee945fae13c04d416083a886bd.zip
Fix Quiz Solver Crash
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/barn/HungryHiker.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/Trivia.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/Utils.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java2
5 files changed, 20 insertions, 7 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/barn/HungryHiker.java b/src/main/java/de/hysky/skyblocker/skyblock/barn/HungryHiker.java
index f0f75600..4a0213c1 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/barn/HungryHiker.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/barn/HungryHiker.java
@@ -1,6 +1,7 @@
package de.hysky.skyblocker.skyblock.barn;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.chat.ChatFilterResult;
import de.hysky.skyblocker.utils.chat.ChatPatternListener;
import net.minecraft.client.MinecraftClient;
@@ -29,7 +30,7 @@ public class HungryHiker extends ChatPatternListener {
String food = foods.get(foodDescription);
if (food == null) return false;
String middlePartOfTheMessageToSend = matcher.group(2) != null ? matcher.group(2) : matcher.group(1);
- client.player.sendMessage(Text.of("§e[NPC] Hungry Hiker§f: " + middlePartOfTheMessageToSend + " " + food + "."), false);
+ Utils.sendMessageToBypassEvents(Text.of("§e[NPC] Hungry Hiker§f: " + middlePartOfTheMessageToSend + " " + food + "."));
return true;
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java
index e4fea9ec..d1c7f4fd 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java
@@ -139,9 +139,7 @@ public class ChatRulesHandler {
//show replacement message in chat
//bypass MessageHandler#onGameMessage to avoid activating chat rules again
if (!rule.getHideMessage() && CLIENT.player != null) {
- CLIENT.inGameHud.getChatHud().addMessage(newMessage);
- ((MessageHandlerAccessor) CLIENT.getMessageHandler()).invokeAddToChatLog(newMessage, Instant.now());
- CLIENT.getNarratorManager().narrateSystemMessage(newMessage);
+ Utils.sendMessageToBypassEvents(newMessage);
}
//play sound
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/Trivia.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/Trivia.java
index fb418c24..eb09cf6e 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/Trivia.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/Trivia.java
@@ -2,6 +2,7 @@ package de.hysky.skyblocker.skyblock.dungeon.puzzle;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.waypoint.FairySouls;
+import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.chat.ChatFilterResult;
import de.hysky.skyblocker.utils.chat.ChatPatternListener;
import net.minecraft.client.MinecraftClient;
@@ -38,7 +39,7 @@ public class Trivia extends ChatPatternListener {
if (!solutions.contains(riddle)) {
ClientPlayerEntity player = MinecraftClient.getInstance().player;
if (player != null)
- MinecraftClient.getInstance().player.sendMessage(Text.of(" " + Formatting.GOLD + matcher.group(2) + Formatting.RED + " " + riddle), false);
+ Utils.sendMessageToBypassEvents(Text.of(" " + Formatting.GOLD + matcher.group(2) + Formatting.RED + " " + riddle));
return player != null;
}
} else updateSolutions(matcher.group(0));
diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java
index 89495fcb..dc13b61d 100644
--- a/src/main/java/de/hysky/skyblocker/utils/Utils.java
+++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java
@@ -3,6 +3,7 @@ package de.hysky.skyblocker.utils;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import de.hysky.skyblocker.events.SkyblockEvents;
+import de.hysky.skyblocker.mixins.accessors.MessageHandlerAccessor;
import de.hysky.skyblocker.skyblock.item.MuseumItemCache;
import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
import de.hysky.skyblocker.utils.scheduler.MessageScheduler;
@@ -25,6 +26,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
+import java.time.Instant;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
@@ -465,4 +467,17 @@ public class Utils {
});
}
+
+ /**
+ * Used to avoid triggering things like chat rules or chat listeners infinitely, do not use otherwise.
+ *
+ * Bypasses MessageHandler#onGameMessage
+ */
+ public static void sendMessageToBypassEvents(Text message) {
+ MinecraftClient client = MinecraftClient.getInstance();
+
+ client.inGameHud.getChatHud().addMessage(message);
+ ((MessageHandlerAccessor) client.getMessageHandler()).invokeAddToChatLog(message, Instant.now());
+ client.getNarratorManager().narrateSystemMessage(message);
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java b/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java
index 3aea459e..1f0caff5 100644
--- a/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java
+++ b/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java
@@ -1,7 +1,5 @@
package de.hysky.skyblocker.utils.chat;
-import java.util.Objects;
-
import de.hysky.skyblocker.skyblock.barn.HungryHiker;
import de.hysky.skyblocker.skyblock.barn.TreasureHunter;
import de.hysky.skyblocker.skyblock.dungeon.Reparty;