Plexus Mod Loader — Project Overview & Roadmap
Plexus Mod Loader is an advanced, in-engine modding platform and bytecode virtualization layer for Minecraft: Java Edition (supporting versions 26.1, 26.1.1, 26.1.2, 26.2, and 26.3 under Java 25).
1. What is Plexus Mod Loader?
Unlike external launcher wrappers (such as Prism, CurseForge App, or Modrinth App) that merely manage profile directories and launch separate games, Plexus is an in-game bytecode loader:
- It replaces vanilla Minecraft's startup sequence and hosts a unified classloader.
- It runs Fabric, Quilt, Forge and NeoForge mods and adapts their bytecode where needed, so Fabric and Quilt mods can run in the same game as Forge mods or as NeoForge mods. Forge and NeoForge mods do not run in the same game yet. On Minecraft 26.3, mixing loaders works since 1.2.5 (see the table below).
- It provides its own clean Native API with declarative bytecode transforms, headless gametesting, and version-agnostic abstractions.
2. Core Pillars & Technical Differentiators
+-----------------------------------------------------------------------------------+
| Plexus Mod Loader |
+-----------------------------------------------------------------------------------+
| [ Native API ] [ Fabric Bridge ] [ Forge Bridge ] [ NeoForge Bridge ] |
| - System API - FabricLoader API - FML Virtualizer - FML 11 Layer Bridge |
| - Lifecycle API - QuiltLoader API - ModLauncher Shim - Shared Mixin Engine |
+-----------------------------------------------------------------------------------+
| Plexus Transform Engine (ASM 9.11) |
| - Declarative Bytecode Transforms - Dynamic Host Patch Adjustments (ADR-0030) |
| - Unified Mixin 0.8.7 Service - Granular Conflict Pre-flight Assessment |
+-----------------------------------------------------------------------------------+
| Plexus Transforming ClassLoader & JRE 25 |
+-----------------------------------------------------------------------------------+
| Minecraft: Java Edition (26.x) |
+-----------------------------------------------------------------------------------+
1) True In-JVM Multi-Loader Concurrency
Plexus does not run separate games or heavy emulation layers. A single game classloader hosts Plexus Mods together with Fabric and Quilt mods, and with Forge mods or NeoForge mods (not both in one game). Forge and NeoForge's FML services run inside Plexus's managed layers, while Fabric and Quilt mods are driven through unified Mixin and ClassTweaker pipelines.
2) Pre-flight Conflict & Patch Assessment (PLEXUS-COMPAT-224)
When Forge or NeoForge patches a vanilla Minecraft class, traditional Fabric Mixins fail because injection targets or local variable tables differ. Plexus incorporates an automated Host Patch Check (HostPatchCheck):
- It inspects all mod mixins against the host's actual bytecode before launch.
- If a mixin can be safely adapted (via parameter shifting, expression wrapping, or method retargeting), Plexus rewrites the injection point on the fly (
HostPatchAdjustments). - If an incompatible mixin is found, Plexus isolates the conflicting mod before the JVM starts, outputting clear diagnostic codes (
PLEXUS-COMPAT-224) instead of crashing the game mid-launch.
3) Measured Performance Overhead
- Startup Time, Tick Time & Memory: In the measured scenarios the difference from vanilla is within measurement noise (Performance). No improvement is claimed without a measurement.
- Graphics mods: On 26.2, popular Fabric mods including Sodium, Iris and Lithium play a world together on the client.
- Custom Loading Screen: Fast, modern
#0E131Fdark overlay (PlexusLoadingOverlay) with real-time mod count overlays per loader.
3. Current Project Status (Release 1.4.2)
| Component | Target / Scope | Status | Notes |
|---|---|---|---|
| Supported Minecraft | 26.1, 26.1.1, 26.1.2, 26.2, 26.3 | Stable | Java 25 required across all platforms. |
| Fabric Mod Support | Fabric Loader 0.19.5 API / Mixin 0.8.7 | Verified | On 26.2, 138 popular Fabric mods (Sodium, Iris, Lithium and more) play a world together on the client, and 100 start a real dedicated server. 26.3 (2026-10-27, headless): 98 loaded / 73 left out on the game test server, 100 / 74 on the dedicated server. |
| Quilt Mod Support | Quilt Loader 0.31.x / quilt.mod.json | Verified | Every Quilt-only Modrinth build on 26.1, 26.1.2 and 26.2 (114 on 26.2). 26.3 (2026-10-27, headless): dedicated server 112 loaded / 34 left out, 73 of the 91 Quilt-only builds load, and the real Quilt Loader agrees on 89 of 91. |
| Forge Mod Support | MinecraftForge 62.0.9 ~ 66.1.0 | Verified | Client, dedicated server and game test server on 26.1, 26.1.2 and 26.2. 26.3 (2026-10-27, headless): 30 of 38 on the game test server, 33 of 41 on the dedicated server. |
| NeoForge Mod Support | NeoForge 26.1.0 ~ 26.3.0 | Verified | Runs via NeoForge's own FML. 26.3 (2026-10-27, headless): FML loads 50 mods on the game test server and 49 on the dedicated server. Not in the same game as Forge mods (PLEXUS-COMPAT-221). |
| Fabric mods next to Forge | 26.2 corpus (corpusFabricForge) | Partial | Measured on 1.4.0: 85 foreign mods load, 81 left out. Left out with PLEXUS-COMPAT-224: Fabric API's fabric-content-registries-v0 (drowning and fluid jumping cannot be bridged to Forge's calls) and three Fabric mods (Architectury, Balm, Lithium). fabric-biome-api-v1 is now left out with PLEXUS-COMPAT-112 (the link check reads Forge's patched game and finds it writes ChunkGenerator.featuresPerStep as a Supplier where Forge has a ClearableLazy), instead of failing later. |
| Fabric mods next to NeoForge | 26.2 and 26.3 corpus (corpusFabricNeoForge) | Partial | Measured on 1.6.0 (2026-10-31, 26.2): 51 foreign mods load, 65 left out (1.4.0: 47 / 69; 1.3.0: 40 / 76). 3 Fabric API modules are left out with PLEXUS-COMPAT-224: content-registries, data-generation, menu (1.4.0: content-registries, data-generation, registry-sync). Plexus Mod Loader ships its own builds of fabric-block-api-v1 and fabric-item-api-v1 (since 1.4.0) and of fabric-registry-sync-v0 and fabric-object-builder-api-v1 (since 1.6.0, ADR-0031) on NeoForge 26.2.0.93's hooks ("host modules", adapted from Sinytra Forgified Fabric API under Apache-2.0) and uses them in place of the originals; events-interaction, transfer, entity-events, resource-conditions and crash-report-info now load through bridges. With NeoForge 26.3.0.98 (1.6.0): the same four host modules, 48 / 68, 5 modules still left out (content-registries, data-generation, entity-events, menu, resource-conditions); before the 26.3 host modules: 43 / 73, 7 modules. Forgified Fabric API installed next to NeoForge no longer stops the game at start (its nested Fabric Loader plugin is excluded). |
| Mixing loaders on 26.3 | Fabric/Quilt with Forge or NeoForge | Partial (1.6.0) | Measured 2026-10-28, headless: every mixed-loader run of the 26.3 set passes. Fabric next to Forge 80 loaded / 86 left out, Quilt next to Forge 95 / 86, Fabric next to NeoForge 40 / 76, Quilt next to NeoForge 83 / 96. In 1.2.4 these games stopped at start. With 1.6.0 (2026-10-31, headless): Fabric next to NeoForge 48 / 68, Quilt next to NeoForge 87 / 92. In a game window (2026-10-31, before the 26.3 host modules): Fabric next to NeoForge 35 / 76 with 45 NeoForge mods, and each loader's set on its own, passed. |
| NeoForge Injection Points | Screen, Container Menu, Data Attachment | Verified | Verified against NeoForge 26.2.0.93 patched client and vanilla 26.2. |
| Universal Installer | Cross-platform .jar | Done (1.2.4) | Unified installer running across Windows, macOS, and Linux on Java 17+. |
| Custom Loading UI | PlexusLoadingOverlay | Done (1.4.0) | Since 1.4.0 every loader shares one early loading window on the client that looks like the game's loading screen (Mojang background, logo, progress bar, Plexus cube, mods per loader); Forge and NeoForge no longer open FML's early window; not on macOS yet; -Dplexus.earlyWindow=off turns it off. |
| Bug Reporting Flow | GitHub Issues Direct Route | Done | Exceptions & crash UI direct users to official issue tracker. |
4. Immediate Roadmap & Future Milestones
Milestone A: Client-Side & NeoForge Fabric API Adaptation (In Progress)
- Done (2026-10-27): NeoForge injection points checked against NeoForge's patched client and the vanilla client (
NeoForgeInjectionPointsTest). Fabric mods next to Forge and NeoForge measured on 26.2 with 1.2.4: next to Forge no Fabric API module is left out but four Fabric mods are; next to NeoForge 10 Fabric API modules are left out. - Done (1.2.5, 2026-10-28): next to Forge, Puzzles Lib's Fabric build loads again on 26.2 (88 loaded / 78 left out). Mixing loaders works on 26.3 (headless).
- Done (1.4.0, 2026-10-30): next to NeoForge on 26.2, shipped host modules for
fabric-block-api-v1andfabric-item-api-v1, bridged 5 modules (only 3 left out withPLEXUS-COMPAT-224), 47 foreign mods load / 69 left out (26.3: 43 / 73), and Forgified Fabric API no longer stops the game. Next to Forge on 26.2, 85 foreign mods load / 81 left out (fabric-content-registries-v0left out withPLEXUS-COMPAT-224,fabric-biome-api-v1withPLEXUS-COMPAT-112). - Done (1.4.1, 2026-10-30): Full engine, branding, API (
plexus:game_brand), metadata (plexus.mod.json), window title, and runtime dependency rebrand to Plexus Mod Loader while retaining full backward compatibility forplexusartifacts. - Done (1.4.2, 2026-10-30): Full package namespace migration to
dev.plexusmodloader.*, root Gradle modules toplexus-*, and internal classes toPlexus*. Added bytecodeLegacyPackageRemapperfor seamless backward compatibility with legacy mod jars. All diagnostics and error codes migrated toPLEXUS-*. - Done (1.6.0, 2026-10-31): host modules for
fabric-registry-sync-v0andfabric-object-builder-api-v1on NeoForge 26.2.0.93, and forfabric-block-api-v1,fabric-item-api-v1,fabric-registry-sync-v0andfabric-object-builder-api-v1on NeoForge 26.3.0.98 (ADR-0031). Next to NeoForge, 3 Fabric API modules are left out on 26.2 (51 foreign mods load / 65 left out) and 5 on 26.3 (48 / 68). Fabric mods initialise after NeoForge's registration on a dedicated server too. Windowed runs on 26.3 passed (2026-10-31). - Next host modules for NeoForge:
fabric-content-registries-v0,fabric-data-generation-api-v1andfabric-menu-api-v1(26.2 and 26.3), andfabric-entity-events-v1andfabric-resource-conditions-api-v1(26.3). fabric-screen-api-v1: RetargetGuiMixin:onExtractGuifor NeoForge client UI mods (ModMenu, etc.).fabric-menu-api-v1&fabric-data-attachment-api-v1: Integrate NeoForgeopenMenuandAttachmentTypeextensions.- Rendering & Model Modules: Adapt
fabric-renderer-api-v1,fabric-rendering-v1, andfabric-model-loading-api-v1for client-side shaders and resource packs.
Milestone B: Minecraft 26.3 Real-World Corpus Verification
- Headless, single loader (2026-10-27): the 26.3 corpus (
mod-corpus-26.3.json: 43 Fabric, 42 Forge, 44 NeoForge) and the Quilt corpus (91 Quilt-only builds) pass the headless server and game test runs, one loader at a time. (The Quilt game test server run passes once five PurpurPacks data-pack mods that carry 26.2-format data are removed; that failure is on the mods' side.) - Mixing loaders on 26.3: works since 1.2.5 in the headless runs (in 1.2.4 every such game stopped at start). Next to Forge, Architectury, Balm, Lithium, Puzzles Lib and three Fabric API modules are still left out there; next to NeoForge, five Fabric API modules (1.6.0). Windowed (client) runs on 26.3 passed on 2026-10-31 (each loader's set, Fabric next to NeoForge,
clientWorldReloadTestand the launcher profiles), before the 26.3 host modules were added; their client-side parts were not checked in a game window. - Hardening against 26.3-specific game changes (SDL keyboard handling, shader
#include, data pack overlay formats).
Milestone C: Technical Benchmarking
- Publish detailed memory, tick-rate, and startup benchmarks comparing Plexus against standalone loaders.
Forward Plan: Forge on NeoForge
- Running MinecraftForge mods on top of a NeoForge host environment (
F-N0~F-N8pipeline).