diff options
author | msg-programs <msgdoesstuff@gmail.com> | 2023-05-19 17:05:13 +0200 |
---|---|---|
committer | msg-programs <msgdoesstuff@gmail.com> | 2023-05-19 17:05:13 +0200 |
commit | 615f462a1fc8fb5cc6fbe0c1e070f70241be9137 (patch) | |
tree | f72054aeb218f5ef7d24f29e1ce170f0624ff496 /src/main/java/me/xmrvizzy/skyblocker/chat | |
parent | 73968e490b4a6886b05f45a95bfcd2328affdac4 (diff) | |
parent | f0f41378eef1c7bf59827ed707db048db5ff7050 (diff) | |
download | Skyblocker-615f462a1fc8fb5cc6fbe0c1e070f70241be9137.tar.gz Skyblocker-615f462a1fc8fb5cc6fbe0c1e070f70241be9137.tar.bz2 Skyblocker-615f462a1fc8fb5cc6fbe0c1e070f70241be9137.zip |
Merge branch 'master' of https://github.com/SkyblockerMod/Skyblocker into skyhytab
Merge new commits.
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/chat')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java index 9ee87f2b..9e6b5f64 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java @@ -3,17 +3,25 @@ package me.xmrvizzy.skyblocker.chat; import me.xmrvizzy.skyblocker.chat.filters.*; import me.xmrvizzy.skyblocker.skyblock.api.ApiKeyListener; import me.xmrvizzy.skyblocker.skyblock.barn.HungryHiker; +import me.xmrvizzy.skyblocker.skyblock.barn.TreasureHunter; import me.xmrvizzy.skyblocker.skyblock.dungeon.Reparty; import me.xmrvizzy.skyblocker.skyblock.dungeon.ThreeWeirdos; import me.xmrvizzy.skyblocker.skyblock.dungeon.Trivia; import me.xmrvizzy.skyblocker.skyblock.dwarven.Fetchur; import me.xmrvizzy.skyblocker.skyblock.dwarven.Puzzler; -import me.xmrvizzy.skyblocker.skyblock.barn.TreasureHunter; +import me.xmrvizzy.skyblocker.utils.Utils; +import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; import net.fabricmc.fabric.api.event.Event; import net.fabricmc.fabric.api.event.EventFactory; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.text.Text; +@FunctionalInterface public interface ChatMessageListener { + /** + * An event called when a game message is received. Register your listeners in {@link ChatMessageListener#init()}. + */ Event<ChatMessageListener> EVENT = EventFactory.createArrayBacked(ChatMessageListener.class, (listeners) -> (message, asString) -> { for (ChatMessageListener listener : listeners) { @@ -23,6 +31,9 @@ public interface ChatMessageListener { return ChatFilterResult.PASS; }); + /** + * Registers {@link ChatMessageListener}s to {@link ChatMessageListener#EVENT} and registers {@link ChatMessageListener#EVENT} to {@link ClientReceiveMessageEvents#ALLOW_GAME} + */ static void init() { ChatMessageListener[] listeners = new ChatMessageListener[]{ // Features @@ -45,8 +56,33 @@ public interface ChatMessageListener { new TeleportPadFilter(), new AutopetFilter(), }; - for (ChatMessageListener listener : listeners) + // Register all listeners to EVENT + for (ChatMessageListener listener : listeners) { EVENT.register(listener); + } + // Register EVENT to ClientReceiveMessageEvents.ALLOW_GAME from fabric api + ClientReceiveMessageEvents.ALLOW_GAME.register((message, overlay) -> { + if (!Utils.isOnSkyblock) { + return true; + } + ChatFilterResult result = EVENT.invoker().onMessage(message, message.getString()); + switch (result) { + case ACTION_BAR -> { + if (overlay) { + return true; + } + ClientPlayerEntity player = MinecraftClient.getInstance().player; + if (player != null) { + player.sendMessage(message, true); + return false; + } + } + case FILTER -> { + return false; + } + } + return true; + }); } ChatFilterResult onMessage(Text message, String asString); |