java commands api
Find a file
kento2 b4c1e242c8 .
2026-04-29 17:46:44 +02:00
.idea . 2026-04-29 17:46:44 +02:00
gradle/wrapper first commit 2026-04-14 22:28:42 +02:00
kencommandapi-bukkit . 2026-04-29 17:46:44 +02:00
kencommandapi-core/src/main/java/de/kentoj/kencommandapi . 2026-04-29 17:46:44 +02:00
.gitignore first commit 2026-04-14 22:28:25 +02:00
build.gradle.kts . + improve build system 2026-04-18 12:52:34 +02:00
gradlew first commit 2026-04-14 22:28:42 +02:00
gradlew.bat first commit 2026-04-14 22:28:42 +02:00
README.md . + improve build system 2026-04-18 12:52:34 +02:00
settings.gradle.kts will try smth 2026-04-15 18:39:41 +02:00
TODO add TODO 2026-04-16 10:50:47 +02:00

As of v2.2.0, a command for getting/setting coins of a player could look like this:

public class CoinsCommand {

    @Getter
    private final CommandNode<CommandContext<CommandSender>> rootNode;
    private final CommandArgument<CommandContext<CommandSender>, OfflinePlayer> playerArg;
    private final CommandArgument<CommandContext<CommandSender>, Integer> amountArg;

    public CoinsCommand() {
        rootNode = ScrowAPI.getCommandManager().createNode("coins");
        this.playerArg = ScrowAPI.getCommandManager().createArgument("player", OfflinePlayerArgumentType.getInstance());
        this.amountArg = ScrowAPI.getCommandManager().createArgument("amount", IntegerArgumentType.getInstance());

        {
            var setLiteral = ScrowAPI.getCommandManager().createNode("set");
            rootNode.addLiteral(setLiteral);
            setLiteral.addArgument(playerArg);
            setLiteral.addArgument(amountArg);
            setLiteral.setExecutor(this::setCoins);
        }
        {
            var getLiteral = ScrowAPI.getCommandManager().createNode("get");
            rootNode.addLiteral(getLiteral);
            getLiteral.addArgument(playerArg);
            getLiteral.setExecutor(this::getCoins);
        }
    }

    private void getCoins(CommandContext<CommandSender> ctx) {
        var player = ctx.getArg(playerArg);

        ScrowAPI.getEconomyService()
                .getCoins(player.getUniqueId())
                .subscribeOn(Schedulers.boundedElastic())
                .publishOn(ScrowAPI.getMinecraftScheduler())
                .subscribe(amount -> {
                    if (player == ctx.getSender()) {
                        ctx.getSender().sendMessage("You have " + amount + "$");
                    } else {
                        ctx.getSender().sendMessage(player.getName() + " has " + amount + "$");
                    }
                }, err -> {
                    ctx.getSender().sendMessage("Unable to get coins: " + err.getMessage());
                    Bukkit.getLogger().log(Level.SEVERE, "Unable to get coins of " + player.getUniqueId(), err);
                });
    }

    private void setCoins(CommandContext<CommandSender> ctx) {
        var player = ctx.getArg(playerArg);
        var amount = ctx.getArg(amountArg);

        ScrowAPI.getEconomyService()
                .setCoins(player.getUniqueId(), amount)
                .subscribeOn(Schedulers.boundedElastic())
                .publishOn(ScrowAPI.getMinecraftScheduler())
                .subscribe(__ -> {
                    ctx.getSender().sendMessage(player.getName() + " now has " + amount + "$");
                }, err -> {
                    ctx.getSender().sendMessage("Unable to set coins: " + err.getMessage());
                    Bukkit.getLogger().log(Level.SEVERE, "Unable to set coins of " + player.getUniqueId() + " to " + amount, err);
                });
    }
}

Registered with

ScrowAPI.getCommandManager().register(new CoinsCommand().getRootNode());