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:
Ursprung
71bb0246a8
Commit
42d4288334
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren