diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index d9d1cd6..360226d 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,11 +5,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -48,6 +60,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -84,37 +109,38 @@
- {
- "keyToString": {
- "Gradle./home/a/src/kento2/KenCommandAPI/kencommandapi-core [:kencommandapi-core:de.kentoj.kencommandapi.Main.main()].executor": "Run",
- "Gradle./home/a/src/kento2/KenCommandAPI/kencommandapi-core [build].executor": "Run",
- "Gradle./home/a/src/kento2/KenCommandAPI/kencommandapi-core [publish].executor": "Run",
- "Gradle.Download Sources.executor": "Run",
- "Gradle.KenCommandAPI [:de.kencommand.Main.main()].executor": "Run",
- "Gradle.KenCommandAPI [assemble].executor": "Run",
- "Gradle.KenCommandAPI [build].executor": "Run",
- "Gradle.KenCommandAPI [clean].executor": "Run",
- "Gradle.KenCommandAPI [publishAllPublicationsToScrowRepository].executor": "Run",
- "Gradle.KenCommandAPI [publish].executor": "Run",
- "Gradle.KenCommandAPI:kencommandapi-bukkit [build].executor": "Run",
- "Gradle.KenCommandAPI:kencommandapi-bukkit [generatePomFileForKenCommandAPIBukkitPublication].executor": "Run",
- "Gradle.KenCommandAPI:kencommandapi-bukkit [publishAllPublicationsToScrowRepository].executor": "Run",
- "Gradle.KenCommandAPI:kencommandapi-bukkit [publish].executor": "Run",
- "Gradle.KenCommandAPI:kencommandapi-velocity [publish].executor": "Run",
- "Gradle.kencommandapi-core [build].executor": "Run",
- "ModuleVcsDetector.initialDetectionPerformed": "true",
- "RunOnceActivity.ShowReadmeOnStart": "true",
- "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
- "RunOnceActivity.git.unshallow": "true",
- "git-widget-placeholder": "master",
- "kotlin-language-version-configured": "true",
- "last_opened_file_path": "/home/a/src/scrow/KenCommandAPI/kencommandapi-core",
- "project.structure.last.edited": "Modules",
- "project.structure.proportion": "0.15",
- "project.structure.side.proportion": "0.6268199",
- "settings.editor.selected.configurable": "preferences.pluginManager"
+
+}]]>
@@ -143,9 +169,32 @@
-
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+ false
+ false
+
+
@@ -234,35 +283,13 @@
false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- true
- false
- false
-
-
+
+
-
-
diff --git a/TODO b/TODO
index b34b553..b801d86 100644
--- a/TODO
+++ b/TODO
@@ -1,3 +1,4 @@
+- use version catalog
- fix missing ArgumentExpected error at first arg or smth (maybe all args are shifted ???)
- make sure permissions of literals work
- fix suggestions/tab completion
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 74c7330..98b647e 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,5 +1,5 @@
group = "de.kentoj.scrow"
-version = "0.30"
+version = "0.31"
subprojects {
group = rootProject.group
diff --git a/kencommandapi-bukkit/build.gradle.kts b/kencommandapi-bukkit/build.gradle.kts
index 7897e3c..8a44f16 100644
--- a/kencommandapi-bukkit/build.gradle.kts
+++ b/kencommandapi-bukkit/build.gradle.kts
@@ -1,9 +1,8 @@
plugins {
id("java")
- id("maven-publish")
- id("de.kentoj.scrow.scrow-repository")
- id("de.kentoj.scrow.base-dependencies")
- id("de.kentoj.scrow.java-library")
+ id("scrow.scrow-publish")
+ id("scrow.base-dependencies")
+ id("scrow.java-library")
}
repositories {
diff --git a/kencommandapi-core/build.gradle.kts b/kencommandapi-core/build.gradle.kts
index cd1f43c..3e72210 100644
--- a/kencommandapi-core/build.gradle.kts
+++ b/kencommandapi-core/build.gradle.kts
@@ -1,9 +1,8 @@
plugins {
id("java")
- id("maven-publish")
- id("de.kentoj.scrow.scrow-repository")
- id("de.kentoj.scrow.base-dependencies")
- id("de.kentoj.scrow.java-library")
+ id("scrow.scrow-publish")
+ id("scrow.base-dependencies")
+ id("scrow.java-library")
}
repositories {
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 aef70d4..9f5e5ad 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
@@ -47,9 +47,9 @@ public class CommandHandler {
String filter = null;
if (parseResult instanceof ParseResult.UnknownLiteral)
- filter = ((ParseResult.UnknownLiteral) parseResult).getName();
+ filter = ((ParseResult.UnknownLiteral) parseResult).getInput();
else if (parseResult instanceof ParseResult.NoPermission)
- filter = ((ParseResult.NoPermission) parseResult).getName();
+ filter = ((ParseResult.NoPermission) parseResult).getInput();
return getSuggestions(sender, parseResult.getLiteral(), filter);
}
diff --git a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/argument/CommandArgument.java b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/argument/CommandArgument.java
index d227b7c..45967db 100644
--- a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/argument/CommandArgument.java
+++ b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/argument/CommandArgument.java
@@ -17,7 +17,7 @@ public interface CommandArgument {
ArgumentType getType();
- void setDefaultValueProvider(@Nullable Function getDefaultValueProvider);
+ void setDefaultValueProvider(@Nullable Function defaultValueProvider);
@Nullable Function getDefaultValueProvider();
diff --git a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/parser/CommandParser.java b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/parser/CommandParser.java
index 9d3e277..638b9c5 100644
--- a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/parser/CommandParser.java
+++ b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/parser/CommandParser.java
@@ -4,9 +4,9 @@ import com.leakyabstractions.result.api.Result;
import com.leakyabstractions.result.core.Results;
import de.kentoj.kencommandapi.api.argument.CommandArgument;
import de.kentoj.kencommandapi.api.invocation.ParsedArgument;
-import de.kentoj.kencommandapi.api.platform.HasPermissionMethod;
import de.kentoj.kencommandapi.api.node.CommandNode;
import de.kentoj.kencommandapi.api.node.RootCommandNode;
+import de.kentoj.kencommandapi.api.platform.HasPermissionMethod;
import de.kentoj.kencommandapi.internal.ParsedArgumentImpl;
import lombok.RequiredArgsConstructor;
@@ -62,36 +62,41 @@ public class CommandParser {
T sender,
boolean parseArgs
) {
- Object value;
-
- if (args.hasNext()) {
- var argStr = getRawArgument(args, nodeArg);
- if (!parseArgs) {
- value = null;
- } else {
- try {
- value = nodeArg.getType().parseInput(argStr);
- } catch (IllegalArgumentException ex) {
- return Results.failure(new ParseResult.IllegalArgument<>(node, nodeArg, ex.getMessage(), argStr));
- }
- }
- } else {
+ if (!args.hasNext()) {
if (nodeArg.getDefaultValueProvider() == null)
return Results.failure(new ParseResult.ArgumentExpected<>(node, nodeArg));
- value = nodeArg.getDefaultValueProvider().apply(sender);
+ var value = nodeArg.getDefaultValueProvider().apply(sender);
+ return Results.success(toParsed(value, nodeArg));
+ }
+
+ Object value = null;
+ var argStr = getRawArgument(args, nodeArg);
+ if (parseArgs) {
+ try {
+ value = nodeArg.getType().parseInput(argStr);
+ } catch (IllegalArgumentException ex) {
+ return Results.failure(new ParseResult.IllegalArgument<>(node, nodeArg, ex.getMessage(), argStr));
+ }
}
var parsedArg = new ParsedArgumentImpl<>(value, (CommandArgument) nodeArg);
return Results.success(parsedArg);
}
+ @SuppressWarnings("unchecked")
+ private ParsedArgument toParsed(Object value, CommandArgument arg) {
+ return new ParsedArgumentImpl<>(value, (CommandArgument) arg);
+ }
+
private String getRawArgument(Iterator args, CommandArgument arg) {
StringBuilder rawArgument = new StringBuilder();
if (arg.getType().isGreedy()) {
while (args.hasNext()) {
+ rawArgument.append(" ");
rawArgument.append(args.next());
}
+ rawArgument.deleteCharAt(0);
} else {
rawArgument = new StringBuilder(args.next());
}
diff --git a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/parser/ParseResult.java b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/parser/ParseResult.java
index 2ea7e8e..4c8d189 100644
--- a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/parser/ParseResult.java
+++ b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/parser/ParseResult.java
@@ -35,11 +35,11 @@ public abstract sealed class ParseResult permits ParseResult.IllegalArgument,
public static final class UnknownLiteral extends ParseResult {
private final CommandNode previousLiteral;
@Getter
- private final String name;
+ private final String input;
@Override
public String getMessage() {
- return "Unknown subcommand: " + name;
+ return "Unknown subcommand: " + input;
}
@Override
@@ -77,11 +77,11 @@ public abstract sealed class ParseResult permits ParseResult.IllegalArgument,
@Getter
private final CommandNode literal;
@Getter
- private final String name;
+ private final String input;
@Override
public String getMessage() {
- return "Unknown subcommand: " + name;
+ return "Unknown subcommand: " + input;
}
}
diff --git a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/suggestion/SuggestionProvider.java b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/suggestion/SuggestionProvider.java
index 5cb14f7..68c7d58 100644
--- a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/suggestion/SuggestionProvider.java
+++ b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/api/suggestion/SuggestionProvider.java
@@ -6,7 +6,7 @@ import java.util.concurrent.CompletableFuture;
public interface SuggestionProvider {
/**
- * @return an unfiltered(no permission checks or filtering by input) list of strings that may be used for the argument
+ * @return an unfiltered(no permission checks or filtering by input) list of strings that may be used for the argument/literal
*/
List suggest(T sender);
}
diff --git a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/internal/CommandArgumentImpl.java b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/internal/CommandArgumentImpl.java
index 88bf012..88fa1f1 100644
--- a/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/internal/CommandArgumentImpl.java
+++ b/kencommandapi-core/src/main/java/de/kentoj/kencommandapi/internal/CommandArgumentImpl.java
@@ -21,8 +21,7 @@ public class CommandArgumentImpl implements CommandArgument {
@Getter
@Setter
- private @Nullable Function defaultValueProvider;
-
+ private @Nullable Function defaultValueProvider = null;
@Setter
private @Nullable SuggestionProvider suggestionProvider;
diff --git a/kencommandapi-velocity/build.gradle.kts b/kencommandapi-velocity/build.gradle.kts
index 7e7afd7..ef25230 100644
--- a/kencommandapi-velocity/build.gradle.kts
+++ b/kencommandapi-velocity/build.gradle.kts
@@ -1,9 +1,8 @@
plugins {
id("java")
- id("maven-publish")
- id("de.kentoj.scrow.scrow-repository")
- id("de.kentoj.scrow.base-dependencies")
- id("de.kentoj.scrow.java-library")
+ id("scrow.scrow-publish")
+ id("scrow.base-dependencies")
+ id("scrow.java-library")
}
repositories {
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 3bb6fc9..dda4f9b 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,6 +1,22 @@
+pluginManagement {
+ includeBuild("../build-logic")
+}
+
+plugins {
+ id("scrow.scrow-repository")
+}
+
+dependencyResolutionManagement {
+ repositories {
+ maven {
+ name = "papermc"
+ url = uri("https://repo.papermc.io/repository/maven-public/")
+ }
+ }
+}
+
rootProject.name = "KenCommandAPI"
-includeBuild("../build-logic")
include("kencommandapi-core")
include("kencommandapi-bukkit")
include("kencommandapi-velocity")
\ No newline at end of file