---
title: Troubleshooting
---

Solutions to common problems are described here.

## <div><SquareMenuIcon height={26} width={22} style={{display: "inline", color: "#B2BFF9", paddingTop: "4px", verticalAlign: "top"}} /> Config not in ModMenu</div>
ModMenu asks for its config screen on mod initialization. If your mod doesn't register your config until then, load order might mean your config hasn't had a chance to initialize before ModMenu has asked for config screens. To fix this, add your mod id (or the ids you used in the config identifiers) to the relevant mod properties file:

<CodeTabs>

```json !!tabs fabric.mod.json
"custom": {
  "fzzy_config": [
    "mod_id"
  ]
}
```

```toml !!tabs (1.21.1+)neoforged.mods.toml
[modproperties.fzzy_config]
fzzy_config="mod_id"
# for a list
[modproperties.fzzy_config]
fzzy_config=["mod_id", "id2"]
```

```toml !!tabs (1.20.1)mods.toml
modproperties={fzzy_config="mod_id"}
# for a list of values
modproperties={fzzy_config=["mod_id", "id2"]}
```

</CodeTabs>

## <div><TriangleDashedIcon height={26} width={22} style={{display: "inline", color: "#B2BFF9", paddingTop: "4px", verticalAlign: "top"}} /> Arbitrary Object Settings Null</div>
If you use `ValidatedAny` to wrap your object, you don't need to do anything further, but if you just add a "plain" object instance to your config, that object needs to implement `Walkable`

<CodeTabs>

```java !!tabs Java
public MyObject myObject = new ValidatedAny(new MyObject());
public class MyObject{ /* implementation */ } //can be a plain object

public MyObject2 myObject2 = new MyObject2();
public class MyObject2 implements Walkable{ /* implementation */ } //implements walkable
```

```kotlin !!tabs Kotlin
var myObject = ValidatedAny(MyObject())
class MyObject{ /* implementation */ } //can be a plain object

var myObject2 = MyObject2()
class MyObject2: Walkable{ /* implementation */ } //implements walkable
```

</CodeTabs>

## <div><CoffeeIcon height={26} width={22} style={{display: "inline", color: "#B2BFF9", paddingTop: "4px", verticalAlign: "top"}} /> Java Compiler Errors</div>
Since FzzyConfig is written in kotlin, there are certain incompatibilities you might run into if you are writing a java mod. 
* `ConfigApiJava` - This may solve issues with registration, commonly caused by certain kotlin classes such as `Function0` not being present in java build environment
* `modCompileOnly` FabricLanguageKotlin - The robust solution, simply add kotlin to your compile classpath with FLK or similar.

## <div><ServerCrashIcon height={26} width={22} style={{display: "inline", color: "#B2BFF9", paddingTop: "4px", verticalAlign: "top"}} /> TestMod Crashes</div>

<Callout variant="info">
As of 0.4.3, there is a maven! If you haven't updated to using the maven, check out the homepage for the new repository and dependency paths
</Callout>

Prior to 0.4.3, Fzzy Config wasn't on a "true" Maven, so the full `maven.pom` isn't available. As such, transitive dependencies aren't available. This causes issues when you try to `runClient`.

<CodeTabs>

```groovy !!tabs build.gradle
repositories {
    mavenCentral()
}

dependencies {
    modLocalRuntime "net.peanuuutz.tomlkt:tomlkt-jvm:${project.tomlktVersion}"
}
```

```kotlin !!tabs build.gradle.kts
repositories {
    mavenCentral()
}

dependencies {
    val tomlktVersion: String by project
    modLocalRuntime("net.peanuuutz.tomlkt:tomlkt-jvm:$tomlktVersion")
}
```

</CodeTabs>
