diff --git a/src/main/java/emu/lunarcore/Config.java b/src/main/java/emu/lunarcore/Config.java index 120de83..703321e 100644 --- a/src/main/java/emu/lunarcore/Config.java +++ b/src/main/java/emu/lunarcore/Config.java @@ -130,6 +130,7 @@ public class Config { public boolean commands = true; public boolean connections = true; public boolean packets = false; + public boolean filterLoopingPackets = false; } @Getter diff --git a/src/main/java/emu/lunarcore/server/game/GameSession.java b/src/main/java/emu/lunarcore/server/game/GameSession.java index ace957c..33b289b 100644 --- a/src/main/java/emu/lunarcore/server/game/GameSession.java +++ b/src/main/java/emu/lunarcore/server/game/GameSession.java @@ -127,6 +127,10 @@ public class GameSession { // Log packet if (LunarCore.getConfig().getLogOptions().packets) { + if (LunarCore.getConfig().getLogOptions().filterLoopingPackets && CmdIdUtils.LOOP_PACKETS.contains(opcode)) { + return; + } + logPacket("RECV", opcode, data); } @@ -152,6 +156,10 @@ public class GameSession { // Log if (LunarCore.getConfig().getLogOptions().packets) { + if (LunarCore.getConfig().getLogOptions().filterLoopingPackets && CmdIdUtils.LOOP_PACKETS.contains(packet.getOpcode())) { + return; + } + logPacket("SEND", packet.getOpcode(), packet.getData()); } } @@ -167,6 +175,10 @@ public class GameSession { // Log if (LunarCore.getConfig().getLogOptions().packets) { + if (LunarCore.getConfig().getLogOptions().filterLoopingPackets && CmdIdUtils.LOOP_PACKETS.contains(cmdId)) { + return; + } + logPacket("SEND", cmdId, null); } } diff --git a/src/main/java/emu/lunarcore/server/packet/CmdIdUtils.java b/src/main/java/emu/lunarcore/server/packet/CmdIdUtils.java index 1b0fac9..f993745 100644 --- a/src/main/java/emu/lunarcore/server/packet/CmdIdUtils.java +++ b/src/main/java/emu/lunarcore/server/packet/CmdIdUtils.java @@ -4,6 +4,7 @@ import java.io.FileWriter; import java.io.IOException; import java.lang.reflect.Field; import java.util.Map; +import java.util.Set; import java.util.TreeMap; import java.util.stream.Collectors; @@ -14,6 +15,13 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; public class CmdIdUtils { + public static final Set LOOP_PACKETS = Set.of( + CmdId.PlayerHeartBeatCsReq, + CmdId.PlayerHeartBeatScRsp, + CmdId.SceneEntityMoveCsReq, + CmdId.SceneEntityMoveScRsp + ); + private static Int2ObjectMap opcodeMap; static {