Registering annotation-based commands

Registering annotation-based commands is really simple. To do this, we use the following method, where className is the name of a class with a @Command annotation:

CommandAPI.registerCommand(className)

Example: Registering a Warp command

Say we have a simple command /warp that is defined as follows:

@Command("warp")	
public class WarpCommand {
	
	// List of warp names and their locations
	static Map<String, Location> warps = new HashMap<>();
	
	@Default
	public static void warp(CommandSender sender) {
		sender.sendMessage("--- Warp help ---");
		sender.sendMessage("/warp - Show this help");
		sender.sendMessage("/warp <warp> - Teleport to <warp>");
		sender.sendMessage("/warp create <warpname> - Creates a warp at your current location");
	}
	
	@Default
	public static void warp(Player player, @AStringArgument String warpName) {
		player.teleport(warps.get(warpName));
	}
	
	@Subcommand("create")
	@Permission("warps.create")
	public static void createWarp(Player player, @AStringArgument String warpName) {
		warps.put(warpName, player.getLocation());
		new IntegerArgument("");
	}
	
}

We can register this in our onLoad() method so we can use this command from within Minecraft functions:

class MyPlugin extends JavaPlugin {
	
	@Override
	public void onLoad() {
		CommandAPI.registerCommand(WarpCommand.class);
	}
	
}