Skip to content

Text API

Axi offers a text API around adventure with Kotlin DSLs.

Text Builders

Axi offers the buildText function to build a text component using a Kotlin DSL:

kt
buildText {
  append("Hello, ")
  append("world") {
    green()
  }
  append("!")
  
  yellow()
}

This builds a text component with the following contents:

  • Hello, (yellow)
  • world (green)
  • ! (yellow)

Text builders wrap around adventure's ComponentBuilder and have lots of utility functions for making your life easier.

Text width calculations

Axi provides the ComponentLike#getWidth extension to compute the width of a rendered text component. When using the Minecraft vanilla font, this assumes there are no overriding resource packs applied. Usually, you would want to override the default font with the Minecraft font to make sure it is properly applied, or use a custom one.

Colour registries

Colour registries are a unified way of defining branding colours which will be applied to all text builders.

To get started, simply extend the ColorRegistry class and call your registry's initializer in your plugin initializer:

kt
object Colors : ColorRegistry() {
  val GREEN: TextColor = register(NamedTextColor.GREEN, 0x94f7c5)
  val YELLOW: TextColor = register(NamedTextColor.YELLOW, 0xf6d48f)
}

class ExampleAxiPlugin : AxiPlugin() {
  override suspend fun enable() {
    // ...
    Colors
  }
}

Now, you can use the green() and yellow() functions in text builders, and they will be using your specified colours.

Text convertibles

Axi provides an interface TextConvertible which directly implements adventure's TextComponent and delegates everything to the abstract asText function. Sprites are a good example for this.