Coder Social home page Coder Social logo

autoconfig's Introduction

autoconfig's People

Contributors

fourmisain avatar leo40git avatar magneticflux- avatar overlordsiii avatar sargunv avatar shedaniel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

autoconfig's Issues

Does not respect symbolic links (macOS)

I have many MultiMC instances, and I use symbolic links so the configuration is consistent between instances. Mods using this library fail to save their config with java.nio.file.FileAlreadyExistsException: /Applications/MultiMC.app/Contents/MacOS/instances/Fabric 1.17.0/.minecraft/config
The full stack trace (deobfuscated by Not Enough Crashes) is below

[10:04:50] [Render thread/ERROR]: Failed to save config 'class squeek.appleskin.ModConfig'
me.shedaniel.autoconfig.serializer.ConfigSerializer$SerializationException: java.nio.file.FileAlreadyExistsException: /Applications/MultiMC.app/Contents/MacOS/instances/Fabric 1.17.0/.minecraft/config
	at Not Enough Crashes deobfuscated stack trace.(1.17+build.13) ~[?:?]
	at me.shedaniel.autoconfig.serializer.JanksonConfigSerializer.serialize(JanksonConfigSerializer.java:65) ~[cloth-config-5.0.34-fabric.jar:?]
	at me.shedaniel.autoconfig.ConfigManager.save(ConfigManager.java:83) ~[cloth-config-5.0.34-fabric.jar:?]
	at me.shedaniel.autoconfig.ConfigManager.<init>(ConfigManager.java:54) ~[cloth-config-5.0.34-fabric.jar:?]
	at me.shedaniel.autoconfig.AutoConfig.register(AutoConfig.java:66) ~[cloth-config-5.0.34-fabric.jar:?]
	at squeek.appleskin.ModConfig.init(ModConfig.java:20) ~[appleskin-fabric-mc1.17-2.0.0.jar:?]
	at squeek.appleskin.AppleSkin.onInitializeClient(AppleSkin.java:12) ~[appleskin-fabric-mc1.17-2.0.0.jar:?]
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:47) ~[fabric-loader-0.11.6.jar:?]
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke(EntrypointUtils.java:33) ~[fabric-loader-0.11.6.jar:?]
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointClient.start(EntrypointClient.java:34) ~[fabric-loader-0.11.6.jar:?]
	at net.minecraft.client.MinecraftClient.redirect$zoi000$catchFabricInit(MinecraftClient:7064) ~[?:?]
	at net.minecraft.client.MinecraftClient.<init>(MinecraftClient:459) ~[?:?]
	at net.minecraft.client.main.Main.main(Main:179) [intermediary-minecraft-1.17-client.jar:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:567) ~[?:?]
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:234) [fabric-loader-0.11.6.jar:?]
	at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:153) [fabric-loader-0.11.6.jar:?]
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28) [fabric-loader-0.11.6.jar:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:567) ~[?:?]
	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196) [NewLaunch.jar:?]
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.listen(EntryPoint.java:143) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.main(EntryPoint.java:34) [NewLaunch.jar:?]
Caused by: java.nio.file.FileAlreadyExistsException: /Applications/MultiMC.app/Contents/MacOS/instances/Fabric 1.17.0/.minecraft/config
	at sun.nio.fs.UnixException.translateToIOException(UnixException.java:94) ~[?:?]
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106) ~[?:?]
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[?:?]
	at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:396) ~[?:?]
	at java.nio.file.Files.createDirectory(Files.java:694) ~[?:?]
	at java.nio.file.Files.createAndCheckIsDirectory(Files.java:801) ~[?:?]
	at java.nio.file.Files.createDirectories(Files.java:747) ~[?:?]
	at me.shedaniel.autoconfig.serializer.JanksonConfigSerializer.serialize(JanksonConfigSerializer.java:60) ~[cloth-config-5.0.34-fabric.jar:?]
	... 26 more

Custom Datatypes for lists don't get saved.

When editing a List of custom objects as shown below, they get parsed correctly, but when editing them in the GUI config they are not saved.

private final List<PairOfInts> complexList = Arrays.asList(new PairOfInts(0, 1), new PairOfInts(3, 7));

private static class PairOfInts {
        private int foo;
        private int bar;

        PairOfInts() {
            this(1, 2);
        }

        PairOfInts(int foo, int bar) {
            this.foo = foo;
            this.bar = bar;
        }
    }

BoundedDiscrete for Floats/Doubles

The option to render sliders for bounded floats/doubles would improve UX for my mod.

I have configs for RGBA values and just like in CSS, RGB values are between 0 and 255 while A is between 0.0 and 1.0. Currently only the RGB values can have sliders, or I have to change A into a 0-255 int.

Breaks when Carpet mod is installed when called by other mods

Just loops on launch, attempting to reload the resourcemanager (resource packs)

https://github.com/gnembon/fabric-carpet

This can be reproduced with: carpetmod+FabricAPI+autoconfig1u and some other mod that will trigger it.... slimeology is an easy one but quite a few others mods that don't even use autoconfig1u

[07:22:45] [Render thread/INFO]: OpenAL initialized. [07:22:45] [Render thread/INFO]: Sound engine started [07:22:45] [Render thread/INFO]: Created: 1024x1024x0 minecraft:textures/atlas/blocks.png-atlas [07:22:45] [Render thread/INFO]: Created: 256x128x0 minecraft:textures/atlas/signs.png-atlas [07:22:45] [Render thread/INFO]: Created: 1024x512x0 minecraft:textures/atlas/banner_patterns.png-atlas [07:22:45] [Render thread/INFO]: Created: 1024x512x0 minecraft:textures/atlas/shield_patterns.png-atlas [07:22:45] [Render thread/INFO]: Created: 256x256x0 minecraft:textures/atlas/chest.png-atlas [07:22:45] [Render thread/INFO]: Created: 512x256x0 minecraft:textures/atlas/beds.png-atlas [07:22:45] [Render thread/INFO]: Created: 512x256x0 minecraft:textures/atlas/shulker_boxes.png-atlas [07:22:45] [Render thread/INFO]: Caught error loading resourcepacks, removing all selected resourcepacks java.util.concurrent.CompletionException: java.lang.NoClassDefFoundError: Could not initialize class net.minecraft.class_5616 at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314) ~[?:?] at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319) ~[?:?] at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787) ~[?:?] at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) ~[?:?] at net.minecraft.class_4014.method_18365(class_4014.java:71) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_1255.execute(class_1255.java:101) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_4014.method_18367(class_4014.java:70) ~[intermediary-minecraft-1.17.1-client.jar:?] at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:568) ~[?:?] at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:780) ~[?:?] at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[?:?] at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610) ~[?:?] at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:791) ~[?:?] at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) ~[?:?] at net.minecraft.class_4014.method_18365(class_4014.java:71) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_1255.execute(class_1255.java:101) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_4014.method_18367(class_4014.java:70) ~[intermediary-minecraft-1.17.1-client.jar:?] at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:568) ~[?:?] at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:780) ~[?:?] at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[?:?] at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:722) ~[?:?] at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) ~[?:?] at net.minecraft.class_4014.method_18365(class_4014.java:71) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_1255.execute(class_1255.java:101) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_4014.method_18367(class_4014.java:70) ~[intermediary-minecraft-1.17.1-client.jar:?] at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:568) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:710) ~[?:?] at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[?:?] at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:722) ~[?:?] at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) ~[?:?] at net.minecraft.class_4014.method_18365(class_4014.java:71) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_1255.execute(class_1255.java:101) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_4014.method_18367(class_4014.java:70) ~[intermediary-minecraft-1.17.1-client.jar:?] at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:568) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:710) ~[?:?] at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[?:?] at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:722) ~[?:?] at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) ~[?:?] at net.minecraft.class_4014.method_18365(class_4014.java:71) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_1255.execute(class_1255.java:101) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_4014.method_18367(class_4014.java:70) ~[intermediary-minecraft-1.17.1-client.jar:?] at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:568) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:710) ~[?:?] at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[?:?] at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:722) ~[?:?] at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) ~[?:?] at net.minecraft.class_4014.method_18365(class_4014.java:71) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_1255.execute(class_1255.java:101) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_4014.method_18367(class_4014.java:70) ~[intermediary-minecraft-1.17.1-client.jar:?] at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:568) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:710) ~[?:?] at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[?:?] at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:722) ~[?:?] at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) ~[?:?] at net.minecraft.class_4014.method_18365(class_4014.java:71) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_1255.execute(class_1255.java:101) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_4014.method_18367(class_4014.java:70) ~[intermediary-minecraft-1.17.1-client.jar:?] at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:568) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:710) ~[?:?] at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[?:?] at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:722) ~[?:?] at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) ~[?:?] at net.minecraft.class_4014.method_18365(class_4014.java:71) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_1255.execute(class_1255.java:101) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_4014.method_18367(class_4014.java:70) ~[intermediary-minecraft-1.17.1-client.jar:?] at java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:568) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:710) ~[?:?] at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[?:?] at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:722) ~[?:?] at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) ~[?:?] at com.mojang.blaze3d.systems.RenderSystem.replayQueue(RenderSystem.java:179) ~[intermediary-minecraft-1.17.1-client.jar:?] at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:166) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_1041.method_15998(class_1041.java:310) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_310.method_1523(class_310.java:1137) [intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_310.method_1514(class_310.java:728) [intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.client.main.Main.main(Main.java:217) [intermediary-minecraft-1.17.1-client.jar:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:567) ~[?:?] at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:234) [fabric-loader-0.11.6.jar:?] at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:153) [fabric-loader-0.11.6.jar:?] at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28) [fabric-loader-0.11.6.jar:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:567) ~[?:?] at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:210) [NewLaunch.jar:?] at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:245) [NewLaunch.jar:?] at org.multimc.EntryPoint.listen(EntryPoint.java:143) [NewLaunch.jar:?] at org.multimc.EntryPoint.main(EntryPoint.java:34) [NewLaunch.jar:?] Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.minecraft.class_5616 at net.minecraft.class_824.method_14491(class_824.java:119) ~[intermediary-minecraft-1.17.1-client.jar:?] at net.minecraft.class_4013.method_29490(class_4013.java:15) ~[intermediary-minecraft-1.17.1-client.jar:?] at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:783) ~[?:?] ... 94 more [07:22:45] [Render thread/INFO]: Reloading ResourceManager: Default, Fabric Mods (Fabric Renderer API (v1), Fabric Key Bindings (v0), Fabric Loader, Fabric Transfer API (v1), Fabric Structure API (v1), Fabric Containers (v0), Fabric Dimensions API (v1), Fabric Object Builder API (v1), Fabric Game Rule API (v1), Fabric API Base, Fabric Rendering Data Attachment (v1), Fabric Textures (v0), Fabric Rendering Fluids (v1), Fabric BlockRenderLayer Registration (v1), Fabric Lifecycle Events (v1), Fabric Renderer Registries (v1), Fabric Loot Tables (v1), Fabric API, Carpet Mod, Fabric Particles (v1), Fabric Networking (v0), Slimeology, Fabric API Lookup API (v1), Fabric Networking Block Entity (v0), Fabric Screen Handler API (v1), Fabric Command API (v1), Fabric Screen API (v1), Fabric Tool Attribute API (v1), Fabric Renderer - Indigo, Fabric Item API (v1), Fabric Events Interaction (v0), Fabric Crash Report Info (v1), Fabric Entity Events (v1), Fabric Rendering (v0), Fabric Key Binding API (v1), Fabric Rendering (v1), Fabric Resource Loader (v0), Auto Config v1 Updated, Fabric Content Registries (v0), Fabric Tag Extensions (v0), Fabric Biome API (v1), Fabric Commands (v0), Fabric Registry Sync (v0), Fabric Mining Levels (v0), Fabric Networking API (v1), Fabric Events Lifecycle (v0), Fabric Item Groups (v0), Fabric Models (v0), Fabric Object Builders (v0))

[Feature Request] Localization Keys are WAY Too Long

As it is now, localization keys for config entries are absurdly long.

I request one or more of the following options to be added for developers:

  • An annotation to disable the text.autoconfig. part of the key for any or all entries in a config.
  • An annotation to override localization keys for config entries, providing literal text or one's own localization key as a replacement
  • An auto-generation tool for language JSON file templates

Thank you.
Sincerely,
A concerned user with hundreds of options to cover in her config

Some entries don't save to the config file using AutoConfig

my AutoConfig code :

@Config(name = AdbMain.ADB_NAMESPACE)
@Background(value = AdbMain.ADB_NAMESPACE + ":textures/gui/config_background.png")
public class AdbAutoConfig implements ConfigData {

    public enum StructureVoidRenderMode {
        PARTICLE,
        BOX_OUTLINE;
    }

    @Tooltip(count = 11)
    @EnumHandler(option = EnumHandler.EnumDisplayOption.BUTTON)
    public StructureVoidRenderMode struct_void_render = StructureVoidRenderMode.PARTICLE;

    @CollapsibleObject(startExpanded = true)
    public static StructVoidBoxColor box_color = new StructVoidBoxColor();

    public static class StructVoidBoxColor {
        @BoundedDiscrete(min = 0, max = 255)
        public int box_color_red = 64;

        @BoundedDiscrete(min = 0, max = 255)
        public int box_color_green = 255;

        @BoundedDiscrete(min = 0, max = 255)
        public int box_color_blue = 230;
    }
}

and the serializer I use from my Mod's main class :

[ ... ]
@Override
public void onInitialize() {
	AutoConfig.register(AdbAutoConfig.class, GsonConfigSerializer::new);
}

None of the values set to box_color in GUI are ever saved to the file at all on my end, despite everything I tried.
Could I get any help if I did anything wrong ?
Or if I didn't, how long would it take to fix it ?

Setting transparent backgrounds

We have a way to set the background for the config screen as a whole and for specific categories... but we can't use this to set the background to be transparent.

Enum List TypeProvider

Is it possible to have a list of enum constants? For ex List. If not, could this be added? or is there a way to do this with custom gui handlers?
I'm trying to allow the user to select multiple enum constants, similar to a checkbox's functionality.

Subclass replaced with null

In one of the categories of my config there is an entry consisting of a custom class that I would like to pass a parameter to:

public Boolean enabled = true;

@Comment("An angel block (a block you can place in mid-air)")
@ConfigEntry.Gui.CollapsibleObject
public AngelBlock angelBlock = new AngelBlock(enabled);

public static class AngelBlock {
    public AngelBlock(boolean enabled) {
        this.enabled = enabled;
    }
    public Boolean enabled = true;
    @Comment("The distance to place the block at when placed in mid-air")
    @ConfigEntry.BoundedDiscrete(max = 10, min = 0)
    public Integer placeDistance = 3;
}

The config can be set from within the game and is properly serialized but when I restart the game and read the config the angelBlock field gets replaced with null, causing a NPE in my code and making the field practically useless as I would have to reset it on every restart.
When I remove the parameter and the initializer in the AngelBlock config class it works again

Add option to save config in `world/serverconfig`

As the title says, I'd like to see a possibility to partition the server part of the config into world/serverconfig. E.g.:

config/MyMod-common.toml
config/MyMod-client.toml
saves/worldname/serverconfig/MyMod-server.toml

Config break using JanksonConfigSerializer

Using the JanksonConfigSerializer if a config file is not present it generate the file correctly. If, instead, a configuration is already present(like a second run) the entries generated by inner classes(in a ModConfig class) are all set to null and their fileds are removed.
Using GSON or TOML I not have this issue.

Saving after changing the config outside the ConfigScreen

I was unable to find a way to save the config after changing it via a hotkey outside of the settingsmenu

To make it save I used

(ConfigManager<ModConfig>) AutoConfig.getConfigHolder(ModConfig.class).save();

But I am relying on the internals of AutoConfig there which I would like to avoid.

Something like getConfigManager or having save in the ConfigHolder interface would be great for that, if this is something you would accept I could also Implement this as a pull request.

lil issue.

This is printed so many times, please do something about it.

[23:57:26] [ForkJoinPool-1-worker-6/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:

  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:26] [ForkJoinPool-1-worker-5/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:26] [ForkJoinPool-1-worker-7/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:26] [ForkJoinPool-1-worker-5/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:26] [ForkJoinPool-1-worker-2/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:26] [ForkJoinPool-1-worker-5/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:26] [ForkJoinPool-1-worker-3/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:26] [ForkJoinPool-1-worker-1/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:26] [ForkJoinPool-1-worker-3/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:26] [ForkJoinPool-1-worker-2/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:26] [ForkJoinPool-1-worker-1/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:26] [ForkJoinPool-1-worker-1/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:27] [ForkJoinPool-1-worker-4/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:27] [ForkJoinPool-1-worker-2/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:27] [ForkJoinPool-1-worker-6/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:27] [ForkJoinPool-1-worker-4/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:27] [ForkJoinPool-1-worker-4/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:27] [ForkJoinPool-1-worker-7/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:27] [ForkJoinPool-1-worker-1/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:27] [ForkJoinPool-1-worker-1/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:27] [ForkJoinPool-1-worker-5/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:27] [ForkJoinPool-1-worker-6/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:27] [ForkJoinPool-1-worker-6/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:27] [ForkJoinPool-1-worker-1/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [23:57:27] [ForkJoinPool-1-worker-4/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14

Unsupported root entry §schema at line 2 column 14

I keep getting the following warnings which do not stop me from starting the game. I'm launching it through MultiMC 5 - Version 0.6.11-1430. Fabric version 0.6.1.51. Autoconfig version 3.3.1.

[10:14:23] [main/INFO]: Loading for game Minecraft 1.16.4
[10:14:23] [ForkJoinPool-1-worker-3/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
...
[10:14:23] [ForkJoinPool-1-worker-6/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
- Unsupported root entry "$schema" at line 2 column 14
...
[10:14:23] [ForkJoinPool-1-worker-4/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
- Unsupported root entry "$schema" at line 2 column 14
[10:14:23] [ForkJoinPool-1-worker-1/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
- Unsupported root entry "$schema" at line 2 column 14

In case it's relevant, the ellipsis marks above are similar warnings related to cardinal components. With those the erroneous root entry is "side."

PartitioningSerializer is incompatible with Kotlin classes with companion objects

I'm trying to use AutoConfig for a mod written in Kotlin. I'm wrapping a custom kotlinx.serialization serializer with a PartitioningSerializer, but the mod fails to load due to the companion object the kotlinx compiler plugin generates. The PartitioningSerializer class sees the static "Companion" field as a module, with no way to mark it as excluded.

When I have something like this for my config classes:

@AutoConfig(name = "mod")
@Serializable
data class Config(
    @TransitiveObject
    @Category("sectionA")
    override val sectionA: SectionAConfig = SectionAConfig(),
    @TransitiveObject
    @Category("sectionB")
    override val sectionB: SectionBConfig  = SectionBConfig()
)

@Config(name = "sectionA")
@Serializable
data class SectionAConfig(
    var sectionATestField: Long = -1
)

@Config(name = "sectionB")
@Serializable
data class SectionBConfig(
    var sectionBTestField: Boolean = true
)

I get a RuntimeException with the message: Invalid module: public static final mod.package.Config$Companion mod.package.Config.Companion. If this was Java, I could annotate this field with @ConfigEntry.Gui.Excluded, but this can only apply to a field, which I don't have access to from Kotlin. I either cannot use Kotlin's serialization plugin, or cannot use AutoConfig's PartitioningSerializer and instead must make my own.

I'm not sure why static fields would be included by default. Is this behavior intended?

I've attached a full crash log. The class names are slightly different from above, CoreConfig is the root config that has this issue.

crash-2021-12-17_20.11.47-client.txt

Deprecated ModMenu Stuff

This is put in logs:

[main/WARN]: WARNING! Mod autoconfigtoml is only using deprecated 'modmenu:api' custom value! This will be removed in 1.18 snapshots, so ask the author of this mod to support the new API.

[main/WARN]: WARNING! Mod autoconfig1u is only using deprecated 'modmenu:api' custom value! This will be removed in 1.18 snapshots, so ask the author of this mod to support the new API.

Modrinth Availability

It would be nice to have this mod available on Modrinth, an alternative to Curseforge. Their API is much more open, allowing for better 3rd party tools for server hosting, as well as 3rd party clients, and better distribution of modpacks.

Details for config files (not GUI) in the docs plzzz

The current documentation seems to mention too few about config files. It's clear that we are using AutoConfig for creating configurations, not for just creating configuration GUIs. In my case, I was trying to create a multi-line comment for an entry in my mod's config file (not GUI!!!). I went through your whole wiki, only to find a @Comment annotation to create single-line comments in config files. There's literally NOTHING else mentioned about a config file, except for some user saving stuffs when interacting with a config GUI.

I finally figured out - on my own, with no help from the doc - that you can use a \n in the @Comment string to auto generate a multiline comment. Since it's a rare case to use a \n to split the text in Minecraft environment (or why is there the Iceberg mod? ), the solution didn't come to my mind that early. Before I found this very solution, I tried lots of workarounds like multiple @Comment annotations (compilation error of course). I even tried the @ConfigEntry.Gui.Tooltip annotation, and you can imagine how disappointed I was to find out it deals nothing with comments in config files. I think these are all important details that need to be added to the doc, unless you finally decide to change that introduction from Annotation based API for mod configs to Annotation based API for mod config GUIs.

Crash when trying to read config

When I try to read my config with
ModConfig config = AutoConfig.getConfigHolder(ModConfig.class).getConfig();

I get a crash when trying to start Minecraft log

I do register the config in my mod's onInitialize method.

AutoConfig.register(ModConfig.class, Toml4jConfigSerializer::new);

[Mod conflict] REI

MC 1.16.4; Fabric loader 0.10.8; Fabric API 0.28; REI 5.8.8; Auto Config v1 Updated 3.2.2.

latest.log:

[11:03:53] [main/INFO]: Loading for game Minecraft 1.16.4
[11:03:53] [ForkJoinPool-1-worker-4/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
- Unsupported root entry "$schema" at line 2 column 14
[11:03:53] [main/INFO]: [FabricLoader] Loading 51 mods: [email protected]+6a2618f53a, [email protected]+6a2618f53a, [email protected], [email protected], [email protected]+f1d8af063a, [email protected]+a03e98793a, [email protected]+6a2618f53a, [email protected]+9a6c75813a, [email protected]+a4467d2a3a, [email protected]+ab87788d3a, [email protected]+6a2618f53a, [email protected]+6a2618f53a, [email protected]+6a2618f53a, [email protected]+6a2618f53a, [email protected]+ffb68a873a, [email protected]+6a2618f53a, [email protected]+6a2618f53a, [email protected]+1.16, [email protected]+6a2618f53a, [email protected]+a03e98793a, [email protected], [email protected], [email protected]+6a2618f53a, [email protected]+a03e98793a, [email protected], [email protected]+6a2618f53a, [email protected]+6a2618f53a, [email protected], [email protected]+6a2618f53a, [email protected], [email protected], [email protected]+6a2618f53a, [email protected]+6a2618f53a, [email protected]+b7f9825d3a, [email protected]+6a2618f53a, [email protected]+6a2618f53a, [email protected]+730711c63a, [email protected], [email protected], [email protected]+1944f3e03a, [email protected]+e77439c73a, [email protected]+e77439c73a, [email protected]+2e23b97c3a, [email protected]+a03e98793a, [email protected]+6a2618f53a, [email protected]+6a2618f53a, [email protected]+4358fbc63a, [email protected]+6a2618f53a, [email protected]+6a2618f53a, [email protected]+6a2618f53a, [email protected]+6a2618f53a
[11:03:53] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.2 Source=file:/home/k0rr/.local/share/multimc/libraries/net/fabricmc/sponge-mixin/0.8.2+build.24/sponge-mixin-0.8.2+build.24.jar Service=Knot/Fabric Env=CLIENT
[11:03:57] [main/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[11:03:59] [main/INFO]: Setting user: _K0RR_
[11:04:00] [main/INFO]: [Indigo] Registering Indigo renderer!

crash report:

---- Minecraft Crash Report ----
// I bet Cylons wouldn't have this problem.

Time: 12/11/20 11:04 AM
Description: Initializing game

java.lang.RuntimeException: Could not execute entrypoint stage 'client' due to errors, provided by 'roughlyenoughitems-runtime'!
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:53)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke(EntrypointUtils.java:36)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointClient.start(EntrypointClient.java:33)
	at net.minecraft.class_310.<init>(class_310.java:437)
	at net.minecraft.client.main.Main.main(Main.java:177)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:224)
	at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:141)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:27)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196)
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231)
	at org.multimc.EntryPoint.listen(EntryPoint.java:143)
	at org.multimc.EntryPoint.main(EntryPoint.java:34)
Caused by: java.lang.NoSuchMethodError: me.sargunvohra.mcmods.autoconfig1u.ConfigHolder.save()V
	at me.shedaniel.rei.impl.ConfigManagerImpl.saveConfig(ConfigManagerImpl.java:198)
	at me.shedaniel.rei.impl.ConfigManagerImpl.<init>(ConfigManagerImpl.java:177)
	at me.shedaniel.rei.RoughlyEnoughItemsCore.onInitializeClient(RoughlyEnoughItemsCore.java:373)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:50)
	... 19 more


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Render thread
Stacktrace:
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:53)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke(EntrypointUtils.java:36)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointClient.start(EntrypointClient.java:33)
	at net.minecraft.class_310.<init>(class_310.java:437)

-- Initialization --
Details:
Stacktrace:
	at net.minecraft.client.main.Main.main(Main.java:177)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:224)
	at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:141)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:27)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196)
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231)
	at org.multimc.EntryPoint.listen(EntryPoint.java:143)
	at org.multimc.EntryPoint.main(EntryPoint.java:34)

-- System Details --
Details:
	Minecraft Version: 1.16.4
	Minecraft Version ID: 1.16.4
	Operating System: Linux (amd64) version 5.4.70-amd64-desktop
	Java Version: 1.8.0_275, BellSoft
	Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), BellSoft
	Memory: 8126409416 bytes (7749 MB) / 8589934592 bytes (8192 MB) up to 8589934592 bytes (8192 MB)
	CPUs: 8
	JVM Flags: 8 total; -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=51 -XX:G1HeapRegionSize=32M -Xms8192m -Xmx8192m
	Fabric Mods: 
		autoconfig1u: Auto Config v1 Updated 3.2.2
		cloth-basic-math: Cloth Basic Math 0.5.1
		cloth-client-events-v0: Cloth Client Events v0 1.4.5
		cloth-config2: Cloth Config v4 4.8.3
		fabric: Fabric API 0.28.0+1.16
		fabric-api-base: Fabric API Base 0.2.0+ab87788d3a
		fabric-biome-api-v1: Fabric Biome API (v1) 3.1.0+2e23b97c3a
		fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.4+6a2618f53a
		fabric-command-api-v1: Fabric Command API (v1) 1.0.9+6a2618f53a
		fabric-commands-v0: Fabric Commands (v0) 0.2.0+6a2618f53a
		fabric-containers-v0: Fabric Containers (v0) 0.1.9+a03e98793a
		fabric-content-registries-v0: Fabric Content Registries (v0) 0.2.0+e77439c73a
		fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.1.2+b7f9825d3a
		fabric-dimensions-v1: fabric-dimensions-v1 2.0.1+9a6c75813a
		fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.4.1+6a2618f53a
		fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.0+6a2618f53a
		fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.3+a4467d2a3a
		fabric-item-api-v1: Fabric Item API (v1) 1.2.0+6a2618f53a
		fabric-item-groups-v0: Fabric Item Groups (v0) 0.2.1+6a2618f53a
		fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.1+730711c63a
		fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.0+6a2618f53a
		fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 1.2.0+ffb68a873a
		fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.0.1+6a2618f53a
		fabric-mining-levels-v0: Fabric Mining Levels (v0) 0.1.2+6a2618f53a
		fabric-models-v0: Fabric Models (v0) 0.1.1+6a2618f53a
		fabric-networking-api-v1: Fabric Networking API (v1) 1.0.0+4358fbc63a
		fabric-networking-blockentity-v0: Fabric Networking Block Entity (v0) 0.2.7+a03e98793a
		fabric-networking-v0: Fabric Networking (v0) 0.3.0+a03e98793a
		fabric-object-builder-api-v1: Fabric Object Builder API (v1) 1.9.2+6a2618f53a
		fabric-object-builders-v0: Fabric Object Builders (v0) 0.7.1+6a2618f53a
		fabric-particles-v1: fabric-particles-v1 0.2.2+6a2618f53a
		fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.7.2+a03e98793a
		fabric-renderer-api-v1: Fabric Renderer API (v1) 0.3.3+6a2618f53a
		fabric-renderer-indigo: Fabric Renderer - Indigo 0.4.3+6a2618f53a
		fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 2.2.0+6a2618f53a
		fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.1.4+6a2618f53a
		fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 0.1.12+6a2618f53a
		fabric-rendering-v0: Fabric Rendering (v0) 1.1.1+6a2618f53a
		fabric-rendering-v1: Fabric Rendering (v1) 1.4.0+6a2618f53a
		fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.3.2+1944f3e03a
		fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.1.0+6a2618f53a
		fabric-structure-api-v1: Fabric Structure API (v1) 1.1.1+f1d8af063a
		fabric-tag-extensions-v0: Fabric Tag Extensions (v0) 1.1.0+e77439c73a
		fabric-textures-v0: Fabric Textures (v0) 1.0.5+6a2618f53a
		fabric-tool-attribute-api-v1: Fabric Tool Attribute API (v1) 1.2.5+6a2618f53a
		fabricloader: Fabric Loader 0.10.8
		minecraft: Minecraft 1.16.4
		roughlyenoughitems: Roughly Enough Items 5.8.8
		roughlyenoughitems-api: REI (API) 5.8.8
		roughlyenoughitems-default-plugin: REI (Default Plugin) 5.8.8
		roughlyenoughitems-runtime: REI (Runtime) 5.8.8
	Launched Version: MultiMC5
	Backend library: LWJGL version 3.2.2 build 10
	Backend API: NO CONTEXT
	GL Caps: 
	Using VBOs: Yes
	Is Modded: Definitely; Client brand changed to 'fabric'
	Type: Client (map_client.txt)
	CPU: <unknown>

Getting resolution errors with AutoConfig

package in.techpro424.groupmessages.config;

import me.shedaniel.autoconfig.ConfigData;
import me.shedaniel.autoconfig.annotation.Config;

@Config(name = "group-messages")
public class AutoConfig implements ConfigData {

    boolean toggleA = true;
    boolean toggleB = false;
    
    @Config.Gui.CollapsibleObject
    InnerStuff stuff = new InnerStuff();
    
    @Config.Gui.Excluded
    InnerStuff invisibleStuff = new InnerStuff();
    
    static class InnerStuff {
        int a = 0;
        int b = 1;
    }
    
}

Getting an error saying that Config.Gui.CollapsibleObject cannot be resolved to a type and also Config.Gui.Excluded cannot be resolved to a type

Crashing in 1.19.3

Every time I click the options button my game crashes. This only occurs in 1.19.3. I have the Cloth Config mod as well but it doesn't make a difference.

Floats or doubles in list-type config fields blank out in the screen when they would be formatted in scientific notation

I'm not sure whether this is an issue with AutoConfig or Cloth Config, but if a field that would display using FloatListListEntry or DoubleListListEntry contains a number that would be formatted using scientific notation, then the config screen will have the field for that number blanked out.

To reproduce: Add a field to a config class:

public List<Double> dummy = Collections.singletonList(1e-5);

Then open the config screen for the mod.

Expected behavior: The list widget for dummy shows a single entry showing 1E-5.

Actual: The entry under dummy is blank.

Implement TypeProvider for lists

Another provider must be registered in DefaultGuiProviders. Right now, it can use the existing Cloth Config lists:

    IntListBuilder startIntList(String var1, List<Integer> var2);

    LongListBuilder startLongList(String var1, List<Long> var2);

    FloatListBuilder startFloatList(String var1, List<Float> var2);

    DoubleListBuilder startDoubleList(String var1, List<Double> var2);

    StringListBuilder startStrList(String var1, List<String> var2);

I hope to add support for object lists in the future.

Add a method returning a ConfigScreenFactory (mod menu integration)

Currently, the method used to generate a cloth config screen and integrate it with mod menu returns an <Supplier<Screen>>, and we can only use it in a depecrated mod menu api method, that is meant to be removed in 1.16 snapshots:

public Optional<Supplier<Screen>> getConfigScreen(Screen screen) {
    return Optional.of(AutoConfig.getConfigScreen(Config.class, screen));
}

Would be nice to have a method returning a ConfigScreenFactory, to be able to use this method:

public ConfigScreenFactory<?> getModConfigScreenFactory() {}

Error with custom list

Added

@Gui.CollapsibleObject
    public ArrayList<Group> groups = new ArrayList<Group>();

to my config class,
and I get this error: https://gist.github.com/TechPro424/196d9e0542eed2ba557d32141143ab9e

Here is the Group class that I am using in the ArrayList

package in.techpro424.groupmessages.config;

import java.util.ArrayList;

public class Group {
    String name =  "group1";
    public ArrayList<String> playerNames = new ArrayList<String>();

    public Group(String name, ArrayList<String> arrayList) {
        this.name = name;
        this.playerNames = arrayList;
    }
}

Please help me out

Error on launch latest.log

I get this error on launch everyone is saying its got to do with autoconfig

`[19:23:01] [main/INFO]: Loading for game Minecraft 1.16.3
[19:23:02] [ForkJoinPool-1-worker-2/WARN]: The mod "libcd" contains invalid entries in its mod json:

  • Unsupported root entry "licence" at line 9 column 12
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "cardinal-components-entity" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: The mod "cardinal-components-base" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: The mod "libcd" contains invalid entries in its mod json:
  • Unsupported root entry "licence" at line 1 column 190
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-1/WARN]: The mod "cardinal-components-base" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-1/WARN]: The mod "cardinal-components-entity" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "cardinal-components-item" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: The mod "cardinal-components-base" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: The mod "cardinal-components-util" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-4/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-4/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-3/WARN]: "fabric.mod.json" from mod dawn did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: The mod "cardinal-components-entity" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-1/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-1/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: Non-Fabric mod JAR at "C:\Users\iowna\AppData\Roaming.minecraft\mods\gottaclimbfast-mc1.16-1.1-forge.jar", ignoring
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-1/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-1/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-3/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-3/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: "fabric.mod.json" from mod nookbuild did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "cardinal-components" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 9
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "cardinal-components-base" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "cardinal-components-block" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: The mod "cardinal-components-util" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-1/WARN]: The mod "cardinal-components-scoreboard" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-2/WARN]: The mod "cardinal-components-world" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-1/WARN]: The mod "cardinal-components-item" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: The mod "cardinal-components-level" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "cardinal-components-chunk" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-3/WARN]: The mod "cardinal-components-entity" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-3/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-3/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "shulkerboxtooltip" contains invalid entries in its mod json:
  • Unsupported root entry "licence" at line 8 column 12
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-1/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-1/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-1/WARN]: The mod "cardinal-components-base" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: The mod "cardinal-components-entity" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: "fabric.mod.json" from mod wild_explorer did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-1/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: The mod "cardinal-components-base" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-1/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-6/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: The mod "cardinal-components-entity" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-4/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
  • Unsupported root entry "$schema" at line 2 column 14
    [19:23:02] [ForkJoinPool-1-worker-4/WARN]: "fabric.mod.json" from mod autoconfig1u did not have "schemaVersion" as first field.
    [19:23:02] [ForkJoinPool-1-worker-7/WARN]: The mod "cardinal-components-base" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [ForkJoinPool-1-worker-5/WARN]: The mod "cardinal-components-entity" contains invalid entries in its mod json:
  • Unsupported root entry "side" at line 8 column 11
    [19:23:02] [main/WARN]: Warnings were found!
  • Mod 'EasierVillagerTrading' (easiervillagertrading) recommends version 1.1.7 or later of mod modupdater, which is missing!
    • You must install version 1.1.7 or later of modupdater.
  • Conflicting versions found for fabric-networking-v0: used 0.1.10+e00ecb5f4e, also found 0.1.10+e00ecb5fa7, 0.1.10+e00ecb5f95
  • Mod 'StepUp' (stepup) recommends version 1.1.7 or later of mod modupdater, which is missing!
    • You must install version 1.1.7 or later of modupdater.
  • Mod 'Crafting Pad' (craftingpad) recommends version 1.1.7 or later of mod modupdater, which is missing!
    • You must install version 1.1.7 or later of modupdater.
      [19:23:02] [main/INFO]: [FabricLoader] Loading 224 mods: [email protected], [email protected], [email protected], [email protected]+build.213, [email protected], [email protected], [email protected], [email protected], [email protected]+f8ac1db295, [email protected]+9f0fb4b895, [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]+1.16.3, [email protected], [email protected], [email protected]+e00ecb5f4e, [email protected], [email protected], [email protected], [email protected], [email protected]+build.31, [email protected]+build.7, [email protected], [email protected], [email protected], [email protected], [email protected]+b7f9825d95, [email protected], [email protected]+mc.1.16.2, [email protected], [email protected]+mc1.16.2-pre1, [email protected]+730711c695, [email protected], [email protected], [email protected]+1.16.3, [email protected]+mc.1.16.2, [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]+build.24, [email protected]+1.16.2, [email protected]+1.16.3, [email protected], [email protected]+f8ac1db295, [email protected], [email protected], [email protected]+c270b09895, [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]+f8ac1db295, [email protected], [email protected], [email protected], [email protected]+74cc3b2095, [email protected], [email protected], [email protected]+432ea18895, [email protected], [email protected], [email protected]+1.16.2, [email protected], [email protected], [email protected], [email protected]+j1.2.0, [email protected]+5ce5339895, [email protected]+1.16.3, [email protected], [email protected], [email protected]+2b46237995, [email protected], [email protected], [email protected]+1.16.3, [email protected], [email protected]+f8ac1db295, [email protected]+f8ac1db295, [email protected], [email protected], [email protected], [email protected]+ac8e8c5995, blue_endless_jankson@+, [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]+build.35-1.16.3, [email protected]+16acbe5b95, [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]+3fa9f7c595, [email protected]+1.16.1, [email protected], [email protected], [email protected], [email protected], bowinfinityfix@rv9, [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]_01, [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]+c6a8ea8995, [email protected], [email protected], [email protected]+build.412-1.16, [email protected], [email protected], [email protected]+8724984195, [email protected], [email protected], [email protected], [email protected], [email protected]+2b46237995, [email protected], [email protected], [email protected], [email protected]+f8ac1db295, [email protected], [email protected]+build.1, [email protected], [email protected], [email protected], [email protected]+facf3bbf95, [email protected], [email protected]+arne.1, [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]+1.16.x, [email protected], [email protected]+52d3083695, [email protected]+9f0fb4b895, [email protected], [email protected], [email protected]+b764ce9995, [email protected]+1.16.3, [email protected]+438f963695, [email protected]+f8ac1db295, [email protected]+1.16.3, [email protected], [email protected]+2b46237995, [email protected], [email protected]+1.16.3, [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]+045df74f95, [email protected]+1.16.3, [email protected], [email protected], [email protected], [email protected], [email protected]+build.39, [email protected], [email protected]+eae12eb895, [email protected], [email protected], [email protected]+f8ac1db295, [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]+build.4, [email protected]+f8ac1db295, [email protected], [email protected], [email protected]+fb0d9b0e95, [email protected], [email protected], [email protected], [email protected]+b50ffc7b95, [email protected]+1.16.2, [email protected], [email protected]+1.16.3, [email protected], [email protected], [email protected]+f8ac1db295, [email protected], [email protected], [email protected], [email protected], [email protected]+059ea86695, [email protected], [email protected], [email protected]+c29459ab95, [email protected], [email protected], [email protected]+1.16.2, [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]+432ea18895, [email protected]
      [19:23:02] [main/WARN]: Mod blue_endless_jankson (+) does not respect SemVer - comparison support is limited.
      [19:23:02] [main/WARN]: Mod enhancedcraft (beta-1.3.1) does not respect SemVer - comparison support is limited.
      [19:23:02] [main/WARN]: Mod bowinfinityfix (rv9) does not respect SemVer - comparison support is limited.
      [19:23:02] [main/WARN]: Mod dankstorage (1.8b-1.16.3) does not respect SemVer - comparison support is limited.
      [19:23:02] [main/WARN]: Mod fabrication (1.0.1_01) does not respect SemVer - comparison support is limited.
      [19:23:02] [main/WARN]: Mod bssentials (3.x) does not respect SemVer - comparison support is limited.
      [19:23:02] [main/WARN]: Mod allstackable (1.2.4.2) uses more dot-separated version components than SemVer allows; support for this is currently not guaranteed.
      [19:23:03] [main/INFO]: no good? no, this man is definitely up to evil.
      [19:23:04] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.2 Source=file:/C:/Users/iowna/AppData/Roaming/.minecraft/libraries/net/fabricmc/sponge-mixin/0.8.2+build.24/sponge-mixin-0.8.2+build.24.jar Service=Knot/Fabric Env=CLIENT
      [19:23:04] [main/INFO]: Loaded configuration file for Sodium (38 options available, 0 user overrides)
      [19:23:04] [main/INFO]: Sodium has been successfully discovered and initialized -- your game is now faster!
      [19:23:04] [main/INFO]: Loaded configuration file for Lithium: 64 options available, 0 override(s) found
      [19:23:04] [main/WARN]: Reference map 'MagicMirror-refmap.json' for MagicMirror.mixins.json could not be read. If this is a development environment you can ignore this message
      [19:23:04] [main/WARN]: @mixin target net/minecraft/class_3898$class_3208 is public in fabric-networking-v0.mixins.json:MixinEntityTracker and should be specified in value
      [19:23:05] [main/WARN]: @mixin target net/minecraft/class_327$class_5232 is public in phormat.mixins.json:TextRendererDrawerMixin and should be specified in value
      [19:23:05] [main/WARN]: @mixin target me/shedaniel/rei/server/RecipeFinder is public in nbtcrafting.compat.mixins.json:MixinREIRecipeFinder and should be specified in value
      [19:23:05] [main/INFO]: ? Profile: light
      [19:23:05] [main/INFO]: Starting discovery pass...
      [19:23:05] [main/INFO]: --
      [19:23:05] [main/INFO]: ? Considering MixinAllDamageIsFatal
      [19:23:05] [main/INFO]: ? Required config setting situational.all_damage_is_fatal is disabled by profile
      [19:23:05] [main/INFO]: ? Eligibility requirements not met. Skipping MixinAllDamageIsFatal
      [19:23:05] [main/INFO]: --
      [19:23:05] [main/INFO]: ? Considering MixinFurnaceMinecart
      [19:23:05] [main/INFO]: ?? Relevant config setting balance.hyperspeed_furnace_minecart is disabled by profile
      [19:23:05] [main/INFO]: ?? Relevant config setting minor_mechanics.furnace_minecart_any_fuel is disabled by profile
      [19:23:05] [main/INFO]: ? Relevant config setting fixes.furnace_minecart_pushing is enabled by profile
      [19:23:05] [main/INFO]: ? Eligibility requirements met. Applying MixinFurnaceMinecart
      [19:23:05] [main/INFO]: --
      [19:23:05] [main/INFO]: ? Considering MixinTridentEnchantmentsEntity
      [19:23:05] [main/INFO]: ?? Relevant config setting balance.tridents_accept_power is disabled by profile
      [19:23:05] [main/INFO]: ?? Relevant config setting balance.tridents_accept_sharpness is disabled by profile
      [19:23:05] [main/INFO]: ?? Relevant config setting balance.bedrock_impaling is disabled by profile
      [19:23:05] [main/INFO]: ? None of the relevant config settings are enabled
      [19:23:05] [main/INFO]: ? Eligibility requirements not met. Skipping MixinTridentEnchantmentsEntity
      [19:23:05] [main/INFO]: --
      [19:23:05] [main/INFO]: ? Considering MixinInfinityMending
      [19:23:06] [main/INFO]: ? Required config setting balance.infinity_mending is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinInfinityMending
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinShulkerBulletsDespawnOnDeath
      [19:23:06] [main/INFO]: ? Required config setting tweaks.shulker_bullets_despawn_on_death is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinShulkerBulletsDespawnOnDeath
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinTridentsAcceptPowerEnchantment
      [19:23:06] [main/INFO]: ? Required config setting balance.tridents_accept_power is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinTridentsAcceptPowerEnchantment
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinLegacyCommandSyntaxEntityType
      [19:23:06] [main/INFO]: ? Required config setting utility.legacy_command_syntax is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinLegacyCommandSyntaxEntityType
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinLessRestrictiveNoteBlocks
      [19:23:06] [main/INFO]: ? Required config setting tweaks.less_restrictive_note_blocks is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinLessRestrictiveNoteBlocks
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinEnhancedMoistnessPotion
      [19:23:06] [main/INFO]: ? Required config setting mechanics.enhanced_moistness is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinEnhancedMoistnessPotion
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinSyncAttackerYawEntity
      [19:23:06] [main/INFO]: ? Required config setting fixes.sync_attacker_yaw is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinSyncAttackerYawEntity
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinEnchantedItemLongDespawn
      [19:23:06] [main/INFO]: ? Required config setting tweaks.enchanted_item_long_despawn is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinEnchantedItemLongDespawn
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinFeatherFallingFiveEntity
      [19:23:06] [main/INFO]: ? Required config setting minor_mechanics.feather_falling_five is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinFeatherFallingFiveEntity
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinTridentsAcceptSharpnessEnchantment
      [19:23:06] [main/INFO]: ? Required config setting balance.tridents_accept_sharpness is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinTridentsAcceptSharpnessEnchantment
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinRepellingVoid
      [19:23:06] [main/INFO]: ? Required config setting weird_tweaks.repelling_void is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinRepellingVoid
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinCactusWalkDoesntHurtWithBoots
      [19:23:06] [main/INFO]: ? Required config setting tweaks.cactus_walk_doesnt_hurt_with_boots is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinCactusWalkDoesntHurtWithBoots
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinSoulSpeedDoesntDamageBoots
      [19:23:06] [main/INFO]: ? Required config setting balance.soul_speed_doesnt_damage_boots is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinSoulSpeedDoesntDamageBoots
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinTaggablePlayerLiving
      [19:23:06] [main/INFO]: ? Required config setting general.taggable_players is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinTaggablePlayerLiving
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinFireProtectionOnAnyItemEntity
      [19:23:06] [main/INFO]: ? Required config setting minor_mechanics.fire_protection_on_any_item is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinFireProtectionOnAnyItemEntity
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinDisableEquipSound
      [19:23:06] [main/INFO]: ? Required config setting weird_tweaks.disable_equip_sound is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinDisableEquipSound
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering client.MixinBetterPauseFreezingTexture
      [19:23:06] [main/INFO]: ? Required config setting fixes.better_pause_freezing is enabled by profile
      [19:23:06] [main/INFO]: ? Environment is correct (client)
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying client.MixinBetterPauseFreezingTexture
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering client.MixinLessAnnoyingFire
      [19:23:06] [main/INFO]: ? Required config setting tweaks.less_annoying_fire is enabled by profile
      [19:23:06] [main/INFO]: ? Environment is correct (client)
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying client.MixinLessAnnoyingFire
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering client.MixinItemRenderer
      [19:23:06] [main/INFO]: ? Relevant config setting utility.books_show_enchants is enabled by profile
      [19:23:06] [main/INFO]: ? Relevant config setting utility.tools_show_important_enchant is enabled by profile
      [19:23:06] [main/INFO]: ? Environment is correct (client)
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying client.MixinItemRenderer
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering client.MixinGhostChest
      [19:23:06] [main/INFO]: ? Environment is correct (client)
      [19:23:06] [main/INFO]: ? Required config setting tweaks.ghost_chest_woo_woo is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping client.MixinGhostChest
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering client.MixinSyncAttackerYawClientNetwork
      [19:23:06] [main/INFO]: ? Required config setting fixes.sync_attacker_yaw is enabled by profile
      [19:23:06] [main/INFO]: ? Environment is correct (client)
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying client.MixinSyncAttackerYawClientNetwork
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering client.MixinDisableEquipSound
      [19:23:06] [main/INFO]: ? Environment is correct (client)
      [19:23:06] [main/INFO]: ? Required config setting weird_tweaks.disable_equip_sound is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping client.MixinDisableEquipSound
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering client.MixinSyncAttackerYawClientEntity
      [19:23:06] [main/INFO]: ? Required config setting fixes.sync_attacker_yaw is enabled by profile
      [19:23:06] [main/INFO]: ? Environment is correct (client)
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying client.MixinSyncAttackerYawClientEntity
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering client.MixinLessRestrictiveNoteBlocksFactory
      [19:23:06] [main/INFO]: ? Required config setting tweaks.less_restrictive_note_blocks is enabled by profile
      [19:23:06] [main/INFO]: ? Environment is correct (client)
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying client.MixinLessRestrictiveNoteBlocksFactory
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering client.MixinEndermenDontSqueal
      [19:23:06] [main/INFO]: ? Environment is correct (client)
      [19:23:06] [main/INFO]: ? Required config setting weird_tweaks.endermen_dont_squeal is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping client.MixinEndermenDontSqueal
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering client.MixinUsePlayerListNameInTag
      [19:23:06] [main/INFO]: ? Required config setting fixes.use_player_list_name_in_tag is enabled by profile
      [19:23:06] [main/INFO]: ? Environment is correct (client)
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying client.MixinUsePlayerListNameInTag
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering client.MixinLessRestrictiveNoteBlocksParticle
      [19:23:06] [main/INFO]: ? Required config setting tweaks.less_restrictive_note_blocks is enabled by profile
      [19:23:06] [main/INFO]: ? Environment is correct (client)
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying client.MixinLessRestrictiveNoteBlocksParticle
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinTaggablePlayerHunger
      [19:23:06] [main/INFO]: ? Required config setting general.taggable_players is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinTaggablePlayerHunger
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinFireProtectionOnAnyItemEnchantment
      [19:23:06] [main/INFO]: ? Required config setting minor_mechanics.fire_protection_on_any_item is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinFireProtectionOnAnyItemEnchantment
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinNoteBlocksPlayOnLanding
      [19:23:06] [main/INFO]: ? Required config setting minor_mechanics.note_blocks_play_on_landing is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinNoteBlocksPlayOnLanding
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinCreepersExplodeWhenOnFire
      [19:23:06] [main/INFO]: ? Required config setting tweaks.creepers_explode_when_on_fire is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinCreepersExplodeWhenOnFire
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinSyncAttackerYawServerNetwork
      [19:23:06] [main/INFO]: ? Required config setting fixes.sync_attacker_yaw is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinSyncAttackerYawServerNetwork
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinNoteBlockTuning
      [19:23:06] [main/INFO]: ?? Relevant config setting minor_mechanics.exact_note_block_tuning is disabled by profile
      [19:23:06] [main/INFO]: ?? Relevant config setting minor_mechanics.note_block_notes is disabled by profile
      [19:23:06] [main/INFO]: ? Relevant config setting tweaks.reverse_note_block_tuning is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinNoteBlockTuning
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinObserversSeeEntities
      [19:23:06] [main/INFO]: ? Required config setting minor_mechanics.observers_see_entities is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinObserversSeeEntities
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinArrowsWorkInWater
      [19:23:06] [main/INFO]: ? Required config setting tweaks.arrows_work_in_water is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinArrowsWorkInWater
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinEnvironmentallyFriendlyCreepers
      [19:23:06] [main/INFO]: ? Required config setting balance.environmentally_friendly_creepers is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinEnvironmentallyFriendlyCreepers
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinTaggablePlayerServer
      [19:23:06] [main/INFO]: ? Required config setting general.taggable_players is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinTaggablePlayerServer
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinEndermenDontSqueal
      [19:23:06] [main/INFO]: ? Required config setting weird_tweaks.endermen_dont_squeal is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinEndermenDontSqueal
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinDisablePriorWorkPenalty
      [19:23:06] [main/INFO]: ? Required config setting balance.disable_prior_work_penalty is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinDisablePriorWorkPenalty
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinInfibows
      [19:23:06] [main/INFO]: ? Required config setting minor_mechanics.infibows is disabled by profile
      [19:23:06] [main/INFO]: ? Conflicting class net.parker8283.bif.BowInfinityFix is present
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinInfibows
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinTaggablePlayer
      [19:23:06] [main/INFO]: ? Required config setting general.taggable_players is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinTaggablePlayer
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinFeatherFallingFiveEnchantment
      [19:23:06] [main/INFO]: ? Required config setting minor_mechanics.feather_falling_five is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinFeatherFallingFiveEnchantment
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinTridentsInVoidReturn
      [19:23:06] [main/INFO]: ? Required config setting tweaks.tridents_in_void_return is enabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements met. Applying MixinTridentsInVoidReturn
      [19:23:06] [main/INFO]: --
      [19:23:06] [main/INFO]: ? Considering MixinEnhancedMoistnessEntity
      [19:23:06] [main/INFO]: ? Required config setting mechanics.enhanced_moistness is disabled by profile
      [19:23:06] [main/INFO]: ? Eligibility requirements not met. Skipping MixinEnhancedMoistnessEntity
      [19:23:06] [main/INFO]: Discovery pass complete. Found 47 candidates, enabled 24, skipped 23.
      [19:23:06] [main/WARN]: Could not download mappings, stack trace won't be deobfuscated
      [19:23:10] [main/WARN]: @reDIrect conflict. Skipping silkspawners.mixins.json:BlockItemMixin->@reDIrect::silkyspawners_writeTagToBlockEntity(Lnet/minecraft/class_2586;)Z with priority 1000, already redirected by miniextras.mixins.json:SpawnerNBT->@reDIrect::writeNBT(Lnet/minecraft/class_2586;)Z with priority 1000
      `

Add Cloth Config API as hard dependency?

I got bunch of crash when clicked on the correspond mod information, and here is the crash report:

---- Minecraft Crash Report ----
// Surprise! Haha. Well, this is awkward.

Time: 2020/08/04 23:56
Description: Rendering screen

java.lang.NoClassDefFoundError: me/shedaniel/clothconfig2/api/ConfigEntryBuilder
	at me.sargunvohra.mcmods.autoconfig1u.gui.DefaultGuiProviders.<clinit>(DefaultGuiProviders.java:36)
	at me.sargunvohra.mcmods.autoconfig1u.AutoConfig$ClientOnly.<clinit>(AutoConfig.java:81)
	at me.sargunvohra.mcmods.autoconfig1u.AutoConfig.getConfigScreen(AutoConfig.java:71)
	at technicianlp.reauth.integration.ModMenuIntegration.lambda$getModConfigScreenFactory$0(ModMenuIntegration.java:11)
	at io.github.prospector.modmenu.ModMenu.hasConfigScreenFactory(ModMenu.java:45)
	at io.github.prospector.modmenu.gui.ModsScreen$1.method_25394(ModsScreen.java:130)
	at net.minecraft.class_437.method_25394(class_437.java:81)
	at io.github.prospector.modmenu.gui.ModsScreen.method_25394(ModsScreen.java:256)
	at net.minecraft.class_757.method_3192(class_757.java:603)
	at net.minecraft.class_310.method_1523(class_310.java:1021)
	at net.minecraft.class_310.method_1514(class_310.java:654)
	at net.minecraft.client.main.Main.main(Main.java:215)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:192)
	at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:140)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26)
Caused by: java.lang.ClassNotFoundException: me.shedaniel.clothconfig2.api.ConfigEntryBuilder
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:161)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 19 more


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Render thread
Stacktrace:
	at me.sargunvohra.mcmods.autoconfig1u.gui.DefaultGuiProviders.<clinit>(DefaultGuiProviders.java:36)
	at me.sargunvohra.mcmods.autoconfig1u.AutoConfig$ClientOnly.<clinit>(AutoConfig.java:81)
	at me.sargunvohra.mcmods.autoconfig1u.AutoConfig.getConfigScreen(AutoConfig.java:71)
	at technicianlp.reauth.integration.ModMenuIntegration.lambda$getModConfigScreenFactory$0(ModMenuIntegration.java:11)
	at io.github.prospector.modmenu.ModMenu.hasConfigScreenFactory(ModMenu.java:45)
	at io.github.prospector.modmenu.gui.ModsScreen$1.method_25394(ModsScreen.java:130)
	at net.minecraft.class_437.method_25394(class_437.java:81)
	at io.github.prospector.modmenu.gui.ModsScreen.method_25394(ModsScreen.java:256)

-- Screen render details --
Details:
	Screen name: io.github.prospector.modmenu.gui.ModsScreen
	Mouse location: Scaled: (222, 233). Absolute: (668.000000, 700.000000)
	Screen size: Scaled: (640, 318). Absolute: (1920, 954). Scale factor of 3.000000
Stacktrace:
	at net.minecraft.class_757.method_3192(class_757.java:603)
	at net.minecraft.class_310.method_1523(class_310.java:1021)
	at net.minecraft.class_310.method_1514(class_310.java:654)
	at net.minecraft.client.main.Main.main(Main.java:215)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:192)
	at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:140)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26)

-- System Details --
Details:
	Minecraft Version: 1.16.1
	Minecraft Version ID: 1.16.1
	Operating System: Linux (amd64) version 5.4.0-42-generic
	Java Version: 14.0.1, Private Build
	Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Private Build
	Memory: 622283216 bytes (593 MB) / 1476395008 bytes (1408 MB) up to 2147483648 bytes (2048 MB)
	CPUs: 4
	JVM Flags: 8 total; -Xss1M -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
	Fabric Mods: 
		autoconfig1u: Auto Config v1 Updated 3.2.0-unstable
		fabric: Fabric API 0.16.2+build.385-1.16.1
		fabric-api-base: Fabric API Base 0.1.3+12a8474c02
		fabric-biomes-v1: Fabric Biomes (v1) 0.2.7+059ea86602
		fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.4+c6a8ea8902
		fabric-command-api-v1: Fabric Command API (v1) 1.0.8+5ce5339802
		fabric-commands-v0: Fabric Commands (v0) 0.2.0+52d3083602
		fabric-containers-v0: Fabric Containers (v0) 0.1.8+045df74f02
		fabric-content-registries-v0: Fabric Content Registries (v0) 0.1.9+059ea86602
		fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.1.2+b7f9825d02
		fabric-dimensions-v1: fabric-dimensions-v1 1.0.0+a71b305302
		fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.3.3+7066030f02
		fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.0+16acbe5b02
		fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.0+fe81e12502
		fabric-item-api-v1: Fabric Item API (v1) 1.0.0+16acbe5b02
		fabric-item-groups-v0: Fabric Item Groups (v0) 0.2.0+438f963602
		fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.1+f404f3be02
		fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.0+3fa9f7c502
		fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 1.2.0+e83e061c02
		fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.0.0+386eb69e02
		fabric-mining-levels-v0: Fabric Mining Levels (v0) 0.1.2+b764ce9902
		fabric-models-v0: Fabric Models (v0) 0.1.0+dfdb52d602
		fabric-networking-blockentity-v0: Fabric Networking Block Entity (v0) 0.2.5+b50ffc7b02
		fabric-networking-v0: Fabric Networking (v0) 0.1.10+e00ecb5f02
		fabric-object-builder-api-v1: Fabric Object Builder API (v1) 1.5.6+a2d21ddd02
		fabric-object-builders-v0: Fabric Object Builders (v0) 0.6.1+a2d21ddd02
		fabric-particles-v1: fabric-particles-v1 0.2.1+0a6f2a7002
		fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.3.8+7dba2d6c02
		fabric-renderer-api-v1: Fabric Renderer API (v1) 0.2.13+eae12eb802
		fabric-renderer-indigo: Fabric Renderer - Indigo 0.3.4+34d6c87102
		fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 2.0.1+5a0f9a6002
		fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.1.3+b7f9825d02
		fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 0.1.8+b7084faa02
		fabric-rendering-v0: Fabric Rendering (v0) 1.1.0+5341049002
		fabric-rendering-v1: Fabric Rendering (v1) 1.1.2+346247d702
		fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.2.6+f41e209802
		fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.1.0+97324d1102
		fabric-tag-extensions-v0: Fabric Tag Extensions (v0) 0.2.7+a4c57d8e02
		fabric-textures-v0: Fabric Textures (v0) 1.0.4+eae12eb802
		fabric-tool-attribute-api-v1: Fabric Tool Attribute API (v1) 1.2.0+55e0cc5f02
		fabricloader: Fabric Loader 0.9.0+build.204
		itemscroller: Item Scroller 0.15.0-dev.20200630.022843
		malilib: MaLiLib 0.10.0-dev.21+arne.1
		minecraft: Minecraft 1.16.1
		modmenu: Mod Menu 1.14.5+build.30
		phosphor: Phosphor 0.6.0+build.7
		reauth: ReAuth 3.9.0
		sodium: Sodium 0.1.0
	Launched Version: fabric-loader-0.9.0+build.204-1.16.1
	Backend library: LWJGL version 3.2.2 build 10
	Backend API: GeForce GTX 1050 Ti/PCIe/SSE2 GL version 4.6.0 NVIDIA 440.100, NVIDIA Corporation
	GL Caps: Using framebuffer using OpenGL 3.0
	Using VBOs: Yes
	Is Modded: Definitely; Client brand changed to 'fabric'
	Type: Client (map_client.txt)
	Resource Packs: 
	Current Language: English (US)
	CPU: 4x Intel(R) Core(TM)2 Quad CPU Q9650 @ 3.00GHz

So, I suggest adding Cloth Config API for Fabric (which has the class me/shedaniel/clothconfig2/api/ConfigEntryBuilder) .

Complex Lists don't save

Like the title says, a list that stores a custom inner class does not seem to save its values or new additions to the list. This behavior is reproducible using the ExampleConfig provided as well. Simple lists work as expected.

To reproduce: Add or change a value in a complex list

public List complexList = Arrays.asList(new PairOfInts(0, 1), new PairOfInts(3, 7));
Add or change an entry, then save and exit. Also must exit out of the modmenu screen (if using modmenu).

Expected behavior: The complex list should store the new values in the config file and be there when the screen is reopened

Actual: The new values don't save to file and the complex list defaults to the default values and entries when loaded.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.