Description
Codex: One Settings Menu to Rule Them All
Tired of every mod having its own config file, its own commands, its own way of doing things? So were we.
Codex adds a clean, native-feeling settings GUI to your Hytale server. Players type /settings and get a single menu where they can tweak options from every mod that hooks into Codex — no wiki diving, no editing JSON by hand, no memorizing commands.
For mod developers, it's even simpler: define your config fields with a BuilderCodec, register it with one line, and Codex handles the rest. It reads your data structure, picks the right UI controls (checkboxes, text fields, number inputs), and builds a settings page for you automatically. Zero UI code required.
For Players
Installation
- Download
Codex.jarfrom the Files tab. - Drop it into your server's
mods/folder. - Start (or restart) the server.
How to Use
Open chat and type any of these:
/settings/codexsettings/codexconfig/config
A settings window pops up showing every mod that has registered its configuration with Codex. Click a category to open that mod's settings. Changes take effect immediately — no restart needed.
For Mod Developers
Getting your mod into the Codex settings menu takes about two minutes.
Step 0 — Add Codex as a dependency
Add this to your gradle configuration, or similar:
repositories {
maven { url "https://www.cursemaven.com" }
}
dependencies {
// Project ID: 1472867
implementation "curse.maven:hyui-1472867:<file-id>"
}
Where the file-id can be found in the URL when viewing a specific file on the Curseforge mod page:
https://www.curseforge.com/hytale/mods/codex-configs/files/<file-id>
Step 1 — Define Your Config
Create a component class with a BuilderCodec. This is standard Hytale codec stuff — if you're already using BuilderCodec for data, you're halfway there.
public class MyModConfig implements Component<EntityStore> {
public Boolean pvpEnabled;
public Integer renderDistance;
public String motd;
public static final BuilderCodec<MyModConfig> CODEC =
BuilderCodec.builder(MyModConfig.class, MyModConfig::new)
.append(new KeyedCodec<>("PvpEnabled", Codec.BOOLEAN),
(o, v) -> o.pvpEnabled = v, o -> o.pvpEnabled).add()
.append(new KeyedCodec<>("RenderDistance", Codec.INTEGER),
(o, v) -> o.renderDistance = v, o -> o.renderDistance).add()
.append(new KeyedCodec<>("Motd", Codec.STRING),
(o, v) -> o.motd = v, o -> o.motd).add()
.build();
public ComponentType<EntityStore, MyModConfig> getComponentType() {
return <Your Plugin Class>.ct; // add this as a parameter to your plugin
}
}
Step 2 — Register It
In your plugin's setup() method:
this.ct =
this.getEntityStoreRegistry().registerComponent(
MyModConfig.class, "MyModConfig", MyModConfig.CODEC);
PlayerSettingsRegistry.get().registerCodec("MyMod", MyModConfig.CODEC, ct);
That's it. Codex picks up your codec, generates a "My Mod" category in the settings menu, and handles UI rendering and data persistence for you.
Supported Types
| Field Type | Control |
|---|---|
| Boolean | Checkbox |
| Integer | Number field |
| Float | Number field |
| Double | Number field |
| String | Text input |
| More Coming soon! |
Step 3 — Retrieve your data
After setting everything up, you're now able to query a Player reference for your configuration component, like so:
MyModConfig data = store.getComponent(ref, MyModConfig.getComponentType());
This will return null if your user hasn't set anything, or the default instance of your configuration data with the changes the player has made if they've opened your configuration page
Going Further
Codex is built to grow with your needs:
- Custom UI controls — Implement
CodecUIProvider<T>and register it withGeneratedSettingsRegistryto handle new data types. - Fully custom pages — Implement
PlayerSettingsProviderfor complete control over your settings page layout while still appearing in the Codex menu. - Custom icons — Override
getIconPath()in your provider to show a 100×100 icon next to your mod's category name.
For the full developer guide, source code, and examples, visit the GitHub repository.
Commands
| Command | Aliases | Description |
|---|---|---|
/settings |
/codexsettings, /codexconfig, /config |
Opens the Codex settings menu |
Links
Built by Exotik850. Contributions and pull requests are welcome!


