From 65733f68a0f448766040ca144103bedad3adc8c7 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Sun, 20 Jul 2025 19:10:00 -0400 Subject: Replace usages of GAME with ALLOW_GAME Should fix some compatibility issues with Skyblocker's features not working when other mods filter messages (if they respect Fabric's events properly). Fixes #1352 --- .../de/hysky/skyblocker/skyblock/ItemPickupWidget.java | 12 +++++++----- .../java/de/hysky/skyblocker/skyblock/PetCache.java | 9 +++++---- .../accessories/newyearcakes/NewYearCakesHelper.java | 6 ++++-- .../skyblocker/skyblock/chat/ChatPositionShare.java | 8 +++++--- .../skyblock/chat/ConfirmationPromptHelper.java | 6 ++++-- .../skyblocker/skyblock/chat/SkyblockXpMessages.java | 6 ++++-- .../skyblock/chocolatefactory/EggFinder.java | 8 +++++--- .../skyblock/chocolatefactory/TimeTowerReminder.java | 10 ++++++---- .../skyblocker/skyblock/crimson/dojo/DojoManager.java | 16 +++++++++------- .../skyblocker/skyblock/crimson/kuudra/Kuudra.java | 6 ++++-- .../skyblocker/skyblock/dungeon/DungeonScore.java | 10 ++++------ .../skyblock/dungeon/FireFreezeStaffTimer.java | 6 ++++-- .../skyblock/dungeon/GoldorWaypointsManager.java | 9 +++++---- .../skyblocker/skyblock/dungeon/GuardianHealth.java | 6 ++++-- .../skyblock/dungeon/puzzle/ThreeWeirdos.java | 8 +++++--- .../skyblock/dungeon/secrets/SecretsTracker.java | 6 ++++-- .../skyblocker/skyblock/dwarven/CorpseFinder.java | 14 ++++++++------ .../skyblock/dwarven/CrystalsChestHighlighter.java | 8 +++++--- .../skyblock/dwarven/CrystalsLocationsManager.java | 14 ++++++++------ .../skyblock/dwarven/GlaciteColdOverlay.java | 8 +++++--- .../skyblocker/skyblock/dwarven/MetalDetector.java | 10 ++++++---- .../skyblock/dwarven/WishingCompassSolver.java | 8 +++++--- .../java/de/hysky/skyblocker/skyblock/end/TheEnd.java | 8 +++++--- .../hysky/skyblocker/skyblock/garden/FarmingHud.java | 4 +++- .../hysky/skyblocker/skyblock/mayors/JerryTimer.java | 10 ++++++---- .../de/hysky/skyblocker/skyblock/rift/EnigmaSouls.java | 4 +++- .../de/hysky/skyblocker/skyblock/rift/TheRift.java | 2 +- .../skyblocker/skyblock/slayers/SlayerManager.java | 18 ++++++++++-------- .../slayers/boss/voidgloom/BeaconHighlighter.java | 6 ++++-- .../skyblock/special/DungeonsSpecialEffects.java | 6 ++++-- .../skyblocker/skyblock/special/DyeSpecialEffects.java | 6 ++++-- .../hysky/skyblocker/skyblock/waypoint/FairySouls.java | 6 ++++-- .../skyblock/waypoint/MythologicalRitual.java | 6 ++++-- .../de/hysky/skyblocker/skyblock/waypoint/Relics.java | 6 ++++-- src/main/java/de/hysky/skyblocker/utils/Utils.java | 3 +-- 35 files changed, 169 insertions(+), 110 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/ItemPickupWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/ItemPickupWidget.java index 9ca0d1b3..234da0cb 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/ItemPickupWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/ItemPickupWidget.java @@ -44,7 +44,7 @@ public class ItemPickupWidget extends ComponentBasedWidget { super(Text.literal("Items"), Formatting.AQUA.getColorValue(), "Item Pickup"); instance = this; - ClientReceiveMessageEvents.GAME.register(instance::onChatMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(instance::onChatMessage); ClientPlayConnectionEvents.JOIN.register((_handler, _sender, _client) -> changingLobby = true); // Make changingLobby true for a short period while the player loads into a new lobby and their items are loading SkyblockEvents.LOCATION_CHANGE.register(location -> Scheduler.INSTANCE.schedule(() -> changingLobby = false, LOBBY_CHANGE_DELAY)); @@ -70,11 +70,11 @@ public class ItemPickupWidget extends ComponentBasedWidget { /** * Checks chat messages for a stack update message, then finds the items linked to it */ - private void onChatMessage(Text message, boolean overlay) { - if (!Formatting.strip(message.getString()).startsWith(SACKS_MESSAGE_START)) return; - if (!SkyblockerConfigManager.get().uiAndVisuals.itemPickup.sackNotifications) return; + private boolean onChatMessage(Text message, boolean overlay) { + if (!Formatting.strip(message.getString()).startsWith(SACKS_MESSAGE_START)) return true; + if (!SkyblockerConfigManager.get().uiAndVisuals.itemPickup.sackNotifications) return true; HoverEvent hoverEvent = message.getSiblings().getFirst().getStyle().getHoverEvent(); - if (hoverEvent == null || hoverEvent.getAction() != HoverEvent.Action.SHOW_TEXT) return; + if (hoverEvent == null || hoverEvent.getAction() != HoverEvent.Action.SHOW_TEXT) return true; String hoverMessage = ((HoverEvent.ShowText) hoverEvent).value().getString(); Matcher matcher = CHANGE_REGEX.matcher(hoverMessage); @@ -97,6 +97,8 @@ public class ItemPickupWidget extends ComponentBasedWidget { removedCount.put(item.getNeuName(), new ChangeData(item, existingCount - Formatters.parseNumber(matcher.group(2)).intValue(), System.currentTimeMillis())); } } + + return true; } @Override diff --git a/src/main/java/de/hysky/skyblocker/skyblock/PetCache.java b/src/main/java/de/hysky/skyblocker/skyblock/PetCache.java index 05824f9d..f195126f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/PetCache.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/PetCache.java @@ -74,8 +74,7 @@ public class PetCache { } } }); - ClientReceiveMessageEvents.GAME.register(PetCache::onMessage); - ClientReceiveMessageEvents.GAME_CANCELED.register(PetCache::onMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(PetCache::onMessage); } public static void handlePetEquip(Slot slot, int slotId) { @@ -113,8 +112,8 @@ public class PetCache { /** * Parses the Auto Pet messages to try and detect the active pet */ - private static void onMessage(Text text, boolean overlay) { - if (!Utils.isOnSkyblock() || overlay) return; + private static boolean onMessage(Text text, boolean overlay) { + if (!Utils.isOnSkyblock() || overlay) return true; String stringified = Formatting.strip(text.getString()); Matcher matcher = AUTOPET_PATTERN.matcher(stringified); @@ -173,6 +172,8 @@ public class PetCache { } } } + + return true; } @Nullable diff --git a/src/main/java/de/hysky/skyblocker/skyblock/accessories/newyearcakes/NewYearCakesHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/accessories/newyearcakes/NewYearCakesHelper.java index 253477b5..894103d2 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/accessories/newyearcakes/NewYearCakesHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/accessories/newyearcakes/NewYearCakesHelper.java @@ -28,7 +28,7 @@ public class NewYearCakesHelper extends SimpleContainerSolver { private NewYearCakesHelper() { super("Auctions: \".*\""); - ClientReceiveMessageEvents.GAME.register(this::onChatMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(this::onChatMessage); } public static int getCakeYear(ItemStack stack) { @@ -57,10 +57,12 @@ public class NewYearCakesHelper extends SimpleContainerSolver { return cakes.computeIfAbsent(Utils.getProfile(), _profile -> new IntOpenHashSet()).add(year); } - private void onChatMessage(Text message, boolean overlay) { + private boolean onChatMessage(Text message, boolean overlay) { if (isEnabled()) { addCake(getCakeYear(NEW_YEAR_CAKE_PURCHASE, message.getString())); } + + return true; } @Override diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatPositionShare.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatPositionShare.java index 6ccd7515..df45d959 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatPositionShare.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatPositionShare.java @@ -38,7 +38,7 @@ public class ChatPositionShare { ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register( ClientCommandManager.literal("skyblocker").then(ClientCommandManager.literal("sharePosition").executes(context -> sharePlayerPosition(context.getSource()))) )); - ClientReceiveMessageEvents.GAME.register(ChatPositionShare::onMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(ChatPositionShare::onMessage); } private static int sharePlayerPosition(FabricClientCommandSource source) { @@ -47,13 +47,13 @@ public class ChatPositionShare { return Command.SINGLE_SUCCESS; } - private static void onMessage(Text text, boolean overlay) { + private static boolean onMessage(Text text, boolean overlay) { if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().uiAndVisuals.waypoints.enableWaypoints) { String message = text.getString(); // prevents parsing skyblocker's own messages. Also prevents TH solver from parsing as it already has own waypoint if (message.startsWith("[Skyblocker]") || message.startsWith("§e[NPC] Treasure Hunter§f:")) { - return; + return true; } for (Pattern pattern : PATTERNS) { @@ -72,6 +72,8 @@ public class ChatPositionShare { } } } + + return true; } private static void requestWaypoint(String x, String y, String z, @NotNull String area) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ConfirmationPromptHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ConfirmationPromptHelper.java index d484e1ed..4121c1b7 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ConfirmationPromptHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ConfirmationPromptHelper.java @@ -42,7 +42,7 @@ public class ConfirmationPromptHelper { private static long commandFoundAt; @Init public static void init() { - ClientReceiveMessageEvents.GAME.register(ConfirmationPromptHelper::onMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(ConfirmationPromptHelper::onMessage); ScreenEvents.AFTER_INIT.register((_client, screen, _scaledWidth, _scaledHeight) -> { //Don't check for the command being present in case the user opens the chat before the prompt is sent if (Utils.isOnSkyblock() && screen instanceof ChatScreen && SkyblockerConfigManager.get().chat.confirmationPromptHelper) { @@ -83,7 +83,7 @@ public class ConfirmationPromptHelper { return false; } - private static void onMessage(Text message, boolean overlay) { + private static boolean onMessage(Text message, boolean overlay) { if (Utils.isOnSkyblock() && !overlay && SkyblockerConfigManager.get().chat.confirmationPromptHelper && containsConfirmationPhrase(message)) { Optional confirmationCommand = message.visit((style, asString) -> { ClickEvent event = style.getClickEvent(); @@ -105,5 +105,7 @@ public class ConfirmationPromptHelper { MinecraftClient.getInstance().player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.chat.confirmationPromptNotification")), false); } } + + return true; } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/SkyblockXpMessages.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/SkyblockXpMessages.java index 7e1e44fe..c2727eac 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chat/SkyblockXpMessages.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/SkyblockXpMessages.java @@ -20,10 +20,10 @@ public class SkyblockXpMessages { @Init public static void init() { - ClientReceiveMessageEvents.GAME.register(SkyblockXpMessages::onMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(SkyblockXpMessages::onMessage); } - private static void onMessage(Text text, boolean overlay) { + private static boolean onMessage(Text text, boolean overlay) { if (Utils.isOnSkyblock() && overlay && SkyblockerConfigManager.get().chat.skyblockXpMessages) { String message = text.getString(); Matcher matcher = SKYBLOCK_XP_PATTERN.matcher(message); @@ -39,5 +39,7 @@ public class SkyblockXpMessages { } } } + + return true; } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/EggFinder.java b/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/EggFinder.java index 4d309713..dd6050d6 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/EggFinder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/EggFinder.java @@ -68,7 +68,7 @@ public class EggFinder { } }); SkyblockEvents.LOCATION_CHANGE.register(EggFinder::handleLocationChange); - ClientReceiveMessageEvents.GAME.register(EggFinder::onChatMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(EggFinder::onChatMessage); WorldRenderEvents.AFTER_TRANSLUCENT.register(EggFinder::renderWaypoints); ClientTickEvents.END_CLIENT_TICK.register(client -> { if (!SkyblockerConfigManager.get().helpers.chocolateFactory.enableEggFinder || client.player == null) return; @@ -153,8 +153,8 @@ public class EggFinder { } } - private static void onChatMessage(Text text, boolean overlay) { - if (overlay || !SkyblockerConfigManager.get().helpers.chocolateFactory.enableEggFinder) return; + private static boolean onChatMessage(Text text, boolean overlay) { + if (overlay || !SkyblockerConfigManager.get().helpers.chocolateFactory.enableEggFinder) return true; Matcher matcher = eggFoundPattern.matcher(text.getString()); if (matcher.find()) { try { @@ -175,6 +175,8 @@ public class EggFinder { logger.error("[Skyblocker Egg Finder] Failed to find egg type for egg spawn message. Tried to match against: {}", matcher.group(0), e); } } + + return true; } @SuppressWarnings("DataFlowIssue") //Removes that pesky "unboxing of Integer might cause NPE" warning when we already know it's not null diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/TimeTowerReminder.java b/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/TimeTowerReminder.java index 28738e86..da1fa170 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/TimeTowerReminder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/TimeTowerReminder.java @@ -34,11 +34,11 @@ public class TimeTowerReminder { @Init public static void init() { SkyblockEvents.JOIN.register(TimeTowerReminder::checkTempFile); - ClientReceiveMessageEvents.GAME.register(TimeTowerReminder::checkIfTimeTower); + ClientReceiveMessageEvents.ALLOW_GAME.register(TimeTowerReminder::checkIfTimeTower); } - public static void checkIfTimeTower(Message message, boolean overlay) { - if (!TIME_TOWER_PATTERN.matcher(message.getString()).matches() || scheduled) return; + public static boolean checkIfTimeTower(Message message, boolean overlay) { + if (!TIME_TOWER_PATTERN.matcher(message.getString()).matches() || scheduled) return true; Scheduler.INSTANCE.schedule(TimeTowerReminder::sendMessage, 60 * 60 * 20); // 1 hour scheduled = true; File tempFile = SkyblockerMod.CONFIG_DIR.resolve(TIME_TOWER_FILE).toFile(); @@ -47,7 +47,7 @@ public class TimeTowerReminder { tempFile.createNewFile(); } catch (IOException e) { LOGGER.error("[Skyblocker Time Tower Reminder] Failed to create temp file for Time Tower Reminder!", e); - return; + return true; } } @@ -56,6 +56,8 @@ public class TimeTowerReminder { } catch (IOException e) { LOGGER.error("[Skyblocker Time Tower Reminder] Failed to write to temp file for Time Tower Reminder!", e); } + + return true; } private static void sendMessage() { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java index 1aed5fa9..c304f070 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java @@ -70,7 +70,7 @@ public class DojoManager { @Init public static void init() { - ClientReceiveMessageEvents.GAME.register(DojoManager::onMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(DojoManager::onMessage); WorldRenderEvents.AFTER_TRANSLUCENT.register(DojoManager::render); ClientPlayConnectionEvents.JOIN.register((_handler, _sender, _client) -> reset()); ClientEntityEvents.ENTITY_LOAD.register(DojoManager::onEntitySpawn); @@ -96,27 +96,27 @@ public class DojoManager { * @param text message * @param overlay is overlay */ - private static void onMessage(Text text, Boolean overlay) { + private static boolean onMessage(Text text, Boolean overlay) { if (!Utils.isInCrimson() || overlay) { - return; + return true; } if (Objects.equals(Formatting.strip(text.getString()), START_MESSAGE)) { inArena = true; //update the players ping getPing(); - return; + return true; } if (!inArena) { - return; + return true; } if (text.getString().matches(CHALLENGE_FINISHED_REGEX)) { reset(); - return; + return true; } //look for a message saying what challenge is starting if one has not already been found if (currentChallenge != DojoChallenges.NONE) { - return; + return true; } Matcher nextChallenge = TEST_OF_PATTERN.matcher(text.getString()); if (nextChallenge.matches()) { @@ -125,6 +125,8 @@ public class DojoManager { currentChallenge = DojoChallenges.NONE; } } + + return true; } private static void getPing() { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/Kuudra.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/Kuudra.java index 75378a36..590dbe06 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/Kuudra.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/Kuudra.java @@ -15,10 +15,10 @@ public class Kuudra { @Init public static void init() { ClientPlayConnectionEvents.JOIN.register((_handler, _sender, _client) -> reset()); - ClientReceiveMessageEvents.GAME.register(Kuudra::onMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(Kuudra::onMessage); } - private static void onMessage(Text text, boolean overlay) { + private static boolean onMessage(Text text, boolean overlay) { if (Utils.isInKuudra() && !overlay) { String message = Formatting.strip(text.getString()); @@ -38,6 +38,8 @@ public class Kuudra { phase = KuudraPhase.KUUDRA_LAIR; } } + + return true; } private static void reset() { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java index 21b78ca7..fcb4ac81 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonScore.java @@ -71,18 +71,16 @@ public class DungeonScore { Scheduler.INSTANCE.scheduleCyclic(DungeonScore::tick, 20); ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> reset()); DungeonEvents.DUNGEON_STARTED.register(DungeonScore::onDungeonStart); - ClientReceiveMessageEvents.GAME.register((message, overlay) -> { - if (overlay || !Utils.isInDungeons()) return; + ClientReceiveMessageEvents.ALLOW_GAME.register((message, overlay) -> { + if (overlay || !Utils.isInDungeons()) return true; String str = message.getString(); if (dungeonStarted) { checkMessageForDeaths(str); checkMessageForWatcher(str); if (floorHasMimics) checkMessageForMimic(str); //Only called when the message is not cancelled & isn't on the action bar, complementing MimicFilter } - }); - ClientReceiveMessageEvents.GAME_CANCELED.register((message, overlay) -> { - if (overlay || !Utils.isInDungeons() || !dungeonStarted) return; - checkMessageForDeaths(message.getString()); + + return true; }); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/FireFreezeStaffTimer.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/FireFreezeStaffTimer.java index 14706ccd..be3ec69f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/FireFreezeStaffTimer.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/FireFreezeStaffTimer.java @@ -21,7 +21,7 @@ public class FireFreezeStaffTimer { @Init public static void init() { HudLayerRegistrationCallback.EVENT.register(d -> d.attachLayerAfter(IdentifiedLayer.OVERLAY_MESSAGE, FIRE_FREEZE_STAFF_TIMER, FireFreezeStaffTimer::onDraw)); - ClientReceiveMessageEvents.GAME.register(FireFreezeStaffTimer::onChatMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(FireFreezeStaffTimer::onChatMessage); ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> FireFreezeStaffTimer.reset()); } @@ -56,10 +56,12 @@ public class FireFreezeStaffTimer { fireFreezeTimer = 0; } - private static void onChatMessage(Text text, boolean overlay) { + private static boolean onChatMessage(Text text, boolean overlay) { if (!overlay && SkyblockerConfigManager.get().dungeons.theProfessor.fireFreezeStaffTimer && Formatting.strip(text.getString()) .equals("[BOSS] The Professor: Oh? You found my Guardians' one weakness?")) { fireFreezeTimer = System.currentTimeMillis() + 5000L; } + + return true; } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/GoldorWaypointsManager.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/GoldorWaypointsManager.java index 2fd04655..e6d6f235 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/GoldorWaypointsManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/GoldorWaypointsManager.java @@ -65,8 +65,7 @@ public class GoldorWaypointsManager { public static void init() { WorldRenderEvents.AFTER_TRANSLUCENT.register(GoldorWaypointsManager::render); ClientLifecycleEvents.CLIENT_STARTED.register(GoldorWaypointsManager::load); - ClientReceiveMessageEvents.GAME.register(GoldorWaypointsManager::onChatMessage); - ClientReceiveMessageEvents.GAME_CANCELED.register(GoldorWaypointsManager::onChatMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(GoldorWaypointsManager::onChatMessage); ClientPlayConnectionEvents.JOIN.register(((handler, sender, client) -> reset())); } @@ -153,8 +152,8 @@ public class GoldorWaypointsManager { return matcher.matches() ? matcher.group("name") : null; } - private static void onChatMessage(Text text, boolean overlay) { - if (overlay || !shouldProcessMsgs()) return; + private static boolean onChatMessage(Text text, boolean overlay) { + if (overlay || !shouldProcessMsgs()) return true; String message = text.getString(); if (active) { @@ -181,6 +180,8 @@ public class GoldorWaypointsManager { active = true; } } + + return true; } private static void renderWaypoints(WorldRenderContext context, ObjectArrayList waypoints) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/GuardianHealth.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/GuardianHealth.java index c24356d9..54376641 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/GuardianHealth.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/GuardianHealth.java @@ -28,7 +28,7 @@ public class GuardianHealth { @Init public static void init() { - ClientReceiveMessageEvents.GAME.register(GuardianHealth::onChatMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(GuardianHealth::onChatMessage); ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> GuardianHealth.reset()); WorldRenderEvents.AFTER_ENTITIES.register(GuardianHealth::onWorldRender); } @@ -80,12 +80,14 @@ public class GuardianHealth { inBoss = false; } - private static void onChatMessage(Text text, boolean overlay) { + private static boolean onChatMessage(Text text, boolean overlay) { if (Utils.isInDungeons() && SkyblockerConfigManager.get().dungeons.theProfessor.floor3GuardianHealthDisplay && !inBoss) { String unformatted = Formatting.strip(text.getString()); inBoss = unformatted.equals("[BOSS] The Professor: I was burdened with terrible news recently..."); } + + return true; } private static boolean isGuardianName(ArmorStandEntity entity) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/ThreeWeirdos.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/ThreeWeirdos.java index 73f62bb6..c054497a 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/ThreeWeirdos.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/ThreeWeirdos.java @@ -32,19 +32,21 @@ public class ThreeWeirdos extends DungeonPuzzle { private ThreeWeirdos() { super("three-weirdos", "three-chests"); - ClientReceiveMessageEvents.GAME.register((message, overlay) -> { + ClientReceiveMessageEvents.ALLOW_GAME.register((message, overlay) -> { ClientWorld world = MinecraftClient.getInstance().world; - if (overlay || !shouldSolve() || !SkyblockerConfigManager.get().dungeons.puzzleSolvers.solveThreeWeirdos || world == null || !DungeonManager.isCurrentRoomMatched()) return; + if (overlay || !shouldSolve() || !SkyblockerConfigManager.get().dungeons.puzzleSolvers.solveThreeWeirdos || world == null || !DungeonManager.isCurrentRoomMatched()) return true; @SuppressWarnings("DataFlowIssue") Matcher matcher = PATTERN.matcher(Formatting.strip(message.getString())); - if (!matcher.matches()) return; + if (!matcher.matches()) return true; String name = matcher.group(1); Room room = DungeonManager.getCurrentRoom(); checkForNPC(world, room, new BlockPos(13, 69, 24), name); checkForNPC(world, room, new BlockPos(15, 69, 25), name); checkForNPC(world, room, new BlockPos(17, 69, 24), name); + + return true; }); UseBlockCallback.EVENT.register((player, world, hand, blockHitResult) -> { if (blockHitResult.getType() == HitResult.Type.BLOCK && blockHitResult.getBlockPos().equals(pos)) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/SecretsTracker.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/SecretsTracker.java index ed08e647..c6cbb303 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/SecretsTracker.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/SecretsTracker.java @@ -41,7 +41,7 @@ public class SecretsTracker { @Init public static void init() { - ClientReceiveMessageEvents.GAME.register(SecretsTracker::onMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(SecretsTracker::onMessage); DungeonEvents.DUNGEON_STARTED.register(() -> calculate(RunPhase.START)); } @@ -118,7 +118,7 @@ public class SecretsTracker { new HoverEvent.ShowText(cached ? Text.translatable("skyblocker.api.cache.HIT", cacheAge) : Text.translatable("skyblocker.api.cache.MISS")))); } - private static void onMessage(Text text, boolean overlay) { + private static boolean onMessage(Text text, boolean overlay) { if (Utils.isInDungeons() && SkyblockerConfigManager.get().dungeons.playerSecretsTracker && !overlay) { String message = Formatting.strip(text.getString()); @@ -128,6 +128,8 @@ public class SecretsTracker { LOGGER.error("[Skyblocker] Encountered an unknown error while trying to track player secrets!", e); } } + + return true; } private static String getPlayerNameAt(int index) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CorpseFinder.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CorpseFinder.java index d491c74f..bdccf596 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CorpseFinder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CorpseFinder.java @@ -54,7 +54,7 @@ public class CorpseFinder { corpsesByType.clear(); }); SkyblockEvents.LOCATION_CHANGE.register(CorpseFinder::handleLocationChange); - ClientReceiveMessageEvents.GAME.register(CorpseFinder::onChatMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(CorpseFinder::onChatMessage); WorldRenderEvents.AFTER_TRANSLUCENT.register(CorpseFinder::renderWaypoints); ClientTickEvents.END_CLIENT_TICK.register(client -> { if (!SkyblockerConfigManager.get().mining.glacite.enableCorpseFinder || client.player == null) return; @@ -133,14 +133,14 @@ public class CorpseFinder { } } - private static void onChatMessage(Text text, boolean overlay) { - if (overlay || !isLocationCorrect || !SkyblockerConfigManager.get().mining.glacite.enableCorpseFinder || MinecraftClient.getInstance().player == null) return; + private static boolean onChatMessage(Text text, boolean overlay) { + if (overlay || !isLocationCorrect || !SkyblockerConfigManager.get().mining.glacite.enableCorpseFinder || MinecraftClient.getInstance().player == null) return true; String string = text.getString(); - if (string.contains(MinecraftClient.getInstance().getSession().getUsername())) return; // Ignore your own messages + if (string.contains(MinecraftClient.getInstance().getSession().getUsername())) return true; // Ignore your own messages if (SkyblockerConfigManager.get().mining.glacite.enableParsingChatCorpseFinder) parseCords(text); // parsing cords from chat Matcher matcherCorpse = CORPSE_FOUND_PATTERN.matcher(string); - if (!matcherCorpse.find()) return; + if (!matcherCorpse.find()) return true; LOGGER.debug(PREFIX + "Triggered code for onChatMessage"); LOGGER.debug(PREFIX + "State of corpsesByType: {}", corpsesByType); @@ -150,7 +150,7 @@ public class CorpseFinder { List corpses = corpsesByType.get(corpseType); if (corpses == null) { LOGGER.warn(PREFIX + "Couldn't get corpses! corpse type string: {}, parsed corpse type: {}", corpseTypeString, corpseType); - return; + return true; } corpses.stream() // Since squared distance comparison will yield the same result as normal distance comparison, we can use squared distance to avoid square root calculation .min(Comparator.comparingDouble(corpse -> corpse.entity.squaredDistanceTo(MinecraftClient.getInstance().player))) @@ -161,6 +161,8 @@ public class CorpseFinder { }, () -> LOGGER.warn(PREFIX + "Couldn't find the closest corpse despite triggering onChatMessage!") ); + + return true; } @SuppressWarnings("DataFlowIssue") diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsChestHighlighter.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsChestHighlighter.java index 3c402fe4..a52df3bf 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsChestHighlighter.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsChestHighlighter.java @@ -44,7 +44,7 @@ public class CrystalsChestHighlighter { @Init public static void init() { - ClientReceiveMessageEvents.GAME.register(CrystalsChestHighlighter::extractLocationFromMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(CrystalsChestHighlighter::extractLocationFromMessage); WorldRenderEvents.AFTER_TRANSLUCENT.register(CrystalsChestHighlighter::render); ClientPlayConnectionEvents.JOIN.register((_handler, _sender, _client) -> reset()); } @@ -56,14 +56,16 @@ public class CrystalsChestHighlighter { currentLockCount = 0; } - private static void extractLocationFromMessage(Text text, boolean b) { + private static boolean extractLocationFromMessage(Text text, boolean b) { if (!Utils.isInCrystalHollows() || !SkyblockerConfigManager.get().mining.crystalHollows.chestHighlighter) { - return; + return true; } //if a chest is spawned add chest to look for if (text.getString().matches(CHEST_SPAWN_MESSAGE)) { waitingForChest += 1; } + + return true; } /** diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java index 6f5a1f63..4bb2174b 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java @@ -74,7 +74,7 @@ public class CrystalsLocationsManager { // Crystal Hollows Waypoints Scheduler.INSTANCE.scheduleCyclic(CrystalsLocationsManager::update, 40); WorldRenderEvents.AFTER_TRANSLUCENT.register(CrystalsLocationsManager::render); - ClientReceiveMessageEvents.GAME.register(CrystalsLocationsManager::extractLocationFromMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(CrystalsLocationsManager::extractLocationFromMessage); ClientCommandRegistrationCallback.EVENT.register(CrystalsLocationsManager::registerWaypointLocationCommands); SkyblockEvents.LOCATION_CHANGE.register(CrystalsLocationsManager::onLocationChange); ClientPlayConnectionEvents.JOIN.register((_handler, _sender, _client) -> reset()); @@ -83,9 +83,9 @@ public class CrystalsLocationsManager { WorldRenderEvents.AFTER_TRANSLUCENT.register(NucleusWaypoints::render); } - private static void extractLocationFromMessage(Text message, Boolean overlay) { + private static boolean extractLocationFromMessage(Text message, Boolean overlay) { if (!SkyblockerConfigManager.get().mining.crystalsWaypoints.findInChat || !Utils.isInCrystalHollows() || overlay) { - return; + return true; } String text = Formatting.strip(message.getString()); try { @@ -101,7 +101,7 @@ public class CrystalsLocationsManager { String location = blockPos.getX() + " " + blockPos.getY() + " " + blockPos.getZ(); //if position is not in the hollows do not add it if (!checkInCrystals(blockPos)) { - return; + return true; } //see if there is a name of a location to add to this @@ -112,13 +112,13 @@ public class CrystalsLocationsManager { if (!activeWaypoints.containsKey(waypointLocation)) { addCustomWaypoint(waypointLocation, blockPos); } - return; + return true; } } //if the location is not found ask the user for the location (could have been in a previous chat message) if (CLIENT.player == null || CLIENT.getNetworkHandler() == null) { - return; + return true; } CLIENT.player.sendMessage(getLocationMenu(location, false), false); @@ -141,6 +141,8 @@ public class CrystalsLocationsManager { } } } + + return true; } protected static boolean checkInCrystals(BlockPos pos) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java index 2e3c89a7..77be2ae2 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java @@ -26,19 +26,21 @@ public class GlaciteColdOverlay { @Init public static void init() { Scheduler.INSTANCE.scheduleCyclic(GlaciteColdOverlay::update, 20); - ClientReceiveMessageEvents.GAME.register(GlaciteColdOverlay::coldReset); + ClientReceiveMessageEvents.ALLOW_GAME.register(GlaciteColdOverlay::coldReset); HudLayerRegistrationCallback.EVENT.register(d -> d.attachLayerAfter(IdentifiedLayer.MISC_OVERLAYS, POWDER_SNOW_OUTLINE, (context, tickCounter) -> render(context))); } - private static void coldReset(Text text, boolean b) { + private static boolean coldReset(Text text, boolean b) { if (!Utils.isInDwarvenMines() || b) { - return; + return true; } String message = text.getString(); if (message.equals("The warmth of the campfire reduced your ❄ Cold to 0!")) { cold = 0; resetTime = System.currentTimeMillis(); } + + return true; } private static void update() { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/MetalDetector.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/MetalDetector.java index 72763bca..a870e55b 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/MetalDetector.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/MetalDetector.java @@ -92,7 +92,7 @@ public class MetalDetector { @Init public static void init() { - ClientReceiveMessageEvents.GAME.register(MetalDetector::getDistanceMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(MetalDetector::getDistanceMessage); WorldRenderEvents.AFTER_TRANSLUCENT.register(MetalDetector::render); ClientPlayConnectionEvents.JOIN.register((_handler, _sender, _client) -> reset()); } @@ -103,15 +103,15 @@ public class MetalDetector { * @param text the message sent to the player * @param overlay if the message is an overlay message */ - private static void getDistanceMessage(Text text, boolean overlay) { + private static boolean getDistanceMessage(Text text, boolean overlay) { if (!overlay || !SkyblockerConfigManager.get().mining.crystalHollows.metalDetectorHelper || !Utils.isInCrystalHollows() || !(Utils.getIslandArea().substring(2).equals("Mines of Divan")) || CLIENT.player == null) { checkChestFound(text); - return; + return true; } //in the mines of divan Matcher treasureDistanceMature = TREASURE_PATTERN.matcher(text.getString()); if (!treasureDistanceMature.find()) { - return; + return true; } //find new values double distance = Double.parseDouble(treasureDistanceMature.group(2)); @@ -146,6 +146,8 @@ public class MetalDetector { //update previous positions previousDistance = distance; previousPlayerPos = playerPos; + + return true; } /** diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/WishingCompassSolver.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/WishingCompassSolver.java index 429fe8e0..dadd9714 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/WishingCompassSolver.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/WishingCompassSolver.java @@ -75,7 +75,7 @@ public class WishingCompassSolver { public static void init() { UseItemCallback.EVENT.register(WishingCompassSolver::onItemInteract); UseBlockCallback.EVENT.register(WishingCompassSolver::onBlockInteract); - ClientReceiveMessageEvents.GAME.register(WishingCompassSolver::failMessageListener); + ClientReceiveMessageEvents.ALLOW_GAME.register(WishingCompassSolver::failMessageListener); ClientPlayConnectionEvents.JOIN.register((_handler, _sender, _client) -> reset()); } @@ -84,13 +84,15 @@ public class WishingCompassSolver { * @param text message * @param b overlay */ - private static void failMessageListener(Text text, boolean b) { + private static boolean failMessageListener(Text text, boolean b) { if (!Utils.isInCrystalHollows()) { - return; + return true; } if (Formatting.strip(text.getString()).equals("The Wishing Compass can't seem to locate anything!")) { currentState = SolverStates.NOT_STARTED; } + + return true; } private static void reset() { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/end/TheEnd.java b/src/main/java/de/hysky/skyblocker/skyblock/end/TheEnd.java index 689544a7..e5f0f1e7 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/end/TheEnd.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/end/TheEnd.java @@ -84,8 +84,8 @@ public class TheEnd { // Reset when changing island SkyblockEvents.LOCATION_CHANGE.register(location -> resetLocation()); - ClientReceiveMessageEvents.GAME.register((message, overlay) -> { - if (!Utils.isInTheEnd() || overlay) return; + ClientReceiveMessageEvents.ALLOW_GAME.register((message, overlay) -> { + if (!Utils.isInTheEnd() || overlay) return true; String lowerCase = message.getString().toLowerCase(); if (lowerCase.contains("tremor")) { if (stage == 0) checkAllProtectorLocations(); @@ -93,8 +93,10 @@ public class TheEnd { } else if (lowerCase.contains("rises from below")) stage = 5; else if (lowerCase.contains("protector down") || lowerCase.contains("has risen")) resetLocation(); - else return; + else return true; EndHudWidget.getInstance().update(); + + return true; }); WorldRenderEvents.AFTER_TRANSLUCENT.register(TheEnd::renderWaypoint); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHud.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHud.java index 793bc11c..3d831f66 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHud.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHud.java @@ -75,7 +75,7 @@ public class FarmingHud { blockBreaks.enqueue(System.currentTimeMillis()); } }); - ClientReceiveMessageEvents.GAME.register((message, overlay) -> { + ClientReceiveMessageEvents.ALLOW_GAME.register((message, overlay) -> { if (shouldRender() && overlay) { Matcher matcher = FARMING_XP.matcher(Formatting.strip(message.getString())); if (matcher.find()) { @@ -87,6 +87,8 @@ public class FarmingHud { } } } + + return true; }); ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(literal(SkyblockerMod.NAMESPACE).then(literal("hud").then(literal("farming") .executes(Scheduler.queueOpenScreenCommand(() -> new WidgetsConfigurationScreen(Location.GARDEN, "hud_garden", null))))))); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/mayors/JerryTimer.java b/src/main/java/de/hysky/skyblocker/skyblock/mayors/JerryTimer.java index c8b148ea..c5c1204e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/mayors/JerryTimer.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/mayors/JerryTimer.java @@ -22,19 +22,21 @@ public final class JerryTimer { public static void init() { //Example message: "§b ☺ §eThere is a §aGreen Jerry§e!" //There are various formats, all of which start with the "§b ☺ " prefix and contain the word " Jerry" - ClientReceiveMessageEvents.GAME.register((message, overlay) -> { - if (overlay || !MayorUtils.getMayor().name().equals("Jerry") || !SkyblockerConfigManager.get().helpers.jerry.enableJerryTimer) return; + ClientReceiveMessageEvents.ALLOW_GAME.register((message, overlay) -> { + if (overlay || !MayorUtils.getMayor().name().equals("Jerry") || !SkyblockerConfigManager.get().helpers.jerry.enableJerryTimer) return true; String text = message.getString(); //This part of hypixel still uses legacy text formatting, so we can't directly check for the actual text - if (!text.startsWith("§b ☺ ") || !text.contains("Jerry")) return; + if (!text.startsWith("§b ☺ ") || !text.contains("Jerry")) return true; HoverEvent hoverEvent = message.getStyle().getHoverEvent(); - if (hoverEvent == null || hoverEvent.getAction() != HoverEvent.Action.SHOW_TEXT) return; + if (hoverEvent == null || hoverEvent.getAction() != HoverEvent.Action.SHOW_TEXT) return true; ClientPlayerEntity player = MinecraftClient.getInstance().player; Scheduler.INSTANCE.schedule(() -> { if (player == null || !Utils.isOnSkyblock()) return; player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.config.helpers.jerry.sendJerryTimerMessage")).formatted(Formatting.GREEN), false); player.playSoundToPlayer(SoundEvents.ENTITY_VILLAGER_TRADE, SoundCategory.NEUTRAL, 100f, 1.0f); }, 20*60*6); // 6 minutes + + return true; }); } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/rift/EnigmaSouls.java b/src/main/java/de/hysky/skyblocker/skyblock/rift/EnigmaSouls.java index 1f6e561a..13f4ef02 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/rift/EnigmaSouls.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/rift/EnigmaSouls.java @@ -121,13 +121,15 @@ public class EnigmaSouls { } } - static void onMessage(Text text, boolean overlay) { + static boolean onMessage(Text text, boolean overlay) { if (Utils.isInTheRift() && !overlay) { String message = text.getString(); if (message.equals("You have already found that Enigma Soul!") || Formatting.strip(message).equals("SOUL! You unlocked an Enigma Soul!")) markClosestSoulAsFound(); } + + return true; } static void registerCommands(CommandDispatcher dispatcher, CommandRegistryAccess registryAccess) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/rift/TheRift.java b/src/main/java/de/hysky/skyblocker/skyblock/rift/TheRift.java index 09385bd4..b5980535 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/rift/TheRift.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/rift/TheRift.java @@ -17,7 +17,7 @@ public class TheRift { ClientLifecycleEvents.CLIENT_STARTED.register(MirrorverseWaypoints::load); ClientLifecycleEvents.CLIENT_STARTED.register(EnigmaSouls::load); ClientLifecycleEvents.CLIENT_STOPPING.register(EnigmaSouls::save); - ClientReceiveMessageEvents.GAME.register(EnigmaSouls::onMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(EnigmaSouls::onMessage); ClientCommandRegistrationCallback.EVENT.register(EnigmaSouls::registerCommands); Scheduler.INSTANCE.scheduleCyclic(EffigyWaypoints::updateEffigies, SkyblockerConfigManager.get().slayers.vampireSlayer.effigyUpdateFrequency); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/slayers/SlayerManager.java b/src/main/java/de/hysky/skyblocker/skyblock/slayers/SlayerManager.java index 8b2c73d7..79c1462f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/slayers/SlayerManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/slayers/SlayerManager.java @@ -55,7 +55,7 @@ public class SlayerManager { @Init public static void init() { - ClientReceiveMessageEvents.GAME.register(SlayerManager::onChatMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(SlayerManager::onChatMessage); SkyblockEvents.LOCATION_CHANGE.register(SlayerManager::onLocationChange); SkyblockEvents.AREA_CHANGE.register(SlayerManager::onAreaChange); Scheduler.INSTANCE.scheduleCyclic(TwinClawsIndicator::updateIce, SkyblockerConfigManager.get().slayers.vampireSlayer.holyIceUpdateFrequency); @@ -75,37 +75,37 @@ public class SlayerManager { Scheduler.INSTANCE.schedule(() -> getSlayerBossInfo(false), 20 * 2); } - private static void onChatMessage(Text text, boolean overlay) { - if (overlay || !Utils.isOnSkyblock()) return; + private static boolean onChatMessage(Text text, boolean overlay) { + if (overlay || !Utils.isOnSkyblock()) return true; String message = text.getString(); switch (message.replaceFirst("^\\s+", "")) { case "Your Slayer Quest has been cancelled!", "SLAYER QUEST FAILED!" -> { slayerQuest = null; bossFight = null; - return; + return true; } case "SLAYER QUEST STARTED!" -> { if (slayerQuest == null) slayerQuest = new SlayerQuest(); bossFight = null; - return; + return true; } case "NICE! SLAYER BOSS SLAIN!" -> { if (slayerQuest != null && bossFight != null) { bossFight.slain = true; SlayerTimer.onBossDeath(bossFight.bossSpawnTime); } - return; + return true; } case "SLAYER QUEST COMPLETE!" -> { if (slayerQuest != null && bossFight != null && !bossFight.slain) SlayerTimer.onBossDeath(bossFight.bossSpawnTime); bossFight = null; - return; + return true; } } - if (slayerQuest == null) return; + if (slayerQuest == null) return true; Matcher matcherNextLvl = PATTERN_XP_NEEDED.matcher(message); Matcher matcherLvlUp = PATTERN_LVL_UP.matcher(message); @@ -125,6 +125,8 @@ public class SlayerManager { } else if (matcherLvlUp.matches()) { slayerQuest.level = Integer.parseInt(message.replaceAll("(\\d+).+", "$1")); } + + return true; } public static void calculateBossesNeeded() { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/BeaconHighlighter.java b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/BeaconHighlighter.java index 553ed92a..f4e43d07 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/BeaconHighlighter.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/BeaconHighlighter.java @@ -26,19 +26,21 @@ public class BeaconHighlighter { public static void init() { WorldRenderEvents.AFTER_TRANSLUCENT.register(BeaconHighlighter::render); ClientPlayConnectionEvents.JOIN.register((_handler, _sender, _client) -> reset()); - ClientReceiveMessageEvents.GAME.register(BeaconHighlighter::onMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(BeaconHighlighter::onMessage); } private static void reset() { beaconPositions.clear(); } - private static void onMessage(Text text, boolean overlay) { + private static boolean onMessage(Text text, boolean overlay) { if (Utils.isInTheEnd() && !overlay) { String message = text.getString(); if (message.contains("SLAYER QUEST COMPLETE!") || message.contains("NICE! SLAYER BOSS SLAIN!")) reset(); } + + return true; } /** diff --git a/src/main/java/de/hysky/skyblocker/skyblock/special/DungeonsSpecialEffects.java b/src/main/java/de/hysky/skyblocker/skyblock/special/DungeonsSpecialEffects.java index a4bbc346..baf45fb3 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/special/DungeonsSpecialEffects.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/special/DungeonsSpecialEffects.java @@ -22,10 +22,10 @@ public class DungeonsSpecialEffects { @Init public static void init() { - ClientReceiveMessageEvents.GAME.register(DungeonsSpecialEffects::displayRareDropEffect); + ClientReceiveMessageEvents.ALLOW_GAME.register(DungeonsSpecialEffects::displayRareDropEffect); } - private static void displayRareDropEffect(Text message, boolean overlay) { + private static boolean displayRareDropEffect(Text message, boolean overlay) { //We don't check if we're in dungeons because that check doesn't work in m7 which defeats the point of this //It might also allow it to work with Croesus if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().general.specialEffects.rareDungeonDropEffects && !overlay) { @@ -47,6 +47,8 @@ public class DungeonsSpecialEffects { LOGGER.error("[Skyblocker Special Effects] An unexpected exception was encountered: ", e); } } + + return true; } private static ItemStack getStackFromName(String itemName) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/special/DyeSpecialEffects.java b/src/main/java/de/hysky/skyblocker/skyblock/special/DyeSpecialEffects.java index 1369a35d..cd136307 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/special/DyeSpecialEffects.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/special/DyeSpecialEffects.java @@ -25,10 +25,10 @@ public class DyeSpecialEffects { @Init public static void init() { - ClientReceiveMessageEvents.GAME.register(DyeSpecialEffects::displayDyeDropEffect); + ClientReceiveMessageEvents.ALLOW_GAME.register(DyeSpecialEffects::displayDyeDropEffect); } - private static void displayDyeDropEffect(Text message, boolean overlay) { + private static boolean displayDyeDropEffect(Text message, boolean overlay) { if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().general.specialEffects.rareDyeDropEffects && !overlay) { try { String stringForm = message.getString(); @@ -46,6 +46,8 @@ public class DyeSpecialEffects { LOGGER.error("[Skyblocker Special Effects] An unexpected exception was encountered!", e); } } + + return true; } private static ItemStack findDyeStack(String dyeName) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/FairySouls.java b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/FairySouls.java index 2c4ec4b8..d0808228 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/FairySouls.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/FairySouls.java @@ -66,7 +66,7 @@ public class FairySouls { ClientLifecycleEvents.CLIENT_STOPPING.register(FairySouls::saveFoundFairySouls); ClientCommandRegistrationCallback.EVENT.register(FairySouls::registerCommands); WorldRenderEvents.AFTER_TRANSLUCENT.register(FairySouls::render); - ClientReceiveMessageEvents.GAME.register(FairySouls::onChatMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(FairySouls::onChatMessage); } private static void loadFairySouls() { @@ -154,11 +154,13 @@ public class FairySouls { } } - private static void onChatMessage(Text text, boolean overlay) { + private static boolean onChatMessage(Text text, boolean overlay) { String message = text.getString(); if (message.equals("You have already found that Fairy Soul!") || message.equals("§d§lSOUL! §fYou found a §dFairy Soul§f!")) { markClosestFairyFound(); } + + return true; } private static void markClosestFairyFound() { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/MythologicalRitual.java b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/MythologicalRitual.java index 8a2afe37..553a61c4 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/MythologicalRitual.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/MythologicalRitual.java @@ -66,7 +66,7 @@ public class MythologicalRitual { AttackBlockCallback.EVENT.register(MythologicalRitual::onAttackBlock); UseBlockCallback.EVENT.register(MythologicalRitual::onUseBlock); UseItemCallback.EVENT.register(MythologicalRitual::onUseItem); - ClientReceiveMessageEvents.GAME.register(MythologicalRitual::onChatMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(MythologicalRitual::onChatMessage); ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> reset()); ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(literal(SkyblockerMod.NAMESPACE).then(literal("diana") .then(literal("clearGriffinBurrows").executes(context -> { @@ -250,12 +250,14 @@ public class MythologicalRitual { return ActionResult.PASS; } - public static void onChatMessage(Text message, boolean overlay) { + public static boolean onChatMessage(Text message, boolean overlay) { if (isActive() && GRIFFIN_BURROW_DUG.matcher(message.getString()).matches()) { previousBurrow.confirmed = TriState.FALSE; previousBurrow = griffinBurrows.get(lastDugBurrowPos); previousBurrow.confirmed = TriState.DEFAULT; } + + return true; } private static boolean isActive() { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/Relics.java b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/Relics.java index 0980f0ef..61f57ced 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/Relics.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/Relics.java @@ -56,7 +56,7 @@ public class Relics { ClientLifecycleEvents.CLIENT_STOPPING.register(Relics::saveFoundRelics); ClientCommandRegistrationCallback.EVENT.register(Relics::registerCommands); WorldRenderEvents.AFTER_TRANSLUCENT.register(Relics::render); - ClientReceiveMessageEvents.GAME.register(Relics::onChatMessage); + ClientReceiveMessageEvents.ALLOW_GAME.register(Relics::onChatMessage); } private static void loadRelics(MinecraftClient client) { @@ -144,11 +144,13 @@ public class Relics { } } - private static void onChatMessage(Text text, boolean overlay) { + private static boolean onChatMessage(Text text, boolean overlay) { String message = text.getString(); if (message.equals("You've already found this relic!") || message.startsWith("+10,000 Coins! (") && message.endsWith("/28 Relics)")) { markClosestRelicFound(); } + + return true; } private static void markClosestRelicFound() { diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java index e4c4ba12..ce6857ce 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Utils.java +++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java @@ -255,7 +255,6 @@ public class Utils { @Init public static void init() { ClientReceiveMessageEvents.ALLOW_GAME.register(Utils::onChatMessage); - ClientReceiveMessageEvents.GAME_CANCELED.register(Utils::onChatMessage); // Somehow this works even though onChatMessage returns a boolean ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> onDisconnect()); //Register Mod API stuff @@ -569,7 +568,7 @@ public class Utils { int suggestions = profileSuggestionMessages; profileSuggestionMessages++; - return suggestions > 2; + return suggestions >= 2; } } -- cgit