.
This commit is contained in:
parent
9aa138058c
commit
b234cd9df7
17 changed files with 51 additions and 56 deletions
37
.idea/workspace.xml
generated
37
.idea/workspace.xml
generated
|
|
@ -4,42 +4,26 @@
|
|||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="6414223f-1761-4683-97f5-9dab59d6c44a" name="Changes" comment=".">
|
||||
<change afterPath="$PROJECT_DIR$/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/AsyncTabCompleter.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/CommandHandler.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/node/RootCommandNode.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/platform/MessageStyle.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/platform/PlainMessageStyle.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/platform/SendMessageMethod.java" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/internal/RootCommandNodeImpl.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/vcs.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
|
||||
<list default="true" id="6414223f-1761-4683-97f5-9dab59d6c44a" name="Changes" comment="currently refactoring a lot.">
|
||||
<change afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/invocation/SyncCommandExecutor.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/build.gradle.kts" beforeDir="false" afterPath="$PROJECT_DIR$/build.gradle.kts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-bukkit/build.gradle.kts" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-bukkit/build.gradle.kts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/BukkitKenCommand.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/BukkitKenCommand.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/AsyncTabCompleter.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/TabCompleteListener.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/CommandAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/CommandAPI.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/suggestionprovider/PlayerSuggestionProvider.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/suggestionprovider/PlayerSuggestionProvider.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/type/OfflinePlayerArgumentType.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/type/OfflinePlayerArgumentType.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/type/PlayerArgumentType.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/type/PlayerArgumentType.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-core/build.gradle.kts" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-core/build.gradle.kts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/CommandNode.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/node/CommandNode.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/CommandHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/CommandHandler.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/invocation/CommandExecutor.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/invocation/CommandExecutor.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/invocation/Result.java" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/parser/ParseResult.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/parser/ParseResult.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/suggestion/NoSuggestionProvider.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/suggestion/NoSuggestionProvider.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/suggestion/SuggestionProvider.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/suggestion/SuggestionProvider.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/internal/CommandArgumentImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/internal/CommandArgumentImpl.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/internal/CommandNodeImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/internal/CommandNodeImpl.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/internal/parser/CommandParser.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/parser/CommandParser.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/internal/parser/ParseResult.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/parser/ParseResult.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/internal/parser/PermissionChecker.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/platform/HasPermissionMethod.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-velocity/src/main/java/de/kentoj/kencommandapi/CommandAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-velocity/src/main/java/de/kentoj/kencommandapi/CommandAPI.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-velocity/src/main/java/de/kentoj/kencommandapi/VelocityCommand.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-velocity/src/main/java/de/kentoj/kencommandapi/VelocityCommand.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-velocity/src/main/java/de/kentoj/kencommandapi/suggestionprovider/PlayerSuggestionProvider.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-velocity/src/main/java/de/kentoj/kencommandapi/suggestionprovider/PlayerSuggestionProvider.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/kencommandapi-velocity/src/main/java/de/kentoj/kencommandapi/type/PlayerArgumentType.java" beforeDir="false" afterPath="$PROJECT_DIR$/kencommandapi-velocity/src/main/java/de/kentoj/kencommandapi/type/PlayerArgumentType.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../build-logic/convention/build.gradle.kts" beforeDir="false" afterPath="$PROJECT_DIR$/../build-logic/convention/build.gradle.kts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../build-logic/convention/src/main/kotlin/de/kentoj/scrow/BaseDependenciesConvention.kt" beforeDir="false" afterPath="$PROJECT_DIR$/../build-logic/convention/src/main/kotlin/de/kentoj/scrow/BaseDependenciesConvention.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../build-logic/convention/src/main/kotlin/de/kentoj/scrow/ScrowRepositoryConvention.kt" beforeDir="false" afterPath="$PROJECT_DIR$/../build-logic/convention/src/main/kotlin/de/kentoj/scrow/ScrowRepositoryConvention.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../build-logic/settings.gradle.kts" beforeDir="false" afterPath="$PROJECT_DIR$/../build-logic/settings.gradle.kts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../build-logic/convention/src/main/kotlin/de/kentoj/scrow/DatabaseConvention.kt" beforeDir="false" afterPath="$PROJECT_DIR$/../build-logic/convention/src/main/kotlin/de/kentoj/scrow/DatabaseConvention.kt" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
|
@ -182,11 +166,11 @@
|
|||
<recent name="$PROJECT_DIR$/kencommandapi-core" />
|
||||
</key>
|
||||
<key name="CopyClassDialog.RECENTS_KEY">
|
||||
<recent name="de.kentoj.kencommandapi.api.invocation" />
|
||||
<recent name="de.kentoj.kencommandapi.internal" />
|
||||
<recent name="de.kentoj.kencommandapi.api" />
|
||||
<recent name="de.kentoj.kencommandapi.impl" />
|
||||
<recent name="de.kentoj.kencommandapi.api.structure.argument.types" />
|
||||
<recent name="de.kentoj.kencommandapi.type" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunAnythingCache">
|
||||
|
|
@ -195,7 +179,7 @@
|
|||
<command value="KenCommandAPI [publishAllPublicationsToScrowRepository]" />
|
||||
</option>
|
||||
</component>
|
||||
<component name="RunManager" selected="Gradle.KenCommandAPI [publishAllPublicationsToScrowRepository]">
|
||||
<component name="RunManager" selected="Gradle.KenCommandAPI [build]">
|
||||
<configuration name="KenCommandAPI [build]" type="GradleRunConfiguration" factoryName="Gradle" temporary="true">
|
||||
<ExternalSystemSettings>
|
||||
<option name="executionName" />
|
||||
|
|
@ -308,8 +292,8 @@
|
|||
</configuration>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Gradle.KenCommandAPI [publishAllPublicationsToScrowRepository]" />
|
||||
<item itemvalue="Gradle.KenCommandAPI [build]" />
|
||||
<item itemvalue="Gradle.KenCommandAPI [publishAllPublicationsToScrowRepository]" />
|
||||
<item itemvalue="Gradle.KenCommandAPI [clean]" />
|
||||
<item itemvalue="Gradle.KenCommandAPI:kencommandapi-velocity [publish]" />
|
||||
<item itemvalue="Gradle.KenCommandAPI [publish]" />
|
||||
|
|
@ -572,6 +556,7 @@
|
|||
<MESSAGE value="add TODO" />
|
||||
<MESSAGE value="make SuggestionProvider use CompletableFuture" />
|
||||
<MESSAGE value="." />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="." />
|
||||
<MESSAGE value="currently refactoring a lot." />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="currently refactoring a lot." />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
group = "de.kentoj.scrow"
|
||||
version = "0.21"
|
||||
version = "0.28"
|
||||
|
||||
subprojects {
|
||||
group = rootProject.group
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ repositories {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
api(project(":kencommandapi-core"))
|
||||
compileOnly(project(":kencommandapi-core"))
|
||||
compileOnly("io.papermc.paper:paper-api:1.21.11-rc3-R0.1-SNAPSHOT")
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ public class CommandAPI {
|
|||
public CommandAPI(Plugin plugin) {
|
||||
this.commandHandler = new CommandHandler<>(new CommandParser<>(Permissible::hasPermission),
|
||||
CommandSender::sendMessage, Permissible::hasPermission);
|
||||
Bukkit.getPluginManager().registerEvents(new AsyncTabCompleter(this, commandHandler), plugin);
|
||||
Bukkit.getPluginManager().registerEvents(new TabCompleteListener(this, commandHandler), plugin);
|
||||
|
||||
try {
|
||||
Field field = Bukkit.getPluginManager().getClass().getDeclaredField("commandMap");
|
||||
|
|
|
|||
|
|
@ -8,18 +8,20 @@ import org.bukkit.event.EventHandler;
|
|||
import org.bukkit.event.Listener;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class AsyncTabCompleter implements Listener {
|
||||
public class TabCompleteListener implements Listener {
|
||||
|
||||
private final CommandAPI commandAPI;
|
||||
private final CommandHandler<CommandSender> commandHandler;
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onAsyncTabComplete(AsyncTabCompleteEvent ev) {
|
||||
if (!ev.isCommand()) return;
|
||||
|
||||
var args = ev.getBuffer().split(" ");
|
||||
var label = args[0];
|
||||
var rootNode = commandAPI.getRegistered(label);
|
||||
if (rootNode == null) return;
|
||||
commandHandler.getSuggestions(rootNode, ev.getSender(), args)
|
||||
.thenAccept(ev::setCompletions);
|
||||
ev.setHandled(true);
|
||||
ev.setCompletions(commandHandler.getSuggestions(rootNode, ev.getSender(), args));
|
||||
}
|
||||
}
|
||||
|
|
@ -6,14 +6,12 @@ import org.bukkit.command.CommandSender;
|
|||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class PlayerSuggestionProvider implements SuggestionProvider<CommandSender> {
|
||||
@Override
|
||||
public CompletableFuture<List<String>> suggest(CommandSender __) {
|
||||
var list = Bukkit.getOnlinePlayers().stream()
|
||||
public List<String> suggest(CommandSender __) {
|
||||
return Bukkit.getOnlinePlayers().stream()
|
||||
.map(Player::getName)
|
||||
.toList();
|
||||
return CompletableFuture.completedFuture(list);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ repositories {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
api("net.kyori:adventure-api:5.2.0")
|
||||
compileOnly("net.kyori:adventure-api:5.2.0")
|
||||
}
|
||||
|
||||
publishing {
|
||||
|
|
|
|||
|
|
@ -31,16 +31,14 @@ public class CommandHandler<T> {
|
|||
var ctx = new CommandContext<>(sender, ((ParseResult.Success<T>) parseResult).getParsedArguments());
|
||||
assert parseResult.getLiteral().getExecutor() != null;
|
||||
parseResult.getLiteral().getExecutor().execute(ctx).whenComplete((result, ex) -> {
|
||||
if (ex != null) {
|
||||
if (ex != null)
|
||||
sendMessageMethod.send(sender, rootNode.getMessageStyle().exception(ex));
|
||||
}
|
||||
result.ifFailure(failure ->
|
||||
sendMessageMethod.send(sender, rootNode.getMessageStyle().err(failure))
|
||||
);
|
||||
sendMessageMethod.send(sender, rootNode.getMessageStyle().err(failure)));
|
||||
});
|
||||
}
|
||||
|
||||
public CompletableFuture<List<String>> getSuggestions(RootCommandNode<T> rootNode, T sender, String[] args) {
|
||||
public List<String> getSuggestions(RootCommandNode<T> rootNode, T sender, String[] args) {
|
||||
var parseResult = commandParser.parseLiteral(rootNode, sender, args, false);
|
||||
|
||||
if (parseResult instanceof ParseResult.ArgumentExpected<T>) {
|
||||
|
|
@ -56,7 +54,7 @@ public class CommandHandler<T> {
|
|||
return getSuggestions(sender, parseResult.getLiteral(), filter);
|
||||
}
|
||||
|
||||
private CompletableFuture<List<String>> getSuggestions(T sender, CommandNode<T> literal, @Nullable String filter) {
|
||||
private List<String> getSuggestions(T sender, CommandNode<T> literal, @Nullable String filter) {
|
||||
var stream = literal.getLiterals().stream()
|
||||
.filter(lit -> lit.getPermission() != null && hasPermissionMethod.hasPermission(sender, lit.getPermission()))
|
||||
.map(CommandNode::getNames)
|
||||
|
|
@ -64,6 +62,6 @@ public class CommandHandler<T> {
|
|||
if (filter != null)
|
||||
stream = stream.filter(f -> f.toLowerCase().contains(filter.toLowerCase()));
|
||||
|
||||
return CompletableFuture.completedFuture(stream.toList());
|
||||
return stream.toList();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,5 +6,5 @@ import java.util.concurrent.CompletableFuture;
|
|||
|
||||
public interface CommandExecutor<T> {
|
||||
|
||||
CompletableFuture<Result<Void, String>> execute(CommandContext<T> ctx);
|
||||
CompletableFuture<Result<Object, String>> execute(CommandContext<T> ctx);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
package de.kentoj.kencommandapi.api.invocation;
|
||||
|
||||
import com.leakyabstractions.result.api.Result;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface SyncCommandExecutor<T> extends CommandExecutor<T> {
|
||||
|
||||
Result<Object, String> executeSync(CommandContext<T> ctx);
|
||||
|
||||
default CompletableFuture<Result<Object, String>> execute(CommandContext<T> ctx) {
|
||||
return CompletableFuture.completedFuture(this.executeSync(ctx));
|
||||
}
|
||||
}
|
||||
|
|
@ -108,7 +108,7 @@ public abstract sealed class ParseResult<T> permits ParseResult.IllegalArgument,
|
|||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return "Illegal argument '" + argStr + "' for " + argument.getId() + ":" + message;
|
||||
return "Illegal argument '" + argStr + "' for " + argument.getId() + ": " + message;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
public class NoSuggestionProvider<T> implements SuggestionProvider<T> {
|
||||
|
||||
@Override
|
||||
public CompletableFuture<List<String>> suggest(T __) {
|
||||
return CompletableFuture.completedFuture(Collections.emptyList());
|
||||
public List<String> suggest(T __) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,5 +8,5 @@ public interface SuggestionProvider<T> {
|
|||
/**
|
||||
* @return an unfiltered(no permission checks or filtering by input) list of strings that may be used for the argument
|
||||
*/
|
||||
CompletableFuture<List<String>> suggest(T sender);
|
||||
List<String> suggest(T sender);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ public class CommandNodeImpl<T> implements CommandNode<T> {
|
|||
if (isGreedy()) throw new IllegalStateException("can't add literal to a node with a greedy argument");
|
||||
for (String name : commandNode.getNames())
|
||||
if (getLiteral(name) != null)
|
||||
throw new IllegalArgumentException("literal with same name is already exists");
|
||||
throw new IllegalArgumentException("literal with same name already exists");
|
||||
literals.add(commandNode);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ public class CommandAPI {
|
|||
public void register(RootCommandNode<CommandSource> rootNode) {
|
||||
var cm = server.getCommandManager();
|
||||
var meta = cm.metaBuilder(rootNode.getNames()[0])
|
||||
.aliases(Arrays.copyOfRange(rootNode.getNames(), 1, rootNode.getNames().length - 1))
|
||||
.aliases(Arrays.copyOfRange(rootNode.getNames(), 1, rootNode.getNames().length))
|
||||
.build();
|
||||
cm.register(meta, new VelocityCommand(commandHandler, rootNode));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import de.kentoj.kencommandapi.api.node.RootCommandNode;
|
|||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class VelocityCommand implements SimpleCommand {
|
||||
|
|
@ -27,7 +26,7 @@ public class VelocityCommand implements SimpleCommand {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<List<String>> suggestAsync(Invocation invocation) {
|
||||
public List<String> suggest(Invocation invocation) {
|
||||
return commandHandler.getSuggestions(rootNode, invocation.source(), invocation.arguments());
|
||||
}
|
||||
}
|
||||
|
|
@ -15,10 +15,9 @@ public class PlayerSuggestionProvider implements SuggestionProvider<CommandSourc
|
|||
private final ProxyServer proxyServer;
|
||||
|
||||
@Override
|
||||
public CompletableFuture<List<String>> suggest(CommandSource __) {
|
||||
var list = proxyServer.getAllPlayers().stream()
|
||||
public List<String> suggest(CommandSource __) {
|
||||
return proxyServer.getAllPlayers().stream()
|
||||
.map(Player::getUsername)
|
||||
.toList();
|
||||
return CompletableFuture.completedFuture(list);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue