diff --git a/core/src/main/java/com/xujiayao/discord_mc_chat/server/ServerHandler.java b/core/src/main/java/com/xujiayao/discord_mc_chat/server/ServerHandler.java index 44738f25..400bab69 100644 --- a/core/src/main/java/com/xujiayao/discord_mc_chat/server/ServerHandler.java +++ b/core/src/main/java/com/xujiayao/discord_mc_chat/server/ServerHandler.java @@ -63,8 +63,13 @@ public class ServerHandler extends SimpleChannelInboundHandler { switch (packet) { case MinecraftEventPacket p -> { switch (p.type) { + // Server events case SERVER_STARTED -> DiscordManager.clientBroadcast(clientName, "server.started", "server.start", false, p.placeholders); case SERVER_STOPPING -> DiscordManager.clientBroadcast(clientName, "server.stopped", "server.stop", false, p.placeholders); + // Player events + case PLAYER_JOIN -> DiscordManager.clientBroadcast(clientName, "player.join", "player.join", false, p.placeholders); + case PLAYER_QUIT -> DiscordManager.clientBroadcast(clientName, "player.quit", "player.quit", false, p.placeholders); + // Unhandled events default -> LOGGER.warn("Received MinecraftEventPacket from authenticated client {}: type={}, placeholders={}", clientName, p.type, p.placeholders); } } diff --git a/minecraft/src/main/java/com/xujiayao/discord_mc_chat/minecraft/events/MinecraftEventHandler.java b/minecraft/src/main/java/com/xujiayao/discord_mc_chat/minecraft/events/MinecraftEventHandler.java index 8de86421..365255bd 100644 --- a/minecraft/src/main/java/com/xujiayao/discord_mc_chat/minecraft/events/MinecraftEventHandler.java +++ b/minecraft/src/main/java/com/xujiayao/discord_mc_chat/minecraft/events/MinecraftEventHandler.java @@ -35,6 +35,22 @@ public class MinecraftEventHandler { DMCC.shutdown(); }); + EventManager.register(MinecraftEvents.PlayerJoin.class, event -> { + Map placeholders = Map.of( + "user_name", event.serverPlayer().getName().getString(), + "display_name", event.serverPlayer().getDisplayName().getString() + ); + NetworkManager.sendPacketToServer(new MinecraftEventPacket(MinecraftEventPacket.MessageType.PLAYER_JOIN, placeholders)); + }); + + EventManager.register(MinecraftEvents.PlayerQuit.class, event -> { + Map placeholders = Map.of( + "user_name", event.serverPlayer().getName().getString(), + "display_name", event.serverPlayer().getDisplayName().getString() + ); + NetworkManager.sendPacketToServer(new MinecraftEventPacket(MinecraftEventPacket.MessageType.PLAYER_QUIT, placeholders)); + }); + EventManager.register(MinecraftEvents.CommandRegister.class, event -> { // Register Minecraft /dmcc commands MinecraftCommands.register(event.dispatcher());