diff --git a/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/LastSeenMessages.java b/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/LastSeenMessages.java index eb89601f..dea8e3e1 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/LastSeenMessages.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/LastSeenMessages.java @@ -44,4 +44,8 @@ public class LastSeenMessages { ProtocolUtils.writeVarInt(buf, offset); buf.writeBytes(Arrays.copyOf(acknowledged.toByteArray(), DIV_FLOOR)); } + + public boolean isEmpty() { + return acknowledged.isEmpty(); + } } diff --git a/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/legacy/LegacyCommandHandler.java b/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/legacy/LegacyCommandHandler.java index c15d11c5..e8c8be6c 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/legacy/LegacyCommandHandler.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/legacy/LegacyCommandHandler.java @@ -43,7 +43,7 @@ public class LegacyCommandHandler implements CommandHandler { String command = packet.getMessage().substring(1); queueCommandResult(this.server, this.player, event -> { CommandExecuteEvent.CommandResult result = event.getResult(); - if (!result.isAllowed()) { + if (result == CommandExecuteEvent.CommandResult.denied()) { return CompletableFuture.completedFuture(null); } String commandToRun = result.getCommand().orElse(command); diff --git a/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/session/SessionCommandHandler.java b/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/session/SessionCommandHandler.java index 4ed20768..451507f8 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/session/SessionCommandHandler.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/session/SessionCommandHandler.java @@ -42,8 +42,8 @@ public class SessionCommandHandler implements CommandHandler { CommandExecuteEvent.CommandResult result = event.getResult(); - if (!result.isAllowed()) { - if (!packet.argumentSignatures.isEmpty()) { + if (result == CommandExecuteEvent.CommandResult.denied()) { + if (packet.isSigned()) { logger.fatal("A plugin tried to deny a command with signable component(s). " + "This is not supported. " + "Disconnecting player " + player.getUsername()); player.disconnect(Component.text( @@ -54,10 +54,10 @@ public class SessionCommandHandler implements CommandHandler { if (!hasRun) { - if (!packet.argumentSignatures.isEmpty() && commandToRun.equals(packet.command)) { + if (packet.isSigned() && commandToRun.equals(packet.command)) { return packet; } else { - if (!packet.argumentSignatures.isEmpty()) { + if (packet.isSigned()) { logger.fatal("A plugin tried to change a command with signed component(s). " + "This is not supported. " + "Disconnecting player " + player.getUsername()); player.disconnect(Component.text( diff --git a/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/session/SessionPlayerCommand.java b/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/session/SessionPlayerCommand.java index 81c6d8b4..a940d43c 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/session/SessionPlayerCommand.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/protocol/packet/chat/session/SessionPlayerCommand.java @@ -61,6 +61,10 @@ public class SessionPlayerCommand implements MinecraftPacket { return timeStamp; } + public boolean isSigned() { + return salt != 0 || !lastSeenMessages.isEmpty() || !argumentSignatures.isEmpty(); + } + @Override public boolean handle(MinecraftSessionHandler handler) { return handler.handle(this);