geforkt von Mirrors/Velocity
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 com.velocitypowered.api.event.command.CommandExecuteEvent;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.function.Predicate;
|
||||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -126,4 +127,15 @@ public interface CommandManager {
|
|||||||
* @return true if the alias is registered; false otherwise
|
* @return true if the alias is registered; false otherwise
|
||||||
*/
|
*/
|
||||||
boolean hasCommand(String alias);
|
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
|
@Override
|
||||||
public boolean hasCommand(final String alias) {
|
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");
|
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
|
@VisibleForTesting // this constitutes unsafe publication
|
||||||
|
@ -630,7 +630,7 @@ public class ClientPlaySessionHandler implements MinecraftSessionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String commandLabel = command.substring(0, commandEndPosition);
|
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)) {
|
if (player.getProtocolVersion().lessThan(ProtocolVersion.MINECRAFT_1_13)) {
|
||||||
// Outstanding tab completes are recorded for use with 1.12 clients and below to provide
|
// Outstanding tab completes are recorded for use with 1.12 clients and below to provide
|
||||||
// additional tab completion support.
|
// additional tab completion support.
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren