Skip to content

Examples

Example 1: Simple Command

public class HelloCommand implements CommandManager.CommandRegistry {

    @Override
    public void register(CommandDispatcher<CommandSource> commandDispatcher) {
        commandDispatcher.register(
            (ArgumentBuilderLiteral) ArgumentBuilderLiteral.literal("hello")
                .executes(context -> {
                    CommandSource source = (CommandSource) context.getSource();
                    source.sendMessage("Hello!");
                    return 1;
                })
        );
    }
}
````

---

### Example 2: Command with Integer Argument

```java
public class HelloCommand2 implements CommandManager.CommandRegistry {

    @Override
    public void register(CommandDispatcher<CommandSource> commandDispatcher) {
        commandDispatcher.register(
            (ArgumentBuilderLiteral) ArgumentBuilderLiteral.literal("hello")
                .then(ArgumentBuilderLiteral.argument("amount", integer())
                    .executes(context -> {
                        int amount = context.getArgument("amount", Integer.class);
                        context.getSource().sendMessage("Added: " + (amount + 10));
                        return amount;
                    })
                )
        );
    }
}

Example 3: Command with Player and Integer Arguments

public class LevelUp implements CommandManager.CommandRegistry {

    @Override
    public void register(CommandDispatcher<CommandSource> commandDispatcher) {
        commandDispatcher.register(
            (ArgumentBuilderLiteral) ArgumentBuilderLiteral.literal("hello")
                .then(ArgumentBuilderRequired.argument("target", ArgumentTypeEntity.player())
                    .then(ArgumentBuilderRequired.argument("amount", ArgumentTypeInteger.integer())
                        .executes(context -> {
                            Player player = ArgumentTypeEntity.getPlayer(context, "target");
                            int amount = context.getArgument("amount", Integer.class);

                            ((IPainScalePlayer) player).ps$addLevels(amount);
                            player.sendMessage("Now your level is: " + ((IPainScalePlayer) player).ps$getDifficultyLevel());

                            return 1;
                        })
                    )
                )
        );
    }
}

Example 4: Command with Subcommands to Add Levels or Points

public class LevelUp2 implements CommandManager.CommandRegistry {

    @Override
    public void register(CommandDispatcher<CommandSource> commandDispatcher) {
        commandDispatcher.register(
            (ArgumentBuilderLiteral) ArgumentBuilderLiteral.literal("hello")
                .then(argument("target", ArgumentTypeEntity.player())
                    .then(literal("add")
                        // First option: add levels
                        .then(ArgumentBuilderLiteral.literal("levels")
                            .then(ArgumentBuilderRequired.argument("target", ArgumentTypeEntity.player())
                                .then(ArgumentBuilderRequired.argument("level", ArgumentTypeInteger.integer())
                                    .executes(context -> {
                                        Player player = ArgumentTypeEntity.getPlayer(context, "target");
                                        int amount = context.getArgument("amount", Integer.class);

                                        ((IPainScalePlayer) player).ps$addLevels(amount);
                                        player.sendMessage("Added " + amount + " levels!");
                                        return 1;
                                    })
                                )
                            )
                        )

                        // Second option: add points
                        .then(literal("points")
                            .then(ArgumentBuilderRequired.argument("target", ArgumentTypeEntity.player())
                                .then(ArgumentBuilderRequired.argument("level", ArgumentTypeInteger.integer())
                                    .executes(context -> {
                                        Player player = ArgumentTypeEntity.getPlayer(context, "target");
                                        int amount = context.getArgument("amount", Integer.class);

                                        ((IPainScalePlayer) player).ps$addPoints(amount);
                                        player.sendMessage("Added " + amount + " points!");
                                        return 1;
                                    })
                                )
                            )
                        )
                    )
                )
        );
    }
}

Example 5: Command Requiring Admin Permission

public class LevelUp implements CommandManager.CommandRegistry {

    @Override
    public void register(CommandDispatcher<CommandSource> commandDispatcher) {
        commandDispatcher.register(
            (ArgumentBuilderLiteral) ArgumentBuilderLiteral.literal("hello").requires(source -> ((CommandSource)source).hasAdmin())
                .then(ArgumentBuilderRequired.argument("target", ArgumentTypeEntity.player())
                    .then(ArgumentBuilderRequired.argument("level", ArgumentTypeInteger.integer())
                        .executes(context -> {
                            Player player = ArgumentTypeEntity.getPlayer(context, "target");
                            int amount = context.getArgument("amount", Integer.class);

                            ((IPainScalePlayer) player).ps$addLevels(amount);
                            player.sendMessage("Now your level is: " + ((IPainScalePlayer) player).ps$getDifficultyLevel());

                            return 1;
                        })
                    )
                )
        );
    }
}

If you want to see more complex examples, check out the base commands from BTA 7.3 located in the packagenet.minecraft.core.net.command.