// Simple command with string argument
public class GreetCommand extends Command {
    public GreetCommand() {
        super("greet");
        
        var nameArg = ArgumentType.String("name");
        
        addSyntax((sender, context) -> {
            String name = context.get(nameArg);
            sender.sendMessage("Hello, " + name + "!");
        }, nameArg);
    }
}

// Command with multiple arguments
public class TeleportCommand extends Command {
    public TeleportCommand() {
        super("tp");
        
        var xArg = ArgumentType.Double("x");
        var yArg = ArgumentType.Double("y");
        var zArg = ArgumentType.Double("z");
        
        addSyntax((sender, context) -> {
            if (sender instanceof Player player) {
                double x = context.get(xArg);
                double y = context.get(yArg);
                double z = context.get(zArg);
                player.teleport(new Pos(x, y, z));
                player.sendMessage("Teleported to " + x + ", " + y + ", " + z);
            }
        }, xArg, yArg, zArg);
    }
}

// Command with player selector
public class HealCommand extends Command {
    public HealCommand() {
        super("heal");
        
        var targetArg = ArgumentType.Entity("target")
            .onlyPlayers(true);
        
        addSyntax((sender, context) -> {
            if (context.has(targetArg)) {
                var target = context.get(targetArg);
                if (target instanceof Player player) {
                    player.setHealth(player.getMaxHealth());
                    player.sendMessage("You have been healed!");
                    sender.sendMessage("Healed " + player.getUsername());
                }
            } else if (sender instanceof Player player) {
                player.setHealth(player.getMaxHealth());
                player.sendMessage("You have been healed!");
            }
        }, targetArg.setDefaultValue(() -> null));
    }
}

// Register commands
var commandManager = MinecraftServer.getCommandManager();
commandManager.register(new GreetCommand());
commandManager.register(new TeleportCommand());
commandManager.register(new HealCommand());