Add DebugHandler#logPrePacketTransform/setLogPacketTransform (#4386)

This commit is contained in:
FlorianMichael 2025-02-16 13:55:20 +01:00 committed by GitHub
parent 764861e29b
commit a764cec4a9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 46 additions and 50 deletions

View File

@ -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) {

View File

@ -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"));

View File

@ -31,6 +31,7 @@ public final class DebugHandlerImpl implements DebugHandler {
private final Set<String> 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;

View File

@ -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,

View File

@ -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<UUID> 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<UUID> 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<UUID> 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;
}
}