Build Multi-Loader Minecraft Mods.

Use a single code base to release for NeoForge, Fabric and Forge.

build.gradle
repositories {
  maven {
    url = 'https://maven.twelveiterations.com/repository/maven-public/'
    content {
      includeGroup 'net.blay09.mods'
    }
  }
}

dependencies {
  implementation("net.blay09.mods:balm-common:${balm_version}")
}

Mod Loader Abstractions

    Registries

    Use builder-style helpers to easily register content without having to worry about mod loader lifecycles or differences.

    Events

    Balm provides mappings for the most commonly used events, hooking into native mod loaders where possible, for maximum compatibility.

    Configs

    Simple annotation-based mod configs with support for synced configs and various config screen implementations.

    Networking

    Register packets in a single call. Seamlessly open menus with extra data. Ensure client protocols are up-to-date using network versions.

    Data Attachments, Capabilities, and more

    Integrate and benefit from mod loader concepts such as Data Attachments, Capabilities, Permissions and more, all through common code.

    Extensible

    Use Platform Proxies to write loader-specific code for an interface without worrying about service loaders or annotation magic.

Third Party Mod Integrations & Utilities

    Recipe Viewer Mods

    Define recipe displays and transfer handlers for support in recipe viewers like JEI with one simple builder-style API.

    Information HUD Mods

    Define information to show up in HUD mods like Jade through a common block info API.

    Accessory Mods

    Check whether your items are worn as an accessory in mods like Curios or Trinkets with one unified call.

    Containers, Fluids and Energy

    Use inbuilt classes to define containers, fluid tanks and energy storages on your block entities.

    Quick Move Stack

    Specify how items should move in your menu when shift-clicked in a declarative way.

    Progress Renderers

    Define segmented progress renderers for screens without relying on messy math and branching.

Ready to build for multiple loaders?

Get started with our guides or jump straight into a template repository.