From a764cec4a96dd55c536ea24a7e6025be5db60dd7 Mon Sep 17 00:00:00 2001 From: FlorianMichael Date: Sun, 16 Feb 2025 13:55:20 +0100 Subject: [PATCH] Add DebugHandler#logPrePacketTransform/setLogPacketTransform (#4386) --- .../viaversion/api/debug/DebugHandler.java | 33 +++++++++++++---- .../commands/defaultsubs/DebugSubCmd.java | 4 ++ .../viaversion/debug/DebugHandlerImpl.java | 11 ++++++ .../protocol/ProtocolPipelineImpl.java | 11 +++--- .../velocity/storage/VelocityStorage.java | 37 ------------------- 5 files changed, 46 insertions(+), 50 deletions(-) diff --git a/api/src/main/java/com/viaversion/viaversion/api/debug/DebugHandler.java b/api/src/main/java/com/viaversion/viaversion/api/debug/DebugHandler.java index 52508d062..4bc856c64 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/debug/DebugHandler.java +++ b/api/src/main/java/com/viaversion/viaversion/api/debug/DebugHandler.java @@ -22,7 +22,6 @@ */ package com.viaversion.viaversion.api.debug; -import com.google.common.annotations.Beta; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.protocol.packet.Direction; import com.viaversion.viaversion.api.protocol.packet.PacketType; @@ -50,7 +49,6 @@ public interface DebugHandler { * * @param packetTypeName packet type name */ - @Beta void addPacketTypeNameToLog(String packetTypeName); /** @@ -59,7 +57,6 @@ public interface DebugHandler { * * @param packetType packet type */ - @Beta void addPacketTypeToLog(PacketType packetType); /** @@ -67,22 +64,44 @@ public interface DebugHandler { * * @param packetTypeName packet type name */ - @Beta boolean removePacketTypeNameToLog(String packetTypeName); /** * Resets packet type filters. */ - @Beta void clearPacketTypesToLog(); + /** + * Sets whether packets should be logged before and after being transformed. + * + * @param logPacketTransform whether packets should be logged + */ + default void setLogPacketTransform(boolean logPacketTransform) { + setLogPrePacketTransform(logPacketTransform); + setLogPostPacketTransform(logPacketTransform); + } + + /** + * Returns whether packets should be logged before being transformed. + * Set to true by default. + * + * @return whether packets should be logged before being transformed + */ + boolean logPrePacketTransform(); + + /** + * Sets whether packets should be logged before being transformed. + * + * @param logPrePacketTransform whether packets should be logged before being transformed + */ + void setLogPrePacketTransform(boolean logPrePacketTransform); + /** * Returns whether packets should be logged after being transformed. * Set to false by default. * * @return whether packets should be logged after being transformed */ - @Beta boolean logPostPacketTransform(); /** @@ -90,7 +109,6 @@ public interface DebugHandler { * * @param logPostPacketTransform whether packets should be logged after being transformed */ - @Beta void setLogPostPacketTransform(boolean logPostPacketTransform); /** @@ -103,7 +121,6 @@ public interface DebugHandler { */ boolean shouldLog(PacketWrapper wrapper, Direction direction); - @Beta default void enableAndLogIds(final PacketType... packetTypes) { setEnabled(true); for (final PacketType packetType : packetTypes) { diff --git a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DebugSubCmd.java b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DebugSubCmd.java index 3ae0ee1e7..3209e2ca5 100644 --- a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DebugSubCmd.java +++ b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DebugSubCmd.java @@ -49,6 +49,10 @@ public class DebugSubCmd implements ViaSubCommand { debug.clearPacketTypesToLog(); sendMessage(sender, "&6Cleared packet types to log"); return true; + } else if (args[0].equalsIgnoreCase("logpretransform")) { + debug.setLogPrePacketTransform(!debug.logPrePacketTransform()); + sendMessage(sender, "&6Pre transform packet logging is now %s", (debug.logPrePacketTransform() ? "&aenabled" : "&cdisabled")); + return true; } else if (args[0].equalsIgnoreCase("logposttransform")) { debug.setLogPostPacketTransform(!debug.logPostPacketTransform()); sendMessage(sender, "&6Post transform packet logging is now %s", (debug.logPostPacketTransform() ? "&aenabled" : "&cdisabled")); diff --git a/common/src/main/java/com/viaversion/viaversion/debug/DebugHandlerImpl.java b/common/src/main/java/com/viaversion/viaversion/debug/DebugHandlerImpl.java index e29dc90e1..de4c42a08 100644 --- a/common/src/main/java/com/viaversion/viaversion/debug/DebugHandlerImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/debug/DebugHandlerImpl.java @@ -31,6 +31,7 @@ public final class DebugHandlerImpl implements DebugHandler { private final Set packetTypesToLog = new HashSet<>(); private final IntSet clientboundPacketIdsToLog = new IntOpenHashSet(); private final IntSet serverboundPacketIdsToLog = new IntOpenHashSet(); + private boolean logPrePacketTransform = true; private boolean logPostPacketTransform; private boolean enabled; @@ -64,6 +65,16 @@ public final class DebugHandlerImpl implements DebugHandler { packetTypesToLog.clear(); } + @Override + public boolean logPrePacketTransform() { + return logPrePacketTransform; + } + + @Override + public void setLogPrePacketTransform(final boolean logPrePacketTransform) { + this.logPrePacketTransform = logPrePacketTransform; + } + @Override public boolean logPostPacketTransform() { return logPostPacketTransform; diff --git a/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolPipelineImpl.java b/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolPipelineImpl.java index 626d3dd4c..8f3d66ee3 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolPipelineImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolPipelineImpl.java @@ -114,8 +114,8 @@ public class ProtocolPipelineImpl extends AbstractSimpleProtocol implements Prot DebugHandler debugHandler = Via.getManager().debugHandler(); boolean debug = debugHandler.enabled(); - if (debug && !debugHandler.logPostPacketTransform() && debugHandler.shouldLog(packetWrapper, direction)) { - logPacket(direction, state, packetWrapper, originalID); + if (debug && debugHandler.logPrePacketTransform() && debugHandler.shouldLog(packetWrapper, direction)) { + logPacket(direction, state, packetWrapper, originalID, false); } // Apply protocols @@ -123,7 +123,7 @@ public class ProtocolPipelineImpl extends AbstractSimpleProtocol implements Prot super.transform(direction, state, packetWrapper); if (debug && debugHandler.logPostPacketTransform() && debugHandler.shouldLog(packetWrapper, direction)) { - logPacket(direction, state, packetWrapper, originalID); + logPacket(direction, state, packetWrapper, originalID, true); } } @@ -131,12 +131,13 @@ public class ProtocolPipelineImpl extends AbstractSimpleProtocol implements Prot return direction == Direction.SERVERBOUND ? protocolList : reversedProtocolList; } - private void logPacket(Direction direction, State state, PacketWrapper packetWrapper, int originalID) { + private void logPacket(Direction direction, State state, PacketWrapper packetWrapper, int originalID, boolean post) { ProtocolInfo protocolInfo = userConnection.getProtocolInfo(); String actualUsername = protocolInfo.getUsername(); String username = actualUsername != null ? actualUsername + " " : ""; - Via.getPlatform().getLogger().log(Level.INFO, "{0}{1} {2}: {3} ({4}) -> {5} ({6}) [{7}] {8}", + Via.getPlatform().getLogger().log(Level.INFO, "{0}: {1}{2} {3}: {4} ({5}) -> {6} ({7}) [{8}] {9}", new Object[]{ + post ? "Post" : "Pre", username, direction, state, diff --git a/velocity/src/main/java/com/viaversion/viaversion/velocity/storage/VelocityStorage.java b/velocity/src/main/java/com/viaversion/viaversion/velocity/storage/VelocityStorage.java index e37da8990..ac6e19132 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/velocity/storage/VelocityStorage.java +++ b/velocity/src/main/java/com/viaversion/viaversion/velocity/storage/VelocityStorage.java @@ -24,13 +24,11 @@ import com.viaversion.viaversion.util.ReflectionUtil; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.List; -import java.util.Objects; import java.util.UUID; import java.util.logging.Level; public class VelocityStorage implements StorableObject { private final Player player; - private String currentServer; private List cachedBossbar; private static Method getServerBossBars; private static Class clientPlaySessionHandler; @@ -50,7 +48,6 @@ public class VelocityStorage implements StorableObject { public VelocityStorage(Player player) { this.player = player; - this.currentServer = ""; } public List getBossbar() { @@ -71,38 +68,4 @@ public class VelocityStorage implements StorableObject { } return cachedBossbar; } - - public Player getPlayer() { - return player; - } - - public String getCurrentServer() { - return currentServer; - } - - public void setCurrentServer(final String currentServer) { - this.currentServer = currentServer; - } - - public List getCachedBossbar() { - return cachedBossbar; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - VelocityStorage that = (VelocityStorage) o; - if (!Objects.equals(player, that.player)) return false; - if (!Objects.equals(currentServer, that.currentServer)) return false; - return Objects.equals(cachedBossbar, that.cachedBossbar); - } - - @Override - public int hashCode() { - int result = player != null ? player.hashCode() : 0; - result = 31 * result + (currentServer != null ? currentServer.hashCode() : 0); - result = 31 * result + (cachedBossbar != null ? cachedBossbar.hashCode() : 0); - return result; - } }