diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 9b895f6..437d766 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,42 +4,26 @@
-
-
-
-
-
-
-
-
-
+
+
-
+
-
-
-
+
-
+
-
-
-
-
-
-
-
-
+
@@ -182,11 +166,11 @@
+
-
@@ -195,7 +179,7 @@
-
+
@@ -308,8 +292,8 @@
-
+
@@ -572,6 +556,7 @@
-
+
+
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 72a06af..c48341d 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,5 +1,5 @@
group = "de.kentoj.scrow"
-version = "0.21"
+version = "0.28"
subprojects {
group = rootProject.group
diff --git a/kencommandapi-bukkit/build.gradle.kts b/kencommandapi-bukkit/build.gradle.kts
index 69c09dd..7897e3c 100644
--- a/kencommandapi-bukkit/build.gradle.kts
+++ b/kencommandapi-bukkit/build.gradle.kts
@@ -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")
}
diff --git a/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/CommandAPI.java b/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/CommandAPI.java
index 2671fa2..97f8033 100644
--- a/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/CommandAPI.java
+++ b/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/CommandAPI.java
@@ -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");
diff --git a/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/AsyncTabCompleter.java b/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/TabCompleteListener.java
similarity index 77%
rename from kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/AsyncTabCompleter.java
rename to kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/TabCompleteListener.java
index 3c48bcc..6935201 100644
--- a/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/AsyncTabCompleter.java
+++ b/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/TabCompleteListener.java
@@ -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 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));
}
}
diff --git a/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/suggestionprovider/PlayerSuggestionProvider.java b/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/suggestionprovider/PlayerSuggestionProvider.java
index e62c81f..3db53a4 100644
--- a/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/suggestionprovider/PlayerSuggestionProvider.java
+++ b/kencommandapi-bukkit/src/main/java/de/kentoj/kencommandapi/suggestionprovider/PlayerSuggestionProvider.java
@@ -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 {
@Override
- public CompletableFuture> suggest(CommandSender __) {
- var list = Bukkit.getOnlinePlayers().stream()
+ public List suggest(CommandSender __) {
+ return Bukkit.getOnlinePlayers().stream()
.map(Player::getName)
.toList();
- return CompletableFuture.completedFuture(list);
}
}
diff --git a/kencommandapi-core/build.gradle.kts b/kencommandapi-core/build.gradle.kts
index 0a2ac13..cd1f43c 100644
--- a/kencommandapi-core/build.gradle.kts
+++ b/kencommandapi-core/build.gradle.kts
@@ -11,7 +11,7 @@ repositories {
}
dependencies {
- api("net.kyori:adventure-api:5.2.0")
+ compileOnly("net.kyori:adventure-api:5.2.0")
}
publishing {
diff --git a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/CommandHandler.java b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/CommandHandler.java
index 6f810aa..960a587 100644
--- a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/CommandHandler.java
+++ b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/CommandHandler.java
@@ -31,16 +31,14 @@ public class CommandHandler {
var ctx = new CommandContext<>(sender, ((ParseResult.Success) 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> getSuggestions(RootCommandNode rootNode, T sender, String[] args) {
+ public List getSuggestions(RootCommandNode rootNode, T sender, String[] args) {
var parseResult = commandParser.parseLiteral(rootNode, sender, args, false);
if (parseResult instanceof ParseResult.ArgumentExpected) {
@@ -56,7 +54,7 @@ public class CommandHandler {
return getSuggestions(sender, parseResult.getLiteral(), filter);
}
- private CompletableFuture> getSuggestions(T sender, CommandNode literal, @Nullable String filter) {
+ private List getSuggestions(T sender, CommandNode 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 {
if (filter != null)
stream = stream.filter(f -> f.toLowerCase().contains(filter.toLowerCase()));
- return CompletableFuture.completedFuture(stream.toList());
+ return stream.toList();
}
}
diff --git a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/invocation/CommandExecutor.java b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/invocation/CommandExecutor.java
index ad4e900..eaef027 100644
--- a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/invocation/CommandExecutor.java
+++ b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/invocation/CommandExecutor.java
@@ -6,5 +6,5 @@ import java.util.concurrent.CompletableFuture;
public interface CommandExecutor {
- CompletableFuture> execute(CommandContext ctx);
+ CompletableFuture> execute(CommandContext ctx);
}
diff --git a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/invocation/SyncCommandExecutor.java b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/invocation/SyncCommandExecutor.java
new file mode 100644
index 0000000..67d09c3
--- /dev/null
+++ b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/invocation/SyncCommandExecutor.java
@@ -0,0 +1,14 @@
+package de.kentoj.kencommandapi.api.invocation;
+
+import com.leakyabstractions.result.api.Result;
+
+import java.util.concurrent.CompletableFuture;
+
+public interface SyncCommandExecutor extends CommandExecutor {
+
+ Result