feat: add chat packet types [S] [P] [D] to logger and console, but not discord, irc, nor any other places to save space since they have limited message length

This commit is contained in:
ChomeNS
2025-07-26 07:48:36 +07:00
parent 67a73b6ea3
commit e53c726afe
12 changed files with 92 additions and 25 deletions

View File

@@ -1 +1 @@
3504
3506

View File

@@ -1,7 +1,13 @@
package me.chayapak1.chomens_bot.data.chat;
public enum ChatPacketType {
PLAYER,
DISGUISED,
SYSTEM
PLAYER("P"),
DISGUISED("D"),
SYSTEM("S");
public final String shortName;
ChatPacketType (final String shortName) {
this.shortName = shortName;
}
}

View File

@@ -60,7 +60,7 @@ public interface Listener {
// chat
default boolean onPlayerMessageReceived (final PlayerMessage message, final ChatPacketType packetType) { return true; }
default boolean onSystemMessageReceived (final Component component, final String string, final String ansi) { return true; }
default boolean onSystemMessageReceived (final Component component, final ChatPacketType packetType, final String string, final String ansi) { return true; }
// commandspy
default void onCommandSpyMessageReceived (final PlayerEntry sender, final String command) { }

View File

@@ -126,7 +126,7 @@ public class ChatPlugin implements Listener {
final PlayerMessage finalPlayerMessage = playerMessage; // ???
bot.listener.dispatchWithCheck(listener -> {
if (!listener.onSystemMessageReceived(component, string, ansi)) return false;
if (!listener.onSystemMessageReceived(component, ChatPacketType.SYSTEM, string, ansi)) return false;
return finalPlayerMessage == null
|| listener.onPlayerMessageReceived(finalPlayerMessage, ChatPacketType.SYSTEM);
@@ -233,7 +233,7 @@ public class ChatPlugin implements Listener {
bot.listener.dispatchWithCheck(listener -> {
if (!listener.onPlayerMessageReceived(playerMessage, ChatPacketType.PLAYER)) return false;
return listener.onSystemMessageReceived(systemComponent, string, ansi);
return listener.onSystemMessageReceived(systemComponent, ChatPacketType.PLAYER, string, ansi);
});
}
@@ -258,8 +258,8 @@ public class ChatPlugin implements Listener {
final String string = ComponentUtilities.stringify(chatTypeComponent);
final String ansi = ComponentUtilities.stringifyAnsi(chatTypeComponent);
bot.listener.dispatchWithCheck(listener ->
listener.onSystemMessageReceived(chatTypeComponent, string, ansi));
bot.listener.dispatchWithCheck(listener -> listener.onSystemMessageReceived(
chatTypeComponent, ChatPacketType.DISGUISED, string, ansi));
for (final ChatParser parser : chatParsers) {
final PlayerMessage parsed = parser.parse(chatTypeComponent);
@@ -290,7 +290,7 @@ public class ChatPlugin implements Listener {
bot.listener.dispatchWithCheck(listener -> {
if (!listener.onPlayerMessageReceived(playerMessage, ChatPacketType.DISGUISED)) return false;
return listener.onSystemMessageReceived(component, string, ansi);
return listener.onSystemMessageReceived(component, ChatPacketType.DISGUISED, string, ansi);
});
}
}

View File

@@ -14,6 +14,7 @@ import me.chayapak1.chomens_bot.chomeNSMod.clientboundPackets.ClientboundMessage
import me.chayapak1.chomens_bot.chomeNSMod.serverboundPackets.ServerboundRunCommandPacket;
import me.chayapak1.chomens_bot.chomeNSMod.serverboundPackets.ServerboundRunCoreCommandPacket;
import me.chayapak1.chomens_bot.chomeNSMod.serverboundPackets.ServerboundSuccessfulHandshakePacket;
import me.chayapak1.chomens_bot.data.chat.ChatPacketType;
import me.chayapak1.chomens_bot.data.chomeNSMod.PayloadMetadata;
import me.chayapak1.chomens_bot.data.chomeNSMod.PayloadState;
import me.chayapak1.chomens_bot.data.listener.Listener;
@@ -209,10 +210,16 @@ public class ChomeNSModIntegrationPlugin implements Listener {
}
@Override
public boolean onSystemMessageReceived (final Component component, final String string, final String ansi) {
public boolean onSystemMessageReceived (
final Component component,
final ChatPacketType packetType,
final String string,
final String ansi
) {
if (
!(component instanceof final TranslatableComponent translatableComponent) ||
!translatableComponent.key().isEmpty()
packetType != ChatPacketType.SYSTEM
|| !(component instanceof final TranslatableComponent translatableComponent)
|| !translatableComponent.key().isEmpty()
) return true;
final List<TranslationArgument> arguments = translatableComponent.arguments();

View File

@@ -1,6 +1,7 @@
package me.chayapak1.chomens_bot.plugins;
import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.data.chat.ChatPacketType;
import me.chayapak1.chomens_bot.data.listener.Listener;
import me.chayapak1.chomens_bot.data.player.PlayerEntry;
import me.chayapak1.chomens_bot.util.ComponentUtilities;
@@ -20,11 +21,17 @@ public class CommandSpyPlugin implements Listener {
}
@Override
public boolean onSystemMessageReceived (final Component component, final String string, final String ansi) {
public boolean onSystemMessageReceived (
final Component component,
final ChatPacketType packetType,
final String string,
final String ansi
) {
final List<Component> children = component.children();
if (
!(component instanceof final TextComponent textComponent)
packetType != ChatPacketType.SYSTEM
|| !(component instanceof final TextComponent textComponent)
|| children.size() != 2
|| textComponent.style().isEmpty()
|| (textComponent.color() != NamedTextColor.AQUA && textComponent.color() != NamedTextColor.YELLOW)

View File

@@ -2,6 +2,7 @@ package me.chayapak1.chomens_bot.plugins;
import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.command.Command;
import me.chayapak1.chomens_bot.data.chat.ChatPacketType;
import me.chayapak1.chomens_bot.data.listener.Listener;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.JoinConfiguration;
@@ -23,11 +24,17 @@ public class CommandSuggestionPlugin implements Listener {
}
@Override
public boolean onSystemMessageReceived (final Component component, final String string, final String ansi) {
public boolean onSystemMessageReceived (
final Component component,
final ChatPacketType packetType,
final String string,
final String ansi
) {
final List<Component> children = component.children();
if (
!(component instanceof final TextComponent idComponent)
packetType != ChatPacketType.SYSTEM
|| !(component instanceof final TextComponent idComponent)
|| !idComponent.content().equals(id)
|| children.size() != 1
|| !(children.getFirst() instanceof final TextComponent playerComponent)

View File

@@ -4,6 +4,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.Configuration;
import me.chayapak1.chomens_bot.Main;
import me.chayapak1.chomens_bot.data.chat.ChatPacketType;
import me.chayapak1.chomens_bot.data.listener.Listener;
import me.chayapak1.chomens_bot.discord.DirectMessageEventHandler;
import me.chayapak1.chomens_bot.discord.GuildMessageEventHandler;
@@ -99,7 +100,12 @@ public class DiscordPlugin {
bot.listener.addListener(new Listener() {
@Override
public boolean onSystemMessageReceived (final Component component, final String string, final String _ansi) {
public boolean onSystemMessageReceived (
final Component component,
final ChatPacketType packetType,
final String string,
final String unusedAnsi
) {
if (string.length() > MAX_ANSI_MESSAGE_LENGTH) {
sendMessage(CodeBlockUtilities.escape(string), channelId);
} else {

View File

@@ -4,6 +4,7 @@ import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.Configuration;
import me.chayapak1.chomens_bot.Main;
import me.chayapak1.chomens_bot.command.contexts.IRCCommandContext;
import me.chayapak1.chomens_bot.data.chat.ChatPacketType;
import me.chayapak1.chomens_bot.data.listener.Listener;
import me.chayapak1.chomens_bot.util.ColorUtilities;
import me.chayapak1.chomens_bot.util.I18nUtilities;
@@ -72,7 +73,12 @@ public class IRCPlugin extends ListenerAdapter {
}
@Override
public boolean onSystemMessageReceived (final Component component, final String string, final String ansi) {
public boolean onSystemMessageReceived (
final Component component,
final ChatPacketType packetType,
final String string,
final String ansi
) {
IRCPlugin.this.systemMessageReceived(bot, ansi);
return true;

View File

@@ -1,12 +1,14 @@
package me.chayapak1.chomens_bot.plugins;
import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.data.chat.ChatPacketType;
import me.chayapak1.chomens_bot.data.listener.Listener;
import me.chayapak1.chomens_bot.data.logging.LogType;
import me.chayapak1.chomens_bot.util.ExceptionUtilities;
import me.chayapak1.chomens_bot.util.I18nUtilities;
import me.chayapak1.chomens_bot.util.LoggerUtilities;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.geysermc.mcprotocollib.network.event.session.ConnectedEvent;
import org.geysermc.mcprotocollib.network.event.session.DisconnectedEvent;
@@ -81,8 +83,21 @@ public class LoggerPlugin implements Listener {
}
@Override
public boolean onSystemMessageReceived (final Component component, final String string, final String ansi) {
log(LogType.CHAT, component);
public boolean onSystemMessageReceived (
final Component component,
final ChatPacketType packetType,
final String string,
final String ansi
) {
log(
LogType.CHAT,
Component.translatable(
"[%s] %s",
NamedTextColor.DARK_GRAY,
Component.text(packetType.shortName, NamedTextColor.GRAY),
component.colorIfAbsent(NamedTextColor.WHITE)
)
);
return true;
}

View File

@@ -3,6 +3,7 @@ package me.chayapak1.chomens_bot.plugins;
import it.unimi.dsi.fastutil.Pair;
import it.unimi.dsi.fastutil.objects.ObjectObjectImmutablePair;
import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.data.chat.ChatPacketType;
import me.chayapak1.chomens_bot.data.listener.Listener;
import me.chayapak1.chomens_bot.util.RandomStringUtilities;
import net.kyori.adventure.text.*;
@@ -50,10 +51,16 @@ public class QueryPlugin implements Listener {
}
@Override
public boolean onSystemMessageReceived (final Component component, final String string, final String ansi) {
public boolean onSystemMessageReceived (
final Component component,
final ChatPacketType packetType,
final String string,
final String ansi
) {
if (
!(component instanceof final TranslatableComponent rootTranslatable) ||
!rootTranslatable.key().equals(ID)
packetType != ChatPacketType.SYSTEM
|| !(component instanceof final TranslatableComponent rootTranslatable)
|| !rootTranslatable.key().equals(ID)
) return true;
final List<TranslationArgument> arguments = rootTranslatable.arguments();

View File

@@ -1,6 +1,7 @@
package me.chayapak1.chomens_bot.plugins;
import me.chayapak1.chomens_bot.Bot;
import me.chayapak1.chomens_bot.data.chat.ChatPacketType;
import me.chayapak1.chomens_bot.data.listener.Listener;
import me.chayapak1.chomens_bot.data.player.PlayerEntry;
import me.chayapak1.chomens_bot.data.selfCare.SelfCare;
@@ -64,7 +65,12 @@ public class SelfCarePlugin implements Listener {
}
@Override
public boolean onSystemMessageReceived (final Component component, final String string, final String ansi) {
public boolean onSystemMessageReceived (
final Component component,
final ChatPacketType packetType,
final String string,
final String ansi
) {
for (final SelfCare selfCare : selfCares) selfCare.onMessageReceived(component, string);
return true;