Chat arguments

The CommandAPI provides a number of ways to interact with chat formatting in Minecraft. These are the following:

  • ChatColor: The color of text rendered in Minecraft
  • Chat: Text which is said in chat. This also includes entity selectors such as @a and @r
  • ChatComponent: Minecraft's Raw JSON text format

The CommandAPI implements Chat and ChatComponent in two separate ways: Spigot-compatible and Adventure-compatible. The differences between these and how to use them are described in their own relevant pages. To use Minecraft 1.19's chat preview feature, information on that can be found in Chat preview.


Chat color argument

Chatcolor argument in-game, displaying a list of Minecraft chat colors

The ChatColorArgument class is used to represent a given chat color (e.g. red or green)

Example - Username color changing plugin

Say we want to create a plugin to change the color of a player's username. We want to create a command of the following form:

/namecolor <chatcolor>

We then use the ChatColorArgument to change the player's name color:

new CommandAPICommand("namecolor")
    .withArguments(new ChatColorArgument("chatcolor"))
    .executesPlayer((player, args) -> {
        ChatColor color = (ChatColor) args.get(0);
        player.setDisplayName(color + player.getName());
    })
    .register();
CommandAPICommand("namecolor")
    .withArguments(ChatColorArgument("chatcolor"))
    .executesPlayer(PlayerCommandExecutor { player, args ->
        val color = args[0] as ChatColor
        player.setDisplayName("$color${player.name}")
    })
    .register()
commandAPICommand("namecolor") {
    chatColorArgument("chatcolor")
    playerExecutor { player, args ->
        val color = args[0] as ChatColor
        player.setDisplayName("$color${player.name}")
    }
}