YetAnotherConfigLib (yacl) is just that. A builder-based configuration library for Minecraft.

Overview

YetAnotherConfigLib

Enviroment Java 17 Discord

Modrinth CurseForge

Ko-fi

Yet Another Config Lib, like, what were you expecting?

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:
    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.
  • SpruceUI:
    It isn't designed for configuration. In this essence the design feels cluttered. Further details available in this issue.
  • 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:
    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.

How is YACL better?

YACL has the favour of hindsight. Whilst developing this fresh library, I can make sure that it does everything right:

  • It's just a config library. YACL contains no other features, just config screen generation.
  • It's lightweight. YACL leaves managing your config up to you, it doesn't contain an alternative to AutoConfig or similar. (Can be paired with my other library, Settxi, for this feature)
  • Easy API. YACL takes inspiration from Sodium's internal configuration library.
  • It's styled to fit in Minecraft. YACL's GUI is designed to fit right in.

Usage

The wiki contains a full documentation on how to use YACL.

Screenshots

License

This mod is under the GNU Lesser General Public License, v3.0.

Comments
  • Server side configuration support

    Server side configuration support

    Hello! I recently noticed this library on Quilt's discord server.

    I would like to use it - but for a server side mod. Your readme says,

    • Client sided library. YACL is built for client mods only, making it a smaller size.

    I would like a lot to use it for my server-side mod. Is it possible? If not, will you add support for it? If not, why?

    I just read the documentation, it seems to me like the readme isn't updated? I can't see what's the problem to use it server-side.

    P.S. the mod is mandatory on the server, and optional on the client - I plan to use the mod's config loading on the server, and saving on client (obviously, I can't have a screen on server) - is there a problem with that?

    opened by DanielGolan-mc 4
  • Support for non-AWT colours in ColorController

    Support for non-AWT colours in ColorController

    It's not that great being forced to use java.awt.Color. Maybe just use ints and accept a java.util.Function to convert back and forth a custom class. When using GSON, it causes some reflection exceptions with AWT colours. I did manage to fix this with an extra class, though.

    enhancement 
    opened by TheKodeToad 4
  • Add Slovenian translation

    Add Slovenian translation

    Wasn't sure about boolean names, as true=prav by the translation, but prav is more used as right (~wrong), that's why I've gone with da (=yes)

    also wasn't sure about the GUI word, slovenian counterpart is GUV which no one uses, though GUI is not really used well. I'd propose using the word meni (=menu), though this differs from original then.

    opened by samolego 4
  • Add a bit more padding to the sides of the menu

    Add a bit more padding to the sides of the menu

    Not sure if this is an issue for YACL or XSO, but maybe add a little bit more padding to the sides of this menu.

    Instead of this:

    image

    It could be like this: (this is done with image editing, so the background is a bit odd but I think you get what I mean)

    image

    This would be great to improve the user experience

    enhancement 
    opened by intergrav 3
  • Temporary solution to fix tautology (ru_ru.json)

    Temporary solution to fix tautology (ru_ru.json)

    Temporary solution until #21 is resolved, fixes this: Снимок экрана 2022-09-26 001917

    Still not as good as if Cancel would be localized as Назад (raw translation is Back), but quite acceptable.

    opened by Felix14-v2 0
  • Auto Serialization

    Auto Serialization

    Currently, YACL offers no way for a developer to save and load their configuration. My initial stance was that this library doesn't serve that purpose and isn't relevant.

    However, when porting Cull Less Leaves I realised two things:

    • Another library to serve this purpose would not be convenient
    • Creating a badly implemented saving and loading process for each mod is also not convenient.

    Having this functionality built-in has a few benefits:

    • Config file can be easily structures into YACL's categories and groups
    • It's convenient
    • It matches the functionality of similar libraries (namely Cloth Config)
    opened by isXander 0
  • Grammar is off

    Grammar is off

    The GUI's use of "Finished" sounds very off. You could use vanilla's "Done" (translation key gui.done) and have it better worded and multilangual.

    opened by Luligabi1 0
  • Update ru_ru.json

    Update ru_ru.json

    update russian translation and fix true-false translation from да-нет (=yes-no) to Активно-Не активно (=Active-Not active)

    maybe its better, but we are still confused

    created with @alije123

    opened by ugamii 0
  • "Simple mode" or something that sounds a bit cooler

    In some mods, there's only one category. It would be nice to hide the sidebar and maybe move the buttons into the centre like with cloth and other libs.

    enhancement 
    opened by TheKodeToad 2
  • Game can freeze with larger strings saved in config.

    Game can freeze with larger strings saved in config.

    After inputing larger strings into config options, at higher GUI scales (7 for me) attempting to open the config menu will cause the game to freeze and become unresponsive.

    Steps to reproduce:

    1. Create/have a mod with a string input option in the config
    2. Use a lower GUI scale and copy something that's too long to input at higher GUI scales (Hypixel api key for me)
    3. Paste the string into the input box and save the changes.
    4. Increase your GUI scale to something large (7 in my case)
    5. Attempt to open the config menu ❌ Game freezes and becomes unresponsive
    bug 
    opened by AzureAaron 1
  • Add translation keys for the

    Add translation keys for the "Close" and "Done" buttons

    In my language, the word "Cancel" has many meanings, and the one that is currently being used does not match the situation in which the mod uses it. 2022-09-12_21 59 42

    The situation is similar with the "Done" (Готово) button: this variant is allowed, but only if you did not need to save changes with a separate button before clicking on it (this is exactly what appears in YACL). 2022-09-12_22 33 08

    bug 
    opened by Felix14-v2 3
Releases(1.7.1)
Owner
Xander
Kotlin Supremacist, FabricMC Modder, Library Developer
Xander
Apollo is a reliable configuration management system suitable for microservice configuration management scenarios.

English | 中文 Apollo - A reliable configuration management system Apollo is a reliable configuration management system. It can centrally manage the con

Apollo 27.6k Dec 5, 2022
Record builder generator for Java records

RecordBuilder What is RecordBuilder Java 16 introduces Records. While this version of records is fantastic, it's currently missing some important feat

Jordan Zimmerman 348 Nov 23, 2022
Relational database project, PC Builder, for the Database Systems Design course.

README: Starting the Progam: This program was built and ran on the Eclipse IDE. To run, first create the database, "ty_daniel_db", using the ty_dani

Daniel Ty 1 Jan 6, 2022
A hybrid chat android application based on the features of Instagram and Whatsapp having UI just as Telegram.

GupShup About App It is a free online chat android application, enabling user to create a free user account and then log in using the credentials. Aft

Ratik Tiwari 1 May 22, 2022
A library that automatically generates and manages configuration files based on classes.

sc-cfg SC-CFG is a simple, yet powerful library that automatically generate configuration files based on your classes. Compatible with Java 8+ and Kot

null 10 Nov 28, 2022
NotEnoughEnergistics is a port of Just Enough Energistics to Minecraft 1.7.10

中文 Not Enough Energistics NotEnoughEnergistics is a port of Just Enough Energistics to Minecraft 1.7.10 This mod replaces AE2's default NEI integratio

vfyjxf 12 Oct 30, 2022
Literally just adds milk, to act as a bridge for any other mods that want to do the same.

Milk lib Literally just adds milk, to act as a bridge for any other mods that want to do the same. See the Milk class for customisation; It allows for

null 5 Oct 17, 2022
Simple Android app during a coding night. Just Learning Firebase and Android

KUI-App Simple Android app during a coding night. Just Learning Firebase and Android What we learned: Some basics of Android Basic setup of Firebase:

Kibabii University Informatics Club (KUI) 7 Aug 28, 2022
Win32 and DirectX mappings for java using Project Panama. Ignore the C# tag, it's just reference code used for decompilation

JWin32 A Project Panama-based mapping + wrapper generator for win32 headers. IMPORTANT As of 0.5.0, no prebuilt jars will be provided. You must genera

FalsePattern 9 Nov 27, 2022
code to the rat i give to people if u want to change the webhook its in "src/main/java/github/quantizr/autogg/guis/gui" please just dont sell my rat :(

SkyblockRat My rats code join my discord! https://discord.gg/bbK6ndHqN6 i got tired of people asking "is it double hooked?!" so here is my rats code y

null 6 Nov 26, 2022
SecureDB is an extension for Ai2 Appinventor and its distros which stores the data in the form of key and value just like TinyDB but in a more secure manner.

SecureDB SecureDB is an extension for Ai2 Appinventor and its distros which stores data for your app in a secure format locally on user's device. Expl

Akshat Developer 3 Sep 24, 2022
Dynamic Configuration Capability for SpringBoot Application

Spring Boot Dynamic Config Hot-reload your SpringBoot configurations, with just a '@DynamicConfig' annotation, the simplest solution, ever. English 简体

Joey Yang 142 Dec 3, 2022
OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)

OpenAPI Generator Master (5.4.x): 6.0.x (6.0.x): ⭐ ⭐ ⭐ If you would like to contribute, please refer to guidelines and a list of open tasks. ⭐ ⭐ ⭐ ‼️

OpenAPI Tools 14.5k Nov 30, 2022
Ethylene is a open-source, lightweight, general-purpose compatibility layer standing between the developer and the chaotic world of configuration file formats.

Ethylene Ethylene is a open-source, lightweight, general-purpose compatibility layer standing between the developer and the chaotic world of configura

Steank 7 Aug 9, 2022
Super Configuration Management System (SCMS)

Super Configuration Management System (SCMS) Intro Este es un servicio web REST que permite administrar la configuración de distintas aplicaciones en

Gastón Pini 1 Feb 5, 2022
This app/widget is based on the work of Anthony (tonesto7), which is in turn based on the earlier work of David Schablowsky

Mustang Mach-E Widget for Android Intro This app/widget is based on the work of Anthony (tonesto7), which is in turn based on the earlier work of Davi

null 25 Nov 15, 2022
Team 5468's 2022 FRC robot code. This code is written in Java and is based off of WPILib's Java control system and utilizes a command based system

FRC 2022 Team 5468's 2022 FRC robot code. This code is written in Java and is based off of WPILib's Java control system and utilizes a command based s

null 4 Oct 4, 2022
A Text Based, Turn-Based, Strategy Game to be played in console

ConsoleGame A Text Based, Turn-Based, Strategy Game to be played in console. Feel free to fix any retardation in my code (meaning bugs, stupid/spaghet

Bertrahm 2 Jul 17, 2022
This is the VapeCloud project, it is a Minecraft Dynamic CloudSystem based on Nio-Networking.

This is the VapeCloud project, it is a Minecraft Dynamic CloudSystem based on Nio-Networking. IMPORTENT: this Cloudsystem is still in Development Requ

RauchigesEtwas 3 Apr 26, 2022