# DNZ Config
Clean, modern settings screens for Fabric mods. Build a full config menu in a few lines of code and get switches, sliders, dropdowns, color swatches and text boxes in a dark glass design that looks the same at every GUI scale.
DNZ Config is a library: on its own it only adds an example screen to Mod Menu. Install it if a mod you use needs it.
## For players
- Smooth, rounded menu with soft shadows and animations
- Pages on the left, settings in two columns on the right
- Help text when you rest the mouse on a setting
- Settings are saved to the `config` folder as readable JSON
## For mod developers
```java
ConfigFile<MySettings> file = ConfigFile.of("mymod", MySettings.class);
MySettings s = file.get();
Screen screen = DnzConfig.builder("My Mod")
.accent(0x4FA3FF)
.category("General", page -> {
page.toggle("Enabled", () -> s.enabled, v -> s.enabled = v).note("Turns the mod on or off");
page.slider("Size", 0, 100, 5, () -> s.size, v -> s.size = v, v -> v + "%");
page.choice("Mode", List.of("Simple", "Detailed"), () -> s.mode, v -> s.mode = v);
})
.category("Look", page -> {
page.color("Color", () -> s.color, v -> s.color = v);
page.text("Label", "Type here", 24, () -> s.label, v -> s.label = v);
})
.onSave(file::save)
.build(parent);
```
Rows: `header`, `toggle`, `slider`, `choice` (list or enum), `color`, `text`, `button`, or your own row with `custom`. Every row can get a `.note(...)`, a `.tooltip(...)` or `.wide()`.
`ConfigFile` keeps any plain Java class as `config/<name>.json`. New fields get their default values, and saving writes a temporary file first so a crash never leaves a broken file.
You can nest DNZ Config in your mod jar (jar-in-jar) or ask players to install it.
## Details
- Fabric, client side only
- Minecraft 26.2 and 26.3
- Open source (GPL-3.0): https://github.com/DnzMc/DnzClient
- Made by the team behind DNZ Client: https://dnzclient.com

