import net.minestom.server.command.builder.Command;
import net.minestom.server.command.builder.arguments.ArgumentType;
import net.minestom.server.command.builder.arguments.number.ArgumentNumber;
import net.minestom.server.entity.Player;
public class CustomCommand extends Command {
public CustomCommand() {
super("mycommand");
// String argument
var nameArg = ArgumentType.String("name");
// Integer argument with range
var countArg = ArgumentType.Integer("count")
.min(1)
.max(100);
// Double argument
var amountArg = ArgumentType.Double("amount");
// Word argument (single word)
var actionArg = ArgumentType.Word("action")
.from("start", "stop", "restart");
// Player argument (optional)
var targetArg = ArgumentType.Entity("target")
.onlyPlayers(true);
// First syntax: command <name> <count>
addSyntax((sender, context) -> {
String name = context.get(nameArg);
int count = context.get(countArg);
sender.sendMessage("Executing " + name + " " + count + " times");
if (sender instanceof Player player) {
// Player-specific logic
player.sendMessage("Command executed as player");
}
}, nameArg, countArg);
// Second syntax: command <action> [target]
addSyntax((sender, context) -> {
String action = context.get(actionArg);
if (context.has(targetArg)) {
var target = context.get(targetArg);
sender.sendMessage("Action " + action + " on " + target);
} else {
sender.sendMessage("Action " + action);
}
}, actionArg, targetArg.setDefaultValue(() -> null));
// Set conditions
setCondition((sender, commandString) -> {
if (!(sender instanceof Player)) {
sender.sendMessage("This command can only be used by players");
return false;
}
return true;
});
}
}
// Register command
MinecraftServer.getCommandManager().register(new CustomCommand());