This commit is contained in:
parent
2c058fc84c
commit
7a0e9f8b63
5 changed files with 14 additions and 16 deletions
|
|
@ -27,17 +27,14 @@ public class CommandHandler<T> {
|
||||||
public void invoke(RootLiteral<T> rootLiteral, T sender, Stream<String> args) {
|
public void invoke(RootLiteral<T> rootLiteral, T sender, Stream<String> args) {
|
||||||
var walkResult = nodeTreeWalker.walk(rootLiteral, sender, args.iterator());
|
var walkResult = nodeTreeWalker.walk(rootLiteral, sender, args.iterator());
|
||||||
if (!walkResult.isValidUsage()) {
|
if (!walkResult.isValidUsage()) {
|
||||||
sendMessageMethod.send(sender, rootLiteral.messageStyle().err(walkResult.message()));
|
sendMessageMethod.send(sender, rootLiteral.style().err(walkResult.message()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
requireNonNull(walkResult.lastLiteral().executor())
|
requireNonNull(walkResult.lastLiteral().executor())
|
||||||
.execute(walkResult.ctx())
|
.execute(rootLiteral.style(), walkResult.ctx())
|
||||||
.whenComplete((result, ex) -> {
|
.exceptionally(ex -> {
|
||||||
if (ex != null)
|
sendMessageMethod.send(sender, rootLiteral.style().exception(ex));
|
||||||
sendMessageMethod.send(sender, rootLiteral.messageStyle().exception(ex));
|
return null;
|
||||||
result.ifFailure(err ->
|
|
||||||
sendMessageMethod.send(sender, rootLiteral.messageStyle().err(err)));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
package de.kentoj.kencommandapi.api.invocation;
|
package de.kentoj.kencommandapi.api.invocation;
|
||||||
|
|
||||||
import com.leakyabstractions.result.api.Result;
|
import de.kentoj.kencommandapi.api.platform.MessageStyle;
|
||||||
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
public interface CommandExecutor<T> {
|
public interface CommandExecutor<T> {
|
||||||
|
|
||||||
CompletableFuture<Result<Object, String>> execute(CommandContext<T> ctx);
|
CompletableFuture<Void> execute(MessageStyle style, CommandContext<T> ctx);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,15 @@
|
||||||
package de.kentoj.kencommandapi.api.invocation;
|
package de.kentoj.kencommandapi.api.invocation;
|
||||||
|
|
||||||
import com.leakyabstractions.result.api.Result;
|
import de.kentoj.kencommandapi.api.platform.MessageStyle;
|
||||||
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
public interface SyncCommandExecutor<T> extends CommandExecutor<T> {
|
public interface SyncCommandExecutor<T> extends CommandExecutor<T> {
|
||||||
|
|
||||||
Result<Object, String> executeSync(CommandContext<T> ctx);
|
void executeSync(MessageStyle style, CommandContext<T> ctx);
|
||||||
|
|
||||||
default CompletableFuture<Result<Object, String>> execute(CommandContext<T> ctx) {
|
default CompletableFuture<Void> execute(MessageStyle style, CommandContext<T> ctx) {
|
||||||
return CompletableFuture.completedFuture(this.executeSync(ctx));
|
this.executeSync(style, ctx);
|
||||||
|
return CompletableFuture.completedFuture(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,5 +4,5 @@ import de.kentoj.kencommandapi.api.platform.MessageStyle;
|
||||||
|
|
||||||
public sealed interface RootLiteral<T> extends Literal<T> permits RootLiteralImpl {
|
public sealed interface RootLiteral<T> extends Literal<T> permits RootLiteralImpl {
|
||||||
|
|
||||||
MessageStyle messageStyle();
|
MessageStyle style();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ record RootLiteralImpl<T>(
|
||||||
List<CommandArgumentSpec<T, ?>> arguments,
|
List<CommandArgumentSpec<T, ?>> arguments,
|
||||||
CommandExecutor<T> executor,
|
CommandExecutor<T> executor,
|
||||||
@Nullable String permission,
|
@Nullable String permission,
|
||||||
MessageStyle messageStyle
|
MessageStyle style
|
||||||
) implements RootLiteral<T> {
|
) implements RootLiteral<T> {
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Literal<T> getLiteral(@NotNull String name) {
|
public @Nullable Literal<T> getLiteral(@NotNull String name) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue