promotional bannermobile promotional banner
premium banner
Per-Player Configuration API for allowing players to configure mod settings in a unified and easy way

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

  1. Download Codex.jar from the Files tab.
  2. Drop it into your server's mods/ folder.
  3. 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/&lt;file-id&gt;

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 with GeneratedSettingsRegistry to handle new data types.
  • Fully custom pages — Implement PlayerSettingsProvider for 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!