1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# YetAnotherConfigLib
![Enviroment](https://img.shields.io/badge/Enviroment-Client-purple)
[![Java 17](https://img.shields.io/badge/Language-Java%2017-9B599A.svg?color=orange)](https://www.oracle.com/news/announcement/oracle-releases-java-17-2021-09-14)
[![Discord](https://img.shields.io/discord/780023008668287017?color=blue&logo=discord&label=Discord)](https://short.isxander.dev/discord)
[![Modrinth](https://img.shields.io/modrinth/dt/1eAoo2KR?color=00AF5C&label=downloads&logo=modrinth)](https://modrinth.com/mod/yacl)
[![CurseForge](https://cf.way2muchnoise.eu/full_667299_downloads.svg)](https://curseforge.com/minecraft/mc-mods/yacl)
[![Ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/isxander)
A mod designed to fit a modder's needs for client-side configuration.
[![](https://www.bisecthosting.com/partners/custom-banners/08bbd3ff-5c0d-4480-8738-de0f070a04dd.png)](https://bisecthosting.com/xander)
## Why does this mod even exist?
This mod was made to fill a hole in this area of Fabric modding. The existing main config libraries don't achieve what I want from them:
- **[Cloth Config API](https://modrinth.com/mod/cloth-config)**: **It's stale.** The developer of cloth has clarified that they are likely not going to add any more features. They don't want to touch it. ([citation](https://user-images.githubusercontent.com/43245524/206530322-3ae46008-5356-468e-9a73-63b859364d4e.png))
- **[SpruceUI](https://github.com/LambdAurora/SpruceUI)**: **It isn't designed for configuration.** In this essence the design feels cluttered. Further details available in [this issue](https://github.com/isXander/Zoomify/issues/85).
- **[MidnightLib](https://modrinth.com/mod/midnightlib)**: **It has cosmetics among other utilities.** It may not be large but some players (including me) wouldn't want cosmetics out of nowhere.
- **[OwoLib](https://modrinth.com/mod/owo-lib)**: **It's content focused.** It does a lot of other things as well as config, adding to the size.
As you can see, there's sadly a drawback with all of them and this is where YetAnotherConfigLib comes in.
## Why use YACL?
### Features
YACL has a ton of configuration features:
- Custom control widgets
- Create your own unique "controller" if the default set does not suit your needs
- Rich descriptions
- Clickable & hoverable text, powered by vanilla's Text component system
- WebP (including animated) image previews
- Custom rich-renderable section to replace image
- Multiple controllers for the same type:
- Sliders or fields for numbers
- Dropdowns, cyclers, or raw text fields for strings
- Tickboxes or ON/OFF text display for booleans
- ...and more!
- Fully-featured color picker
- Accessible with full compatibility for keyboard control (optimised for Controlify usage)
- High organisation with tabs (categories) and collapsable groups
- Built-in serialization/deserialization techniques so you can skip the error-prone config code
- Full alternative Kotlin DSL
### Version support
YACL supports a huge amount of versions, all kept up to date and released simultaneously, thanks to the amazing
[Stonecutter](https://stonecutter.kikugie.dev/) build tool.
| Version | Fabric | Forge | NeoForge |
|-------------------------|--------|-------|----------|
| **1.20.1** | ✅ | ✅ | ⛔ |
| **1.20.4** | ✅ | ⛔ | ✅ |
| **1.20.5 - 1.20.6** | ✅ | ⛔ | ✅ |
| **1.21.0 - 1.21.1** | ✅ | ⛔ | ✅ |
| **1.21.2** (RC version) | ✅ | ⛔ | ⛔ |
That's **9** different targets, supporting versions that are 500+ days old!
_**Note**: Forge (LexForge) is not and will not be supported past 1.20.1.
If you're a developer, please port to NeoForge.
If you're a user, you may find that all your favourite mods have already done so._
Each is a separate build, so make sure your users get the correct YACL version for their target of choice.
### Design
YACL is designed to fit right in with the vanilla GUI aesthetic, and will evolve with Minecraft itself. Take a look at
the gallery to see how even in all the currently supported versions, YACL's design looks different to fit in with
vanilla GUI updates.
![image preview](https://cdn.modrinth.com/data/1eAoo2KR/images/5862570281f5109119c11f21a1bba52b6a2ab17f.png)
## Usage for Developers
[The wiki](https://github.com/isXander/YetAnotherConfigLib/wiki/Usage) contains a full documentation on how to use YACL.
## License
This mod is under the [GNU Lesser General Public License, v3.0](LICENSE).
|