List option

Configuration

List options inherit from standard one, but in this case value access applies to the entire list. Additionaly, lists can be provided with element access, in which case make sure your list is mutable.

elementAccess()

Element access consist of a getter, setter, appender and remover. When setting these up make sure your list is mutable and validate the provided index.

elementListener()

Similar to value listener, this one is invoked upon modifying list elements.

Example

configBuilder.option((source) -> {
    // OptionBuilder<FabricClientCommandSource>
    var optionBuilder = ExtendedOptions.stringList("string-list", source);
    optionBuilder.helpFunc(() -> Text.of("This is a string list option!"));
    optionBuilder.valueAccess(
            Defaults.defaultValueAccess(() -> ExampleConfig.getInstance().listOpt,
                    (list) -> ExampleConfig.getInstance().listOpt = list)
    );
    optionBuilder.elementAccess(
            Defaults.defaultElementAccess(() -> ExampleConfig.getInstance().listOpt)
    );

    return optionBuilder;
});

In this example element access uses default one, see Defaults class for implementation details. ExtendedOptions class provides list options for basic data types. ListOptionBuilder one provides a generic list option. See Generic option section for more information.

Result

/example-mod string-list list -> get list
                       |      \> [String...] -> set list
                       - get <index> -> get element
                       - set <index> <String> -> set element
                       - add <String> -> append element
                       \ remove <index> -> remove element

Last updated