Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-11-08 17:20:24 +01:00
Update DebugHandler
Dieser Commit ist enthalten in:
Ursprung
80a807e366
Commit
90feac8c83
@ -22,8 +22,12 @@
|
|||||||
*/
|
*/
|
||||||
package com.viaversion.viaversion.api.debug;
|
package com.viaversion.viaversion.api.debug;
|
||||||
|
|
||||||
|
import com.google.common.annotations.Beta;
|
||||||
|
import com.viaversion.viaversion.api.protocol.packet.Direction;
|
||||||
|
import com.viaversion.viaversion.api.protocol.packet.PacketType;
|
||||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||||
|
|
||||||
|
@Beta
|
||||||
public interface DebugHandler {
|
public interface DebugHandler {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -47,6 +51,14 @@ public interface DebugHandler {
|
|||||||
*/
|
*/
|
||||||
void addPacketTypeNameToLog(String packetTypeName);
|
void addPacketTypeNameToLog(String packetTypeName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a packet id to the list of packet types to log.
|
||||||
|
* Packets will be checked on each protocol transformer, so this is best used on single protocol pipes.
|
||||||
|
*
|
||||||
|
* @param packetType packet type
|
||||||
|
*/
|
||||||
|
void addPacketTypeToLog(PacketType packetType);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a packet type name from the list of packet types to log.
|
* Removes a packet type name from the list of packet types to log.
|
||||||
*
|
*
|
||||||
@ -79,7 +91,15 @@ public interface DebugHandler {
|
|||||||
* If no specific packet type has been added, all packet types will be logged.
|
* If no specific packet type has been added, all packet types will be logged.
|
||||||
*
|
*
|
||||||
* @param wrapper packet wrapper
|
* @param wrapper packet wrapper
|
||||||
|
* @param direction packet direction
|
||||||
* @return whether the packet should be logged
|
* @return whether the packet should be logged
|
||||||
*/
|
*/
|
||||||
boolean shouldLog(PacketWrapper wrapper);
|
boolean shouldLog(PacketWrapper wrapper, Direction direction);
|
||||||
|
|
||||||
|
default void enableAndLogIds(final PacketType... packetTypes) {
|
||||||
|
setEnabled(true);
|
||||||
|
for (final PacketType packetType : packetTypes) {
|
||||||
|
addPacketTypeToLog(packetType);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -351,7 +351,7 @@ public abstract class AbstractProtocol<C1 extends ClientboundPacketType, C2 exte
|
|||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String toNiceHex(int id) {
|
public static String toNiceHex(int id) {
|
||||||
String hex = Integer.toHexString(id).toUpperCase();
|
String hex = Integer.toHexString(id).toUpperCase();
|
||||||
return (hex.length() == 1 ? "0x0" : "0x") + hex;
|
return (hex.length() == 1 ? "0x0" : "0x") + hex;
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,11 @@
|
|||||||
package com.viaversion.viaversion.debug;
|
package com.viaversion.viaversion.debug;
|
||||||
|
|
||||||
import com.viaversion.viaversion.api.debug.DebugHandler;
|
import com.viaversion.viaversion.api.debug.DebugHandler;
|
||||||
|
import com.viaversion.viaversion.api.protocol.packet.Direction;
|
||||||
|
import com.viaversion.viaversion.api.protocol.packet.PacketType;
|
||||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||||
|
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
|
||||||
|
import it.unimi.dsi.fastutil.ints.IntSet;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -26,7 +30,9 @@ import java.util.Set;
|
|||||||
public final class DebugHandlerImpl implements DebugHandler {
|
public final class DebugHandlerImpl implements DebugHandler {
|
||||||
|
|
||||||
private final Set<String> packetTypesToLog = new HashSet<>();
|
private final Set<String> packetTypesToLog = new HashSet<>();
|
||||||
private boolean logPostPacketTransform = true;
|
private final IntSet clientboundPacketIdsToLog = new IntOpenHashSet();
|
||||||
|
private final IntSet serverboundPacketIdsToLog = new IntOpenHashSet();
|
||||||
|
private boolean logPostPacketTransform;
|
||||||
private boolean enabled;
|
private boolean enabled;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -44,6 +50,11 @@ public final class DebugHandlerImpl implements DebugHandler {
|
|||||||
packetTypesToLog.add(packetTypeName);
|
packetTypesToLog.add(packetTypeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addPacketTypeToLog(PacketType packetType) {
|
||||||
|
(packetType.direction() == Direction.SERVERBOUND ? serverboundPacketIdsToLog : clientboundPacketIdsToLog).add(packetType.getId());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean removePacketTypeNameToLog(final String packetTypeName) {
|
public boolean removePacketTypeNameToLog(final String packetTypeName) {
|
||||||
return packetTypesToLog.remove(packetTypeName);
|
return packetTypesToLog.remove(packetTypeName);
|
||||||
@ -65,7 +76,9 @@ public final class DebugHandlerImpl implements DebugHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldLog(final PacketWrapper wrapper) {
|
public boolean shouldLog(final PacketWrapper wrapper, final Direction direction) {
|
||||||
return packetTypesToLog.isEmpty() || (wrapper.getPacketType() != null && packetTypesToLog.contains(wrapper.getPacketType().getName()));
|
return packetTypesToLog.isEmpty() && serverboundPacketIdsToLog.isEmpty() && clientboundPacketIdsToLog.isEmpty()
|
||||||
|
|| (wrapper.getPacketType() != null && packetTypesToLog.contains(wrapper.getPacketType().getName()))
|
||||||
|
|| (direction == Direction.SERVERBOUND ? serverboundPacketIdsToLog : clientboundPacketIdsToLog).contains(wrapper.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,12 +114,16 @@ public class ProtocolPipelineImpl extends AbstractSimpleProtocol implements Prot
|
|||||||
public void transform(Direction direction, State state, PacketWrapper packetWrapper) throws Exception {
|
public void transform(Direction direction, State state, PacketWrapper packetWrapper) throws Exception {
|
||||||
int originalID = packetWrapper.getId();
|
int originalID = packetWrapper.getId();
|
||||||
|
|
||||||
|
DebugHandler debugHandler = Via.getManager().debugHandler();
|
||||||
|
if (debugHandler.enabled() && !debugHandler.logPostPacketTransform() && debugHandler.shouldLog(packetWrapper, direction)) {
|
||||||
|
logPacket(direction, state, packetWrapper, originalID);
|
||||||
|
}
|
||||||
|
|
||||||
// Apply protocols
|
// Apply protocols
|
||||||
packetWrapper.apply(direction, state, 0, protocolList, direction == Direction.CLIENTBOUND);
|
packetWrapper.apply(direction, state, 0, protocolList, direction == Direction.CLIENTBOUND);
|
||||||
super.transform(direction, state, packetWrapper);
|
super.transform(direction, state, packetWrapper);
|
||||||
|
|
||||||
DebugHandler debugHandler = Via.getManager().debugHandler();
|
if (debugHandler.enabled() && debugHandler.logPostPacketTransform() && debugHandler.shouldLog(packetWrapper, direction)) {
|
||||||
if (debugHandler.enabled() && debugHandler.logPostPacketTransform() && debugHandler.shouldLog(packetWrapper)) {
|
|
||||||
logPacket(direction, state, packetWrapper, originalID);
|
logPacket(direction, state, packetWrapper, originalID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -127,20 +131,20 @@ public class ProtocolPipelineImpl extends AbstractSimpleProtocol implements Prot
|
|||||||
private void logPacket(Direction direction, State state, PacketWrapper packetWrapper, int originalID) {
|
private void logPacket(Direction direction, State state, PacketWrapper packetWrapper, int originalID) {
|
||||||
// Debug packet
|
// Debug packet
|
||||||
int clientProtocol = userConnection.getProtocolInfo().getProtocolVersion();
|
int clientProtocol = userConnection.getProtocolInfo().getProtocolVersion();
|
||||||
ViaPlatform platform = Via.getPlatform();
|
ViaPlatform<?> platform = Via.getPlatform();
|
||||||
|
|
||||||
String actualUsername = packetWrapper.user().getProtocolInfo().getUsername();
|
String actualUsername = packetWrapper.user().getProtocolInfo().getUsername();
|
||||||
String username = actualUsername != null ? actualUsername + " " : "";
|
String username = actualUsername != null ? actualUsername + " " : "";
|
||||||
|
|
||||||
platform.getLogger().log(Level.INFO, "{0}{1} {2}: {3} (0x{4}) -> {5} (0x{6}) [{7}] {8}",
|
platform.getLogger().log(Level.INFO, "{0}{1} {2}: {3} ({4}) -> {5} ({6}) [{7}] {8}",
|
||||||
new Object[]{
|
new Object[]{
|
||||||
username,
|
username,
|
||||||
direction,
|
direction,
|
||||||
state,
|
state,
|
||||||
originalID,
|
originalID,
|
||||||
Integer.toHexString(originalID),
|
AbstractSimpleProtocol.toNiceHex(originalID),
|
||||||
packetWrapper.getId(),
|
packetWrapper.getId(),
|
||||||
Integer.toHexString(packetWrapper.getId()),
|
AbstractSimpleProtocol.toNiceHex(packetWrapper.getId()),
|
||||||
Integer.toString(clientProtocol),
|
Integer.toString(clientProtocol),
|
||||||
packetWrapper
|
packetWrapper
|
||||||
});
|
});
|
||||||
|
@ -488,10 +488,10 @@ public class PacketWrapperImpl implements PacketWrapper {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "PacketWrapper{" +
|
return "PacketWrapper{" +
|
||||||
"packetValues=" + packetValues +
|
"packetType=" + packetType +
|
||||||
", readableObjects=" + readableObjects +
|
|
||||||
", id=" + id +
|
", id=" + id +
|
||||||
", packetType=" + packetType +
|
", packetValues=" + packetValues +
|
||||||
|
", readableObjects=" + readableObjects +
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -58,9 +58,9 @@ public final class Chunk1_18Type extends Type<Chunk> {
|
|||||||
sections[i] = sectionType.read(sectionsBuf);
|
sections[i] = sectionType.read(sectionsBuf);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
if (sectionsBuf.readableBytes() > 0 && Via.getManager().isDebug()) {
|
/*if (sectionsBuf.readableBytes() > 0 && Via.getManager().isDebug()) {
|
||||||
Via.getPlatform().getLogger().warning("Found " + sectionsBuf.readableBytes() + " more bytes than expected while reading the chunk: " + chunkX + "/" + chunkZ);
|
Via.getPlatform().getLogger().warning("Found " + sectionsBuf.readableBytes() + " more bytes than expected while reading the chunk: " + chunkX + "/" + chunkZ);
|
||||||
}
|
}*/
|
||||||
sectionsBuf.release();
|
sectionsBuf.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren