aboutsummaryrefslogtreecommitdiff
path: root/changelog.md
diff options
context:
space:
mode:
Diffstat (limited to 'changelog.md')
-rw-r--r--changelog.md81
1 files changed, 78 insertions, 3 deletions
diff --git a/changelog.md b/changelog.md
index dbab4c7..ab6c6d1 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,13 +1,88 @@
-# YetAnotherConfigLib 3.4.4
+# YetAnotherConfigLib 3.5.0
This build supports the following versions:
- Fabric 1.20.1
- Fabric 1.20.4
- Fabric 1.20.6 (also supports 1.20.5)
+- Fabric 1.21
- NeoForge 1.20.6 (also supports 1.20.5)
- NeoForge 1.20.4
- MinecraftForge 1.20.1
-## Bug Fixes
+## *Experimental* Codec Config
-- Fix Kotlin DSL not being included
+This update brings a new experimental config API that utilises Mojang's Codec for (de)serialization.
+
+```java
+public class CodecConfig extends JsonFileCodecConfig/*or*/CodecConfig {
+ public static final CodecConfig INSTANCE = new CodecConfig();
+
+ public final ConfigEntry<Integer> myInt =
+ register("my_int", 0, Codec.INT);
+
+ public final ReadonlyConfigEntry<InnerCodecConfig> myInnerConfig =
+ register("my_inner_config", InnerCodecConfig.INSTANCE);
+
+ public CodecConfig() {
+ super(path);
+ }
+
+ void test() {
+ loadFromFile(); // load like this
+ saveToFile(); // save like this
+
+ // or if you just extend CodecConfig instead of JsonFileConfig:
+ JsonElement element = null;
+ this.decode(element, JsonOps.INSTANCE); // load
+ DataResult<JsonElement> encoded = this.encodeStart(JsonOps.INSTANCE); // save
+ }
+}
+```
+or in Kotlin...
+```kotlin
+object CodecConfig : JsonFileCodecConfig(path) {
+ val myInt by register<Int>(0, Codec.INT)
+
+ val myInnerConfig by register(InnerCodecConfig)
+
+ fun test() {
+ loadFromFile()
+ saveToFile()
+
+ // blah blah blah
+ }
+}
+```
+
+## Rewritten Kotlin DSL
+
+Completely rewrote the Kotlin DSL!
+
+```kotlin
+YetAnotherConfigLib("namespace") {
+ val category by categories.registering {
+ val option by rootOptions.registering<Int> {
+ controller = slider(range = 5..10)
+ binding(::thisProp, default)
+
+ val otherOption by categories["category"]["group"].futureRef<Boolean>()
+ otherOption.onReady { it.setAvailable(false) }
+ }
+
+ // translation key is generated automagically
+ val label by rootOptions.registeringLabel
+
+ val group by groups.registering {
+ val otherOption = options.register<Boolean>("otherOption") {
+ controller = tickBox()
+ }
+ }
+ }
+}
+```
+
+## Changes
+
+- Fix dropdown controllers erroneously showing their dropdown - Crendgrim
+- Make cancel/reset and undo buttons public for accessing
+- Add compatibility for 1.21