Skip to content

Repository files navigation

✦ irl-core

The BBS-free shared engine behind IRLights & IRL-editor

A Fabric/Loom module (per-version MC-typed) that holds the light SSBO pipeline, shadow orchestration, and the .irlights shaderpack patcher. Built as Java 17 for MC 1.20.4; remapped to intermediary and bundled by both consumers (IRLights & IRL-editor).

Java License Status


What is irl-core?

irl-core is the common heart of two sibling mods:

It bundles the GPU light buffer, shadow orchestration (MC-typed), and the shaderpack patcher. Built with Loom 1.9 (the oldest consumer's version; consumers reject newer Loom jars) and remapped to intermediary format. Because intermediary names are MC-version–specific, this artifact pairs exclusively with MC 1.20.4 consumers; the name mappings are re-targeted by each mod's Loom at build time (addon uses -Pmc=1.20.4, editor uses native 1.20.4).


What's inside

Subsystem Package What it does
Light pipeline org.qualet.irl.light LightBuffer — std430 SSBO at binding 7, up to 2048 lights/frame; LightRegistry — collects & uploads light data to the GPU
Patcher engine org.qualet.irl.patcher Parses & applies anchor-based .irlights patch files into shaderpacks (IrlPatchParser, IrlPatchApplier, PatchEngine, PatchLibrary, Shaderpacks, Patcher, PatcherHost)

The patcher is validate-first: it aggregates every error before touching a file, is EOL-tolerant, works straight on zipped packs, and supports dry-run + rollback.


How it's consumed

The core publishes a remapped (intermediary) jar to the local Maven repository. Each consumer builds it first:

./gradlew publishToMavenLocal

Then both mods pull irl-core from mavenLocal and bundle it into their jar with Loom's include (JiJ):

// build.gradle (each mod)
dependencies {
    modClientImplementation("org.qualet:irl-core:${irl_core_version}") // Loom remaps intermediary → named
    include("org.qualet:irl-core:${irl_core_version}")
}

The version is read from gradle.properties (currently 1.1). Environment-specific bindings (game directory, Iris API, "open folder") stay in each mod via a PatcherHost implementation — irl-core stays pure.


Building

./gradlew build
# output: build/libs/irl-core-1.1.jar (+ sources jar)
./gradlew publishToMavenLocal
# publishes remapped jar to ~/.m2/repository/org/qualet/irl-core/1.1/

Requires a JDK 17+. Compiles with --release 17; the resulting (remapped) bytecode runs unchanged when consumers re-target it to their own named mappings (addon → 1.20.4 with Loom 1.15.5, editor → 1.20.4 with Loom 1.9).


The trilogy

Repo Role
irl-core (this repo) Shared engine: light SSBO + .irlights patcher
bbs-irlights-addon IRLights — BBS Mod Studio add-on
irl-editor IRL-editor — standalone ImGui editor

License

Released under the MIT License — © 2026 qualet.

About

IRLights shared core - patcher engine + std430 light SSBO/Registry (plain Java)

Resources

Stars

19 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages