YetAnotherConfigLib (yacl) is just that. A builder-based configuration library for Minecraft.
LGPL-3.0 License
Bot releases are hidden (Show)
Published by isXander over 1 year ago
Published by isXander over 1 year ago
3.0 of YACL introduces a new UI layout, taking advantage of 1.19.4's new tab system!
The description panel takes the place of the old category buttons, you can now interact with the text by clicking or hovering and the description can contain an animated WebP file or a static image. This can help you as a developer to portray what your option does with an actual example.
Like the old tooltip system, these descriptions can dynamically change based on the value of the option, including the image.
After a few seconds of hovering, the description will start to auto-scroll if necessary so inputs such as controller can still use the UI.
.description(OptionDescription.createBuilder()
.text(Text.literal("Line 1"))
.text(Text.literal("Line 2"))
.webpImage(new Identifier("mymod", "config/screenshots/config_example.webp"))
.build())
the above is applicable to both groups and options
YACL now uses a slightly modified version of 1.19.4's new create world screen, this adds tab overflow, so you can scroll through the tabs in case there are too many to fit on the screen.
Controllers now use a builder system, rather than using constructors. This allows for more flexibility in the future.
You can still use your own controller implementations without creating a builder, using .customController()
.
This update is for both 1.19.4 and 1.20, there is complete API parity. 1.20 is now the active branch,
and 1.19.4 is now considered LTS and may receive features from 1.20 at a later date.
YACL 3.0 includes the old 2.x inside the new JAR. So you can safely upgrade to 3.0 without breaking
mods that have not yet updated. However, the old UI will still be present for this outdated mods.
Published by isXander over 1 year ago
3.0 of YACL introduces a new UI layout, taking advantage of 1.19.4's new tab system!
The description panel takes the place of the old category buttons, you can now interact with the text by clicking or hovering and the description can contain an animated WebP file or a static image. This can help you as a developer to portray what your option does with an actual example.
Like the old tooltip system, these descriptions can dynamically change based on the value of the option, including the image.
After a few seconds of hovering, the description will start to auto-scroll if necessary so inputs such as controller can still use the UI.
.description(OptionDescription.createBuilder()
.text(Text.literal("Line 1"))
.text(Text.literal("Line 2"))
.webpImage(new Identifier("mymod", "config/screenshots/config_example.webp"))
.build())
the above is applicable to both groups and options
YACL now uses a slightly modified version of 1.19.4's new create world screen, this adds tab overflow, so you can scroll through the tabs in case there are too many to fit on the screen.
Controllers now use a builder system, rather than using constructors. This allows for more flexibility in the future.
You can still use your own controller implementations without creating a builder, using .customController()
.
This update is for both 1.19.4 and 1.20, there is complete API parity. 1.20 is now the active branch,
and 1.19.4 is now considered LTS and may receive features from 1.20 at a later date.
YACL 3.0 includes the old 2.x inside the new JAR. So you can safely upgrade to 3.0 without breaking
mods that have not yet updated. However, the old UI will still be present for this outdated mods.
Published by isXander over 1 year ago
This version adds no features, nor bug fixes, instead it implements a breaking change:
The YACL package has changed to dev.isxander.yacl3
and the YACL mod-id has changed to yet_another_config_lib_v3
.
This is to prevent conflicts with 2.0, so you can load both versions at the same time so older mods don't break.
Published by isXander over 1 year ago
This version adds no features, nor bug fixes, instead it implements a breaking change:
The YACL package has changed to dev.isxander.yacl3
and the YACL mod-id has changed to yet_another_config_lib_v3
.
This is to prevent conflicts with 2.0, so you can load both versions at the same time so older mods don't break.
Published by isXander over 1 year ago
This release is parity with 3.0.0-beta.6 for 1.20.
Unfortunately, 3.0 will only be available for 1.19.4 and up, not 1.19.2. This is because YACL
now highly depends on .4's new tab system (found in the create new world screen).
If there is a high enough demand for a backport to 1.19.2, I will consider it, but no promises!
Published by isXander over 1 year ago
Published by isXander over 1 year ago
OptionDescription.Builder#description
has been renamed to text
, to make it more clear as it used to look like:
.description(OptionDescription.createBuilder()
.description(Component.literal("This is some text"))
.build())
ListOption.createBuilder
now no longer takes a class parameter, to match with Option
. This means you can no longerListOption.createBuilder(String.class)
, instead you should do ListOption.<String>createBuilder()
.Published by isXander over 1 year ago
OptionDescription.Builder.customImage()
to add your own renderer for the option description.This release brings a few API breakages, getting them out the way, as it is a major update.
.customController()
. An example would be .controller(TickBoxControllerBuilder::create)
or:
.controller(opt -> IntegerSliderControllerBuilder.create(opt)
.range(0, 10)
.step(1))
.tooltip()
from groups and options. You should use .description()
instead.OptionDescription.of(Component...)
has been added so you don't need toOptionDescription.Builder.name(Component)
as it now just uses the option name.Published by isXander over 1 year ago
Published by isXander over 1 year ago
No changelog provided.
Published by isXander over 1 year ago
No changelog provided.
Published by isXander over 1 year ago
Published by isXander over 1 year ago
No changelog provided.
Published by isXander over 1 year ago
Published by isXander over 1 year ago
OptionGroup.Builder
and ConfigCategory.Builder
now extend OptionAddable
so you can abstractlyOption.Builder
due to unsafe varargs. There is nowPublished by isXander over 1 year ago
Published by isXander over 1 year ago
Published by isXander over 1 year ago
Published by isXander over 1 year ago
Due to breaking JAR compatibility in an earlier version of YACL, mods that support YACL for
1.19.3 can no longer support 1.19.2. This is a backport of YACL 2.2.0 to 1.19.2 to allow mods to
support it.
Personally, I hate to backport my mods. When breaking changes are made in Minecraft between versions,
the code of the mod has to be changed to support the new version, making the older version of MC incompatible.
If you want to support multiple versions of Minecraft, you have to maintain multiple branches of the mod, which
is a lot of work for just one person, and I don't have the time to do that.
This is a one-off backport, and I will not be backporting any future versions of YACL to 1.19.2. If you want to
support and use new features of YACL in your mod, you will have to drop support for 1.19.2.