Special Options
Learn about other Option implementations for more functionality.
ListOption
ListOption
List options allow you to easily allow the user to easily append, sort and remove elements from a list, whilst also allowing the use of regular controllers.
These types of options are a hybrid between groups and options, behaving like both, and does not allow for it to be added to a group but must be added to a category directly. Under-the-hood, each option entry is like a regular option, but with no name. This option is a child of a list entry, which has extra buttons to reposition and remove elements.
ListOption.<String>createBuilder()
.name(Component.literal("List Option"))
.binding(/* gets and sets a List, requires list field to be not final, does not manipulate the list */)
.controller(StringControllerBuilder::create) // usual controllers, passed to every entry
.initial("") // when adding a new entry to the list, this is the initial value it has
.build()
To re-iterate, EVERY controller works with lists.

LabelOption
LabelOption
Labels are simply options that display text. Create one like so:
LabelOption.create(Component.literal("Cool label!"))
ButtonOption
ButtonOption
Button options are options that do an action when pressed. Create one like so:
ButtonOption.createBuilder()
.name(...)
.description(...)
.action((yaclScreen, thisOption) -> { /* do something here */ })
.build()
Last updated
Was this helpful?