Skip to content

Commit

Permalink
Handle messages sent by commands too
Browse files Browse the repository at this point in the history
  • Loading branch information
Erdragh committed May 27, 2024
1 parent fe29aa2 commit 3a9d0b8
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
- Port to 1.20.4 and NeoForge
- Removed Forge as a supported Platform for Minecraft > 1.20.1
- JiJ SQLite and Commonmark dependencies, allowing better compatibility and removing the SQLite JDBC dependency
- Handle messages sent by commands too (i.e. `say hello`)

# 1.3.0
- Message Embeds to better represent Minecraft messages on Discord
Expand Down
6 changes: 6 additions & 0 deletions fabric/src/main/kotlin/dev/erdragh/astralbot/fabric/BotMod.kt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ object BotMod : ModInitializer {
minecraftHandler?.sendChatToDiscord(null as ServerPlayer?, message)
}
}
ServerMessageEvents.COMMAND_MESSAGE.register { message, _, _ ->
val content = message.decoratedContent()
if (content !is DiscordMessageComponent) {
minecraftHandler?.sendChatToDiscord(null as ServerPlayer?, content)
}
}

ServerPlayConnectionEvents.JOIN.register { packet, _, _ ->
minecraftHandler?.onPlayerJoin(packet.player.name.string)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package dev.erdragh.astralbot.mixins.forge;

import dev.erdragh.astralbot.neoforge.event.CommandMessageEvent;
import dev.erdragh.astralbot.neoforge.event.SystemMessageEvent;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.network.chat.ChatType;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.PlayerChatMessage;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.players.PlayerList;
import net.neoforged.neoforge.common.NeoForge;
Expand All @@ -14,8 +18,13 @@

@Mixin(PlayerList.class)
public abstract class PlayerListMixin {
@Inject(method = "broadcastSystemMessage(Lnet/minecraft/network/chat/Component;Ljava/util/function/Function;Z)V", at = @At("HEAD"), cancellable = true)
@Inject(method = "broadcastSystemMessage(Lnet/minecraft/network/chat/Component;Ljava/util/function/Function;Z)V", at = @At("HEAD"))
private void onSendGameMessage(Component message, Function<ServerPlayer, Component> playerMessageFactory, boolean overlay, CallbackInfo ci) {
NeoForge.EVENT_BUS.post(new SystemMessageEvent(message));
}

@Inject(method = "broadcastChatMessage(Lnet/minecraft/network/chat/PlayerChatMessage;Lnet/minecraft/commands/CommandSourceStack;Lnet/minecraft/network/chat/ChatType$Bound;)V", at = @At("HEAD"))
private void onSendCommandMessage(PlayerChatMessage message, CommandSourceStack source, ChatType.Bound params, CallbackInfo ci) {
NeoForge.EVENT_BUS.post(new CommandMessageEvent(message.decoratedContent()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import dev.erdragh.astralbot.config.AstralBotConfig
import dev.erdragh.astralbot.config.AstralBotTextConfig
import dev.erdragh.astralbot.neoforge.event.SystemMessageEvent
import dev.erdragh.astralbot.handlers.DiscordMessageComponent
import dev.erdragh.astralbot.neoforge.event.CommandMessageEvent
import net.minecraft.server.level.ServerPlayer
import net.neoforged.fml.ModLoadingContext
import net.neoforged.fml.common.Mod
Expand All @@ -26,6 +27,7 @@ object BotMod {
FORGE_BUS.addListener(::onServerStop)
FORGE_BUS.addListener(::onChatMessage)
FORGE_BUS.addListener(::onSystemMessage)
FORGE_BUS.addListener(::onCommandMessage)
FORGE_BUS.addListener(::onCommandRegistration)

FORGE_BUS.addListener(::onPlayerJoin)
Expand Down Expand Up @@ -54,6 +56,12 @@ object BotMod {
}
}

private fun onCommandMessage(event: CommandMessageEvent) {
if (event.message !is DiscordMessageComponent) {
minecraftHandler?.sendChatToDiscord(null as ServerPlayer?, event.message)
}
}

private fun onPlayerJoin(event: PlayerEvent.PlayerLoggedInEvent) {
minecraftHandler?.onPlayerJoin(event.entity.name.string)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package dev.erdragh.astralbot.neoforge.event

import net.minecraft.network.chat.Component
import net.neoforged.bus.api.Event
import net.neoforged.bus.api.ICancellableEvent

class CommandMessageEvent(val message: Component) : Event(), ICancellableEvent

0 comments on commit 3a9d0b8

Please sign in to comment.