Aprism | AprismPrismate is a Minecraft: Java Edition mod that runs inside Fabric and NeoForge,
enabling these loaders to load native Aprism *.aje mods. (The forge/ module is a visible stub;
classic Forge is deferred post-1.0.)
Author: BlockConnect@StarsailsClover | License: Apache‑2.0 Companion repository for Aprism.
The native Aprism loader loads .aje files directly via a javaagent. However, if users are already using Fabric / NeoForge
and do not wish to switch to the Aprism agent, Prismate acts as the bridge: it runs as an ordinary mod for the host loader,
embeds the (relocated) Aprism runtime within itself, scans the mods/ directory for .aje packages,
extracts contained mod JARs / resources / mixins, injects them into the host loader’s classloader, and drives Aprism’s full lifecycle
(PREINIT -> INIT -> SETUP -> COMPLETE, followed by CLIENT / SERVER‑side phases).
It is the mirror counterpart of AprismRefract: Refract brings other loaders into Aprism; Prismate brings Aprism into other loaders. Together they enable bidirectional ecosystem interoperability.
- Authoritative English source: docs/01‑architecture‑design.md (Architecture Design) and docs/02‑developer‑guide.md (Developer Implementation Guide)
- This Chinese summary is maintained in sync with the English source documents.
- Faithful Runtime Embedding: Directly reuses Aprism’s
AprismManifestParser/DependencyResolver, relocated undercom.aprism.prismate.internal, while not relocatingcom.aprism.apito ensure consistent API classes bound by mods. - Delegate to Host Loader: Does not build custom class‑loader hierarchies. Extracted JARs and resources are injected into the host loader’s classloader and lifecycle.
- One Codebase, Two Loaders: Shared logic resides under
common/, with separate entrypoints forfabric/andneoforge/(theforge/module is a refusal stub). - Mutually Exclusive with Aprism Agent: Prismate and the Aprism agent cannot coexist in one instance. Prismate aborts startup if it detects the agent.
- Visible Failures: Malformed packages, missing dependencies, and version mismatches must produce human‑readable named errors; failures are never silently ignored.
- Upstream Sync Discipline: The JE version line (
PrismateVersionLine) and the bound Aprism mod API are guarded by consistency tests that fail loudly if the embedded Aprism core drifts under Prismate (v26.1‑Alpha.1 / Alpha.6).
| Aprism Phase | Fabric | NeoForge |
|---|---|---|
| PREINIT/INIT/SETUP | Early execution within its own ModInitializer | @Mod constructor |
| CLIENT | ClientModInitializer | FMLClientSetupEvent |
| SERVER | DedicatedServerModInitializer | FMLDedicatedServerSetupEvent |
| COMPLETE | Late‑phase events such as GAME_READY | Late‑lifecycle events |
- Versioning follows the Aprism family convention:
v<year>.<minor>[-Alpha.<n>], sharing the same minor‑version line as the embedded Aprism core. - Artifact naming examples:
AprismPrismate‑v26.1‑Alpha.6‑Fa‑26.2.jar(Fabric),-N‑(NeoForge). - Cosign keyless signing + SHA‑256 checksums + CycloneDX SBOM + GitHub Pre‑Releases, consistent with Aprism / Refract workflows.
Prismate covers the JE line 1.20 .. 26.2 (mirrors Aprism's VersionLineRegistry), with real‑game verified landings:
| Segment | Loader support | Verified in real game | Notes |
|---|---|---|---|
| 26.x | Fabric + NeoForge | lifecycle + mixin + resources + soak | unobfuscated, no remap |
| 1.21.x | Fabric | lifecycle + resources | obfuscated; Intermediary remap is the Aprism agent's job |
| 1.20.x | Fabric | lifecycle + resources | obfuscated; same remap boundary |
- NeoForge is 26.x‑only for v26.1: the bridge targets FML 11; NeoForge 1.20.2‑1.21.x runs FML 2‑4 (a different API) and is out of scope. The Fabric bridge covers those segments.
- Forge (classic) is a stub that refuses to boot with a named error (deferred post‑1.0).
- Java runtime floor is 21, not the 1.20/1.21 official Java 17: the embedded Aprism API is Java 21 bytecode (upstream Aprism compiles at
--release 21).fabric.mod.jsonkeepsjava: ">=21"so the loader never installs Prismate into a Java‑17 profile. MC 1.20+ is forward‑compatible with newer JVMs, so 1.20.x/1.21.x run under Java 21. - Packs are loaded as‑is; Prismate does not remap obfuscated classes (docs/01 §13, issues 6‑7).
Place Prismate into your host loader’s mods/ folder, then drop Aprism .aje mods into the same instance’s mods/.
Do not install the Aprism javaagent in the same instance (they are mutually exclusive).