90% of ad revenue goes to creators. Go ad-free while supporting creators with Modrinth Plus. Subscribe today!

YetAnotherConfigLib 3.5.0 for MC 1.20.1

Changelog

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

Experimental Codec Config

This update brings a new experimental config API that utilises Mojang's Codec for (de)serialization.

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...

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!

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

Dependencies

Files

YetAnotherConfigLib-3.5.0+1.20.1-forge.jar(1.1 MiB) Primary Download

Project members

isxander

Owner

Details

Licensed LGPL-3.0-or-later
Published 2 years ago
Updated 22 days ago