A very simple, easy to use configuration library that fits right in your mod!
Unnamed Common Library (UCL) is my attempt at making a simple, useful, (yet to be) powerful configuration library. Its goal is to be general purpose so that no matter the mod you build or your preferences, you can always use it. This library is obviously not meant to be used on its own,if you do so it will at most serve as an example and a test for its capabilities.
Add the repository to your build.gradle(.kts):
repositories {
maven {
url = "https://maven.pkg.github.com/aurorarissime/unnamed-common-library"
}
}
And in your buildscript, add the dependency (modImplementation for Fabric, implementation for NeoForge):
dependencies {
(mod)Implementation("from.discorde:ucl:${ucl_version}+${minecraft_version}-fabric")
}
Usage
import from.discorde.ucl.common.config.annotations.*;
@Configuration(
name = "mymod"
)
public class MyModConfig {
@Comment("Enable the awesome feature")
public boolean awesomeFeature = true;
@Comment("Maximum power level (0-100)")
public int maxPower = 50;
@Comment("Welcome message displayed to players")
public String welcomeMessage = "Hello!";
}
public class MyMod implements ModInitializer {
// The wrapper class is auto-generated at compile time
public static final MyModConfigWrapper CONFIG = MyModConfigWrapper.createAndLoad();
@Override
public void onInitialize() {
if (CONFIG.awesomeFeature) {
System.out.println("Awesome feature is enabled!");
}
}
}
References
@ConfigurationAdd this annotation right above your config class
| Parameter | Type | Default | Description |
|---|---|---|---|
name |
String |
required | Config file or folder name |
location |
ConfigurationLocation |
SUBDIRECTORY |
Where to save the config |
format |
ConfigurationFormat |
JSON5 |
File format to use |
screen |
boolean |
true |
Generate YACL config screen |
@CommentAdd this annotation above any field to include a comment in the config file
@Comment("This comment will appear above the field in the config file")
public boolean myOption = true;
ConfigurationLocation| Value | Description |
|---|---|
ROOT |
Save directly in the config folder as {name}.{ext} |
SUBDIRECTORY |
Save in a subfolder as {name}/configuration.{ext} |
ConfigurationFormat| Value | Extension | Description |
|---|---|---|
JSON5 |
.json5 |
JSON with comments, trailing commas, and unquoted keys |
TOML |
.toml |
Tom's Obvious Minimal Language |
YAML |
.yaml |
YAML Ain't Markup Language |
If screen = true (default) in your @Configuration annotation and YetAnotherConfigLib (YACL) is installed, a configuration screen will be auto-generated and accessible through Mod Menu.
To disable the config screen, just set the screen parameter to false in the @Configuration annotation.
Enjoy 🙂