promotional bannermobile promotional banner

Actually Amazing Config Screen

A settings screen library for Fabric and NeoForge mods: tabs, folding sections, smooth scrolling and a card that explains each setting with a picture.
Actually Amazing Config Screen
Create a server, get 25% off your first monthaffiliate logo
Create Server
affiliate banner image

Actually Amazing Config Screen

Actually Amazing Config Screen

Modrinth downloads CurseForge downloads GitHub downloads Latest release Client side MIT license

A settings screen library for Minecraft mods on Fabric and NeoForge.
Tabs, sections that fold, smooth scrolling, and a card beside the list that explains the setting under the pointer with a picture of what it does.

Available on Modrinth Available on CurseForge Available on GitHub
Supported on Fabric Supported on NeoForge

The settings of Teyvat Cartographia: the Pins tab and the card with the pictures of the setting under the pointer

For players

You do not need to install anything. The library comes inside the mods that use it, such as Teyvat Cartographia. It shows in the mod list as a library, and the settings button of each such mod opens its screen.

What the screen does

  • Tabs as wide as their titles, sections, and sub-sections that fold.
  • Smooth scrolling without steps: the wheel moves a row's distance, the scroll bar can be dragged freely, and rows cut by the edges of the list dissolve.
  • The card beside the list: the name and description of the setting under the pointer, and a picture of what it does, drawn by the mod. In a window too narrow for the card, the description shows as a tooltip by the row.
  • Rows: switches, sliders of numbers (with a unit, fixed steps or words), choices in steps on a slider, choices with arrows, and a switch with a searchable list of switches under it.
  • A reset icon beside a setting you changed, and Reset and Done at the bottom.
  • Rectangular or rounded shapes, the mod's own colours and background, and the GUI scale held at a size that fits the window while the screen is open.
  • The settings button in Mod Menu and in the mod list of NeoForge.
  • Sub-sections from other mods: a mod can open a tab to others, and they add their own settings there.

The Compatibility tab, a sub-section per supported mod The rounded style

A switch with a searchable list under it Without room for the card, the description as a tooltip

For mod authors

Note Since 1.0.0 the API in net.tapacywka.aacs.api is stable: it only grows, and older methods are kept working (marked @Deprecated) rather than removed, because the loader keeps only the newest copy of the library among all the mods that embed it. Aacs.API_VERSION tells which version is running.

Embed the library in your JAR (Fabric include, NeoForge jarJar), so players have nothing to install. The files are on Modrinth Maven:

repositories {
    maven { url = 'https://api.modrinth.com/maven' }
}

dependencies {
    // The game after +mc: 1.21.1, 26.1.2, 26.2 or 26.3 (on 26.x Loom takes implementation, not modImplementation)
    // Fabric (Loom)
    modImplementation 'maven.modrinth:actually-amazing-config-screen:1.0.0+mc1.21.1-fabric'
    include 'maven.modrinth:actually-amazing-config-screen:1.0.0+mc1.21.1-fabric'
    // NeoForge (ModDevGradle)
    jarJar(implementation('maven.modrinth:actually-amazing-config-screen:1.0.0+mc1.21.1-neoforge'))
}

The settings are values in a JSON file of your mod, described by a builder; the screen is laid out over them:

ConfigFile.Builder b = ConfigFile.builder();
b.push("map");                                              // a section of the file: { "map": { ... } }
BoolValue grid = b.bool("grid", true);
IntValue opacity = b.integer("opacity", 80, 0, 100);
b.pop();
ConfigFile file = b.build();
file.load(configDir.resolve("mymod-client.json"));

AacsScreen screen = AacsScreen.builder("mymod", file)
        .tab("mymod.config.tab.display", t -> t
                .section("mymod.config.section.look")
                .toggle(grid)
                .slider(opacity, s -> s.unit("%"))
                .preview((g, row, x, y, w, h, partialTick) -> { /* draw a picture of the setting */ }))
        .build();                                           // also the settings button in the mod lists

boolean showGrid = grid.get();                              // read where you need it; changes count at once
Minecraft.getInstance().setScreen(screen.open(parent));

Texts come from your lang files: a row's name mymod.config.<key> and its description mymod.config.<key>.tooltip.

Another mod can add a sub-section to a tab you opened to others:

.tab("mymod.config.tab.compat", t -> t.openTo("compatibility"))  // in your screen

AacsScreen.extend("mymod", "compatibility", "othermod", otherFile, t -> t.toggle(otherValue))  // in the other mod
        .shownIf(() -> isOtherThingLoaded);

Compatibility

  • Minecraft 1.21.1, Fabric (Fabric Loader 0.16 or newer, no Fabric API needed) and NeoForge 21.1.
  • The Fabric file also runs on NeoForge through Sinytra Connector.
  • Minecraft 26.1.2, 26.2 and 26.3 (Java 25), Fabric and NeoForge.

Building

./gradlew build builds both JARs (fabric/build/libs, neoforge/build/libs) and runs the unit tests; ./gradlew publishToMavenLocal puts net.tapacywka.aacs:aacs-common, aacs-fabric and aacs-neoforge in the local Maven repository. ./gradlew :fabric:runClient and :neoforge:runClient open a game with a small test mod that shows every kind of row.

License

MIT. The icons are from Nieobie's Game Icon Pack (CC0).

Actually Amazing Config Screen Team

profile avatar
  • 7
    Projects
  • 706.6K
    Downloads

More from TapacywkaView all