3
0
Mirror von https://github.com/PaperMC/Velocity.git synchronisiert 2024-12-24 15:20:35 +01:00

Fix tab completions not being forwarded to backend if proxy command exists but is inaccessible (#1329)

Dieser Commit ist enthalten in:
Gero 2024-05-26 14:19:37 +02:00 committet von GitHub
Ursprung 71bb0246a8
Commit 42d4288334
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: B5690EEEBB952194
3 geänderte Dateien mit 25 neuen und 2 gelöschten Zeilen

Datei anzeigen

@ -10,6 +10,7 @@ package com.velocitypowered.api.command;
import com.velocitypowered.api.event.command.CommandExecuteEvent;
import java.util.Collection;
import java.util.concurrent.CompletableFuture;
import java.util.function.Predicate;
import org.checkerframework.checker.nullness.qual.Nullable;
/**
@ -126,4 +127,15 @@ public interface CommandManager {
* @return true if the alias is registered; false otherwise
*/
boolean hasCommand(String alias);
/**
* Returns whether the given alias is registered on this manager
* and can be used by the given {@link CommandSource}.
* See {@link com.mojang.brigadier.builder.ArgumentBuilder#requires(Predicate)}
*
* @param alias the command alias to check
* @param source the command source
* @return true if the alias is registered and usable; false otherwise
*/
boolean hasCommand(String alias, CommandSource source);
}

Datei anzeigen

@ -347,8 +347,19 @@ public class VelocityCommandManager implements CommandManager {
@Override
public boolean hasCommand(final String alias) {
return getCommand(alias) != null;
}
@Override
public boolean hasCommand(String alias, CommandSource source) {
Preconditions.checkNotNull(source, "source");
CommandNode<CommandSource> command = getCommand(alias);
return command != null && command.canUse(source);
}
CommandNode<CommandSource> getCommand(final String alias) {
Preconditions.checkNotNull(alias, "alias");
return dispatcher.getRoot().getChild(alias.toLowerCase(Locale.ENGLISH)) != null;
return dispatcher.getRoot().getChild(alias.toLowerCase(Locale.ENGLISH));
}
@VisibleForTesting // this constitutes unsafe publication

Datei anzeigen

@ -630,7 +630,7 @@ public class ClientPlaySessionHandler implements MinecraftSessionHandler {
}
String commandLabel = command.substring(0, commandEndPosition);
if (!server.getCommandManager().hasCommand(commandLabel)) {
if (!server.getCommandManager().hasCommand(commandLabel, player)) {
if (player.getProtocolVersion().lessThan(ProtocolVersion.MINECRAFT_1_13)) {
// Outstanding tab completes are recorded for use with 1.12 clients and below to provide
// additional tab completion support.