Skip to content

Commit 400155a

Browse files
committed
Wait for Velocity to patch their Brigadier bug 🤷‍
1 parent ef8053c commit 400155a

File tree

4 files changed

+29
-112
lines changed

4 files changed

+29
-112
lines changed

velocity/build.gradle

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ repositories {
44

55
dependencies {
66
implementation project(':common')
7-
implementation project(':brigadier')
87
compileOnly 'com.velocitypowered:velocity-api:3.0.0'
98
}
109

velocity/src/main/java/revxrsal/commands/velocity/core/DummyVelocityBrigadier.java

-54
This file was deleted.

velocity/src/main/java/revxrsal/commands/velocity/core/VelocityHandler.java

+19-47
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
11
package revxrsal.commands.velocity.core;
22

3-
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
4-
import com.mojang.brigadier.tree.ArgumentCommandNode;
5-
import com.mojang.brigadier.tree.CommandNode;
6-
import com.mojang.brigadier.tree.LiteralCommandNode;
73
import com.velocitypowered.api.command.Command;
84
import com.velocitypowered.api.command.CommandMeta;
9-
import com.velocitypowered.api.command.CommandSource;
105
import com.velocitypowered.api.plugin.PluginContainer;
116
import com.velocitypowered.api.proxy.Player;
127
import com.velocitypowered.api.proxy.ProxyServer;
13-
import lombok.SneakyThrows;
148
import org.jetbrains.annotations.NotNull;
159
import org.jetbrains.annotations.Nullable;
1610
import revxrsal.commands.CommandHandler;
@@ -25,19 +19,15 @@
2519
import revxrsal.commands.velocity.exception.InvalidPlayerException;
2620
import revxrsal.commands.velocity.exception.VelocityExceptionAdapter;
2721

28-
import java.lang.reflect.Field;
29-
import java.util.Map;
3022
import java.util.Optional;
3123

32-
import static com.mojang.brigadier.builder.LiteralArgumentBuilder.literal;
33-
import static revxrsal.commands.brigadier.BrigadierTreeParser.parse;
3424
import static revxrsal.commands.util.Preconditions.notNull;
3525

3626
public final class VelocityHandler extends BaseCommandHandler implements VelocityCommandHandler {
3727

3828
private final ProxyServer server;
3929
@SuppressWarnings("OptionalUsedAsFieldOrParameterType") private final Optional<PluginContainer> plugin;
40-
private final DummyVelocityBrigadier brigadier = new DummyVelocityBrigadier(this);
30+
// private final DummyVelocityBrigadier brigadier = new DummyVelocityBrigadier(this);
4131

4232
public VelocityHandler(@Nullable Object plugin, @NotNull ProxyServer server) {
4333
super();
@@ -81,33 +71,33 @@ private void createPluginCommand(Object commandComponent) {
8171
Command command = new VelocitySimpleCommand(this);
8272
if (commandComponent instanceof CommandCategory) {
8373
CommandCategory category = ((CommandCategory) commandComponent);
84-
LiteralArgumentBuilder<CommandSource> builder = parse(brigadier, literal(category.getName()), category);
85-
registerNode(command, parse(brigadier, literal(category.getName()), category));
74+
// registerNode(command, parse(brigadier, literal(category.getName()), category));
75+
registerNode(category.getName(), command);
8676
if (getNamespace() != null)
87-
registerNode(command, parse(brigadier, literal(getNamespace() + ":" + category.getName()), category));
88-
// registerNode(category.getName(), command);
77+
// registerNode(command, parse(brigadier, literal(getNamespace() + ":" + category.getName()), category));
78+
registerNode(getNamespace() + ":" + category.getName(), command);
8979
} else if (commandComponent instanceof ExecutableCommand) {
9080
ExecutableCommand executable = ((ExecutableCommand) commandComponent);
91-
LiteralArgumentBuilder<CommandSource> builder = parse(brigadier, literal(executable.getName()), executable);
92-
registerNode(command, parse(brigadier, literal(executable.getName()), executable));
81+
// registerNode(command, parse(brigadier, literal(executable.getName()), executable));
82+
registerNode(executable.getName(), command);
9383
if (getNamespace() != null)
94-
registerNode(command, parse(brigadier, literal(getNamespace() + ":" + executable.getName()), executable));
95-
// registerNode(executable.getName(), command);
84+
// registerNode(command, parse(brigadier, literal(getNamespace() + ":" + executable.getName()), executable));
85+
registerNode(getNamespace() + ":" + executable.getName(), command);
9686
}
9787
}
9888

99-
private void registerNode(Command command, LiteralArgumentBuilder<CommandSource> builder) {
100-
CommandMeta.Builder metaBuilder = metaBuilder(builder.getLiteral());
101-
LiteralCommandNode<CommandSource> node = builder.build();
102-
node.getChildren().forEach(metaBuilder::hint);
103-
getArguments(node).values().forEach(metaBuilder::hint);
104-
server.getCommandManager().register(metaBuilder.build(), command);
105-
}
106-
107-
// private void registerNode(String alias, Command command) {
108-
// server.getCommandManager().register(alias, command);
89+
// private void registerNode(Command command, LiteralArgumentBuilder<CommandSource> builder) {
90+
// CommandMeta.Builder metaBuilder = metaBuilder(builder.getLiteral());
91+
// LiteralCommandNode<CommandSource> node = builder.build();
92+
// node.getChildren().forEach(metaBuilder::hint);
93+
// getArguments(node).values().forEach(metaBuilder::hint);
94+
// server.getCommandManager().register(metaBuilder.build(), command);
10995
// }
11096

97+
private void registerNode(String alias, Command command) {
98+
server.getCommandManager().register(alias, command);
99+
}
100+
111101
private @Nullable String getNamespace() {
112102
return plugin.map(p -> p.getDescription().getId()).orElse(null);
113103
}
@@ -120,22 +110,4 @@ private CommandMeta.Builder metaBuilder(String alias) {
120110
return server;
121111
}
122112

123-
private static final Field ARGUMENTS;
124-
125-
static {
126-
Field arguments = null;
127-
try {
128-
arguments = CommandNode.class.getDeclaredField("arguments");
129-
arguments.setAccessible(true);
130-
} catch (Throwable e) {
131-
e.printStackTrace();
132-
}
133-
ARGUMENTS = arguments;
134-
}
135-
136-
@SneakyThrows
137-
private static <S> Map<String, ArgumentCommandNode<S, ?>> getArguments(CommandNode<S> node) {
138-
return (Map<String, ArgumentCommandNode<S, ?>>) ARGUMENTS.get(node);
139-
}
140-
141113
}

velocity/src/main/java/revxrsal/commands/velocity/core/VelocitySimpleCommand.java

+10-10
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ public VelocitySimpleCommand(VelocityHandler handler) {
2424
handler.dispatch(actor, arguments);
2525
}
2626

27-
// @Override public List<String> suggest(Invocation invocation) {
28-
// VelocityCommandActor actor = new VelocityActor(invocation.source(), handler.getServer());
29-
// ArgumentStack arguments;
30-
// if (invocation.arguments().length == 0)
31-
// arguments = ArgumentStack.forAutoCompletion("");
32-
// else
33-
// arguments = ArgumentStack.forAutoCompletion(invocation.arguments());
34-
// arguments.addFirst(invocation.alias());
35-
// return handler.getAutoCompleter().complete(actor, arguments);
36-
// }
27+
@Override public List<String> suggest(Invocation invocation) {
28+
VelocityCommandActor actor = new VelocityActor(invocation.source(), handler.getServer());
29+
ArgumentStack arguments;
30+
if (invocation.arguments().length == 0)
31+
arguments = ArgumentStack.forAutoCompletion("");
32+
else
33+
arguments = ArgumentStack.forAutoCompletion(invocation.arguments());
34+
arguments.addFirst(invocation.alias());
35+
return handler.getAutoCompleter().complete(actor, arguments);
36+
}
3737
}

0 commit comments

Comments
 (0)