Repository navigation
Releases
v2.1.7
Minecraft: 1.20.1, 1.20.4, 1.21.1, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
Plexus Mod Loader 2.1.7 refreshes the brand identity across all loaders, installer interfaces, and early loading screens with a unified, hand-crafted pixel-art visual theme.
🔧 Improvements & Fixes
- Replaced the brand visual identity with a pixel-art isometric cube in cyan, indigo, and purple across all interfaces and repository branding (
logo.svg). - Added a 36-frame 32x32 pixel-art loading animation (cycling every 2.16 s) to the early window and game loading overlays in 26.1, 26.2, and 26.3, replacing the previous 120-frame vector animation.
- Updated Forge and NeoForge early loading screens and spinners with clean 3x nearest-neighbour pixel scaling while preserving all loader-required image dimensions.
- Updated the installer's window, tray, and launcher profile icons via
ProfileIconto render crisp integer-scaled pixel art directly from pixel assets. - Verified visual stability and launch integrity via unit tests (
check) and real window reload and launcher profile tasks across modern target versions.
NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.
v2.1.6
Minecraft: 1.20.1, 1.20.4, 1.21.1, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
Plexus Mod Loader 2.1.6 enables Quilt mod client windows on Minecraft 1.20.1, 1.20.4, 1.21.1, and 1.21.11 to reach a world with the real Quilt corpus (corpusQuiltClient), extending client window execution that previously ran only on 26.x. This release redirects Mixin injection points targeting Fabric and Quilt loader initialization hooks to Plexus Mod Loader's entry points when running without a Forge or NeoForge host, translates object-form Mixin entries in quilt.mod.json, packages Quilt Loader's FileSystemUtil within the Fabric bridge, supplies root paths for built-in container libraries, and eliminates premature game class loading during game test server data pack generation.
🔧 Improvements & Fixes
- Move Mixin injection points targeting Fabric Loader and Quilt Loader initialization hooks (
Hooks.startClientin theMinecraftconstructor andHooks.startServerinMain.main) to Plexus Mod Loader'sonModInitialization()VviaInjectionPointReplacement.Placement.LOADER_HOOK,GameVersionAdapter.modInitializationCalls()returningModInitializationCallrecords across all seven version adapters, and the Fabric bridge'sLoaderHookCalls(ADR-0049) when no Forge or NeoForge host runs the game (matching annotation string values only, moving only Fabric Loader's call when a class targets both loaders to keep@Grouphandlers satisfied, and logging one line per changed class), fixing target lookup failures in owo-lib'sMinecraftClientMixinandMainMixin(@Group clientFreezeHooks) that stopped the game on 1.20.1 and 1.20.4. - Read object-form
quilt.mod.jsonMixin entries ({"config": ..., "environment": "client"}) inModJarTranslatorusingMixinConfigEntry.parseandparseQuiltto translate their reference maps to Mojang names and incrementIntermediaryTranslations.REVISIONfrom 3 to 4 to regenerate translated mod copies on first launch, fixing anInvalidInjectionExceptionon targetclass_310from Quilted Fabric API's data generationMinecraftClientMixinat 1.21.1 client start. - Pack Quilt Loader's JDK-only
org.quiltmc.loader.impl.util.FileSystemUtilinto the Fabric bridge and permit it throughQuiltBridgelink checks without triggeringPLEXUS-COMPAT-111refusals, allowing Quilted Fabric API 9.0.0-alpha.8's client tags module and dependent mods to load in the 1.20.4 client. - Give built-in mods of the Fabric Loader view (
java,fabricloader,mixinextras) root paths by havingFabricModContainer.getRootPaths()return the directory or jar via the newFabricLoaderRuntime.BuiltInLibrary, resolving "mixinextras has no root path" failures when mods like owo-lib on 1.20.4 traverse every mod container's root path. - Write the game test server's generated data pack (
GeneratedDataPack, across all seven game layers) empty structure file with the newEmptyStructureFile(hand-written gzip NBT withDataVersionread fromversion.json) and use its ownGenerationStepNameinstead ofGenerationStep.Decoration, preventingSharedConstants, NBT classes, and approximately 300 game classes from prematurely loading before mods' Mixin configurations apply. - Run
corpusQuiltClienton Minecraft 1.20.1, 1.20.4, 1.21.1, and 1.21.11 with each version's Quilt corpus and test modplexus-client-sessionto join a saved world, run 200 client ticks, and save and quit (loading 261 / 790 foreign mods on 1.20.1 with QSL omitted, 215 / 64 on 1.20.4 with QSL and Quilted Fabric API, 146 / 132 on 1.21.1 with QSL, and 143 / 124 on 1.21.11), while including owo-lib in 1.20.4corpusQuiltServer(160 / 145 loaded / not loaded, where owo-lib and nested Jankson remain unloaded due to link checkPLEXUS-COMPAT-111for missing Fabric API client rendering classesHudRenderCallbackandTooltipComponentCallback). - Verify the 2026-11-09 release on Java 25 with
check,build-logiccheck, headless suites on all 9 supported versions (serverBootSmokeTest,worldCreateSaveTest,gameTests "-PplexusTests=*:*", andcompatibilityMatrix, passing first time in 160 s on 1.20.1, 172 s on 1.20.4, 146 s on 1.21.1, 163 s on 1.21.11, 173 s on 26.1, 175 s on 26.1.1, 170 s on 26.1.2, 176 s on 26.2, and 194 s on 26.3),compatibilityCorpusacross all 9 versions (passing first time in 1270 s on 1.20.1, 434 s on 1.20.4, 370 s on 1.21.1, 344 s on 1.21.11, 563 s on 26.1, 558 s on 26.1.1, 533 s on 26.1.2, 666 s on 26.2, and 583 s on 26.3; loaded / not loaded acrosscorpusFabric,corpusFabricForge,corpusQuilt, andcorpusQuiltServer: 1.20.1 57/34, 29/50, 190/883, 192/827 with QSL omitted; 1.20.4 98/69, 52/86, 158/145, 160/145 with QSL; 1.21.1 92/68, 56/83, 121/171, 97/139 with QSL; 1.21.11 90/78, 64/98, 123/141, 123/96; 26.1 91/71, 75/81, 118/115, 116/72; 26.1.1 94/74, 79/82, 72/118, 70/75; 26.1.2 97/74, 82/82, 73/117, 71/73; 26.2 98/73, 91/74, 135/125, 133/80; and 26.3 98/73, 91/74, 109/79, 112/34, matching 2.1.5 except 1.20.4corpusQuiltServerat 160/145 due to owo-lib and nested Jankson), 4 passing tests inexamples/crystal-garden(build gameTests "-PplexusTests=crystal_garden:*" -PplexusLocalSdkafterpublishToMavenLocal), and 34 window task runs executed one at a time 20 s apart (corpusQuiltClienton 1.20.1, 1.20.4, 1.21.1, and 1.21.11 run twice, the second time without MineLights;clientWorldReloadTestacross all 9 versions;corpusForgeClienton 1.20.1, 1.20.4, 1.21.1, and 1.21.11;corpusNeoForgeClienton 1.20.4, 1.21.1, and 1.21.11;corpusFabricNeoForgeClienton 1.20.4 and 1.21.1;launcherProfileForgeTeston 1.20.1, 1.20.4, 1.21.1 passing on isolated rerun after a Balm 21.0.67BalmClientRuntimeSpiNoSuchElementExceptioninsided_setup, and 1.21.11;launcherProfileNeoForgeTeston 1.20.4, 1.21.1, and 1.21.11; andlauncherProfileTeston 26.3).
NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.
v2.1.5
Minecraft: 1.20.1, 1.20.4, 1.21.1, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
Plexus Mod Loader 2.1.5 enables Fabric mods to run in client windows alongside NeoForge 20.4.253 by isolating foreign network payloads, bridges local captures on host-patched delegate methods such as RenderRegionCache.createRegion, runs Origins 1.10.2 and Apoli 2.9.2 on Minecraft 1.20.1 by deferring method-ending and return hooks to a late transformation pass, resolves local variable table and private enum constructor incompatibilities on Forge 1.20.1 patched classes to include Cardinal Components API 5.2.3 and Metal Pipe 1.0.5 in corpusQuiltForge, retains QSL in Quilt corpus runs on 1.20.4 and 1.21.1, prioritizes standalone nested mod providers in CrossLoaderModResolver, and patches FML's ModList to query foreign mods across all supported pre-26.1 Forge and NeoForge versions.
🔧 Improvements & Fixes
- Allow Fabric mods to run in a NeoForge 20.4.253 (Minecraft 1.20.4, FML 2) client window by adding
NeoForgeFml2ForeignPayloadstransformation rules to NeoForge 20.4'sNetworkRegistry(canSendPacketclientbound/serverbound,onModdedPacketAtServer,onModdedPacketAtClient,filterGameBundlePackets) to delegate custom payloads to their own loaders and usingForeignPayloads.Hostto inspect configuration and play registrations to distinguish NeoForge payloads from foreign ones (ADR-0026 point 40), resolving client negotiation disconnects ("Incompatible client! Please use NeoForge 20.4.253") and packet rejections ("Tried to send minecraft:register packet to a client that does not support it"), verified viacorpusFabricNeoForgeClienton 1.20.4 (world reached, 200 client ticks, left) and 1.21.1. - Support host-patched delegate methods by moving Fabric
@Injecthandlers that capture locals atRETURN/TAIL(such as Fabric APIfabric-block-view-api-v2ChunkRendererRegionBuilderMixinwithCAPTURE_FAILHARD) to the added overload holding the vanilla body through a bridge (HostPatchAdjustments) when a host loader's patch converts a vanilla method into a delegate (NeoForge 20.4.253RenderRegionCache.createRegion) while keeping handlers without captured locals on the original method, fixing the "Invalid descriptor" client crash when building chunk meshes next to NeoForge 20.4. - Enable Origins 1.10.2 / Apoli 2.9.2 to run on Minecraft 1.20.1 by running Plexus head hooks that can end a method (
HeadHookResultCANCEL_IF_TRUE,RETURN_IF_NON_NULL, such asplexus:block_break) and hooks before a return (InvokeHookBeforeReturn) in the late transformation pass (ClassTransformExecutor.transformLate) after loader bridges' Mixin rather than the early pass (where an earlyireturnshifted Apoli's@At("RETURN", ordinal = 4)inServerPlayerGameMode.destroyBlock, causing "LVT ... has incompatible changes at opcode 177"), while keeping non-ending head hooks (CONTINUE) in the early pass, scopingParameterFrames.keepParametersto methods withInvokeHookBeforeReturn, and updatingworldCreateSaveTestexpected log lines for two-pass transformation of classes such asMinecraftServer. - Resolve incompatibilities with javac-compiled MinecraftForge 1.20.x patched classes on Forge 1.20.1 (Forge 47): rewrite Fabric/Quilt positional
LocalCaptureinto MixinExtras@Localcaptures by type viaHostCapturedLocalswhen each type maps to a single slot in the patched method (PLEXUS-COMPAT-212otherwise), allowing Cardinal Components API 5.2.3 to run in Forge's patchedFallingBlockEntity.tick; and restore vanilla package access to enum constructors made private by Forge patches viaHostEnumConstructors(read from the vanilla jar), allowing Metal Pipe 1.0.5 (EnchantmentCategoryconstant with a body) to run next to Forge 1.20.1, socorpusQuiltForgeon 1.20.1 no longer leaves them out. - Update cross-loader mod resolution (
CrossLoaderModResolver) so that when multiple nested copies share a mod ID, a nested copy that only provides that ID and is the sole copy of its own mod ID wins (matching Quilt Loader's rule requiring the only copy of a required mod to load), fixing Quilted Fabric API 7.7.0 on 1.20.1 being omitted entirely when itsquilted_fabric_api_base(providingfabric-api-base0.4.31) lost to a newer nestedfabric-api-base0.4.32 in a Fabric mod. - Retain QSL / Quilted Fabric API in
corpusQuiltandcorpusQuiltServerruns on Minecraft 1.20.4 and 1.21.1 (omitting Fabric API's own jar to avoid duplicate IDs), while excluding corpus mods that stop a server with QSL as they would under Quilt Loader (client classes loaded in init entrypoints, Regedit for 1.20.2, Tools of Perseus for 1.19.2, jars naming missing classes, Simple Voice Chat 2.6.27 for 1.21.1 whose nested QSL resource loader redirects the sameLanguage.loadDefaultcall as Quilted Fabric API's resource loader, and Custom Player Models 0.6.27a using QSL lifecycle events not held by Quilted Fabric API 11.0.0-alpha.3), while continuing to leave QSL out of 1.20.1 Quilt corpus runs (where over ten mods load client classes in init entrypoints and CristelLib 1.1.2's Mixin plugin triggers aNoSuchMethodErroronPackResources.getActivationTypebefore QSL's resource loader injectsQuiltResourcePack) and out of all corpus runs beside Forge or NeoForge. - Enable FML
ModListto query other loaders' mods on pre-26.1 Forge and NeoForge versions (ADR-0025): patchModListinstance lookups (getModFileByIdviafileById,isLoadedviaindexedMods) viaForgeModListPatchShape.FORGE_1on MinecraftForge 47 to 61 (Minecraft 1.20.1, 1.20.4, 1.21.1, 1.21.11) to delegate to Plexus Mod Loader'sForeignModList(PLEXUS-COMPAT-211if the code differs), verified on 1.20.1 answering for 29 foreign mods; and patchModListin FML'sfml_loaderBOOT module viaShape.NEOFORGE_MODLAUNCHERon NeoForge 20.4.253 (FML 2) and 21.1.265 (FML 4) with responses supplied byNeoForgeForeignModListimplementingneoforgespi(PLEXUS-COMPAT-218if the code differs), installed byPlexusModLauncherand verified on 1.21.1 (15 mods) and 1.20.4 (57 mods), resolving the limitation across all supported Forge and NeoForge versions. - Verify the 2026-11-09 release on Java 25 with
check,build-logiccheck, headless suites on all 9 supported versions (serverBootSmokeTest,worldCreateSaveTest,gameTests *:*, andcompatibilityMatrix, 127-155 s per version; updating expected log lines for two-pass transformation ofMinecraftServer),compatibilityCorpuson all 9 versions (loaded / not loaded: 1.20.1corpusFabric57/34,corpusFabricForge29/50,corpusQuilt190/883,corpusQuiltServer192/827; 1.20.4corpusFabric98/69,corpusFabricForge52/86,corpusQuilt158/145,corpusQuiltServer160/143; 1.21.1corpusFabric92/68,corpusFabricForge56/83,corpusQuilt121/171,corpusQuiltServer97/139; 1.21.11corpusFabric90/78,corpusFabricForge64/98,corpusQuilt123/141,corpusQuiltServer123/96; 26.1corpusQuilt118/115,corpusQuiltServer116/72; 26.1.1 72/118 and 70/75; 26.1.2 73/117 and 71/73; 26.2 135/125 and 133/80; 26.3 109/79 and 112/34), separate development runs forcorpusQuiltForge1.20.1 (110 loaded / 909 not loaded, with Metal Pipe 1.0.5 and Cardinal Components API 5.2.3 included),corpusFabricNeoForge1.21.1 (15/40) and 1.20.4 (57/80), andcorpusFabricForge1.20.1, and all 26 window tasks run one at a time 20 s apart (clientWorldReloadTestacross all 9 versions;corpusForgeClienton 1.20.1, 1.20.4, 1.21.1, and 1.21.11;corpusNeoForgeClienton 1.20.4, 1.21.1, and 1.21.11;launcherProfileForgeTeston 1.20.1, 1.20.4, 1.21.1, and 1.21.11;launcherProfileNeoForgeTeston 1.20.4, 1.21.1, and 1.21.11;corpusFabricNeoForgeClienton 1.20.4 and 1.21.1; andlauncherProfileTeston 26.3).
NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.
v2.1.4
Minecraft: 1.20.1, 1.20.4, 1.21.1, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
Plexus Mod Loader 2.1.4 keeps obfuscated stack map frames unchanged in remapped pre-26.1 game jars so the Minecraft 1.20.1 Quilt game test server runs, fixes Forge 47 and NeoForge 20.4 startup, mod discovery, and enum extension issues so corpusQuiltForge passes on 1.20.1, and verifies installed launcher profiles on Forge 1.20.1, 1.20.4, 1.21.1, and 1.21.11 and NeoForge 1.20.4, 1.21.1, and 1.21.11 as well as Fabric client windows alongside NeoForge 21.1.265.
🔧 Improvements & Fixes
- Keep the obfuscated jar's stack map frames as they are in remapped pre-26.1 game jars (remapper revision 5, regenerating remapped jars on first launch) and make
thisand parameters live in frames only inside methods changed by a Plexus transform rule (movingParameterFramesintoClassTransformExecutorin the transform engine), fixing Mixin 0.8.7 local capture broken by revision 4's widened frames in Cardinal Components API 5.2.3's block-module implicit@ModifyVariableinBlockInput.place(1.20.1) and Fabric API's lifecycleLocalCaptureinLevelChunk.setBlockEntitywhile keeping QSL passing on 1.20.1, 1.20.4 (Polymer), and 1.21.1. - Include
corpusQuilton Minecraft 1.20.1 incompatibilityCorpusnow that the 1.20.1 Quilt game test server runs past Cardinal Components API, loading 184 mods with 877 not loaded (leaving Graphene 1.5.0 out of that run because its server tick handler loads an unmapped client class) alongside 186 loaded / 821 not loaded on the 1.20.1 Quilt dedicated server. - Fix startup crashes (
PLEXUS-COMPAT-208) on Forge 1.20.1 (Forge 47) in installed launcher profiles, wheresecurejarhandler2.1.10 on the JVM class path needsjava.lang.invokeopened and aunion:URL handler, by passing the Java agent's JDK module access to the Forge game host, openingjava.lang.invoke, and installing theunion:URL handler shared with NeoForge, passinglauncherProfileForgeTeston 1.20.1, 1.20.4, 1.21.1, and 1.21.11 andlauncherProfileNeoForgeTeston 1.20.4, 1.21.1, and 1.21.11 (installed Forge and NeoForge launcher profiles on 1.20.1, 1.20.4, and 1.21.1 were unverified in 2.1.3). - Fix NeoForge 20.4 (FML 2) stopping with "Missing language javafml version" by leaving out
javafmlmods whosemods.tomlhas an empty or missingloaderVersionbefore FML starts (PLEXUS-COMPAT-217), allowing multi-loader jars such as YACL 3.6.6 to run through the Fabric bridge so Zoomify finds YACL. - Fix Forge 47 (Minecraft 1.20.1) stopping with "has mods that were not found" by leaving
javafmljars whosemods.tomldeclares a mod with no matching@Modclass (data packs packaged as mods and multi-loader Quilt or Fabric jars carrying another loader'smods.toml, such as a Sinytra Connector placeholder) out of Forge discovery (PLEXUS-COMPAT-209) so multi-loader jars fall back to the Quilt or Fabric bridge, while leaving Forge 49 and later unaffected. - Fix Forge's
RuntimeEnumExtenderfailing with "Enum has create method but we could not find $VALUES" when a Fabric or Quilt access widener widens an enum's$VALUESfield (such asEnchantmentCategoryon Forge 1.20.1) by showing the plugin$VALUESwith its compiled flags (private static final synthetic) and restoring the widened access afterwards. - Pass
corpusQuiltForge(Quilt mods next to Forge) on Minecraft 1.20.1 with 98 loaded mods, leaving Metal Pipe 1.0.5 (illegal access to Forge's privateEnchantmentCategoryconstructor) and Cardinal Components API 5.2.3 (local variable mismatch in Forge's patchedFallingBlockEntity.tick) out of that run. - Verify Fabric mods next to NeoForge 21.1.265 (Minecraft 1.21.1) in a game client window, passing
corpusFabricNeoForgeClientafter reaching the world, running 200 ticks, and leaving. - Verify the 2026-11-08 release on Java 25 with
check,build-logiccheck, headless runs on all 9 supported versions (serverBootSmokeTest,worldCreateSaveTest,gameTests *:*, andcompatibilityMatrix, 172-213 s per version),compatibilityCorpuson all 9 versions (last-stage loaded / not loaded: 1.20.1 Quilt server 186 / 821, 1.20.4 111 / 153, 1.21.1 109 / 123, 1.21.11 123 / 96, and 26.1 Quilt server 116 / 72), and all 20 window tasks run one at a time 20 s apart (clientWorldReloadTeston 1.20.1, 1.20.4, 1.21.1, and 1.21.11, with 26.x not rerun as no 26.x game-layer code changed since 2.1.3;corpusForgeClientandlauncherProfileForgeTeston 1.20.1, 1.20.4, 1.21.1, and 1.21.11;corpusNeoForgeClientandlauncherProfileNeoForgeTeston 1.20.4, 1.21.1, and 1.21.11;corpusFabricNeoForgeClienton 1.21.1; andlauncherProfileTeston 26.3).
NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.
v2.1.3
Minecraft: 1.20.1, 1.20.4, 1.21.1, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
Plexus Mod Loader 2.1.3 runs Quilt Standard Libraries (QSL) and Quilted Fabric API on Minecraft 1.20.1, 1.20.4, and 1.21.1 with automatic first-launch downloads, enables Fabric and Quilt mods headless alongside NeoForge 20.4.253 (1.20.4) and 21.1.265 (1.21.1), and verifies game client windows on Forge 1.20.1, 1.20.4, and 1.21.1 and NeoForge 20.4 and 21.1.
✨ What's New
- Run Quilt Standard Libraries (QSL) / Quilted Fabric API on Minecraft 1.20.1, 1.20.4, and 1.21.1 (ADR-0048), automatically downloading pinned, SHA-512-checked Quilted Fabric API builds on first launch when an installed Quilt mod needs a QSL module (
PLEXUS-DISCOVERY-006/PLEXUS-DISCOVERY-007, enabled by default like Fabric API and disabled via-Dplexus.qsl=off), verified on game test servers with Quilted Fabric API alone on 1.20.1, 1.20.4, and 1.21.1 and with Polymer (Lightning Podoboo) on 1.20.4. - Run Fabric and Quilt mods headless in the same game as NeoForge 21.1.265 (Minecraft 1.21.1) and NeoForge 20.4.253 (1.20.4) with one shared Mixin, passing
corpusFabricNeoForge(1.21.1: 15 loaded / 40 not loaded; 1.20.4: 48 / 80),corpusFabricOnNeoForge(1.21.1: 69 / 88; 1.20.4: 65 / 89), andcorpusQuiltNeoForge(1.21.1: 72 / 194; 1.20.4: 77 / 179), while leaving out Fabric API's own build when Forgified Fabric API is present on 1.21.1, not listing other loaders' mods in FML'sModList, and leaving client windows unchecked for this combination. - Verify Forge and NeoForge game client windows one window at a time using the real-mod corpus with the
plexus-client-sessiondriver (reaching the world, running 200 client ticks, and leaving), passingcorpusForgeClienton Minecraft 1.20.1, 1.20.4, 1.21.1, and 1.21.11 andcorpusNeoForgeClienton 1.20.4 (NeoForge 20.4.253), 1.21.1 (21.1.265), and 1.21.11 (21.11.48).
🔧 Improvements & Fixes
- Preserve the obfuscated jar's stack map frames in remapped pre-26.1 game jars with
thisand parameters kept live in every frame (remapper revision 4,ParameterFrames), fixing implicit@ModifyVariableinjections (such as QSL'sEnchantmentMenu) that recomputed frames broke because Mixin 0.8.7 reads locals from frame kinds, avoiding Minecraft client library downloads in the installer just for the remap, and regenerating remapped jars on first launch. - Fix game test server startup on Minecraft 1.20.1, 1.20.4, and 1.21.1 so it no longer re-runs
BuiltInRegistries.bootStrapbefore tests (performing only freeze and validate), ensuring QSLinitentrypoints run once. - Fix launcher world quick play (
--quickPlaySingleplayer) on Forge 1.21.1 and 1.20.x by starting Forge's game event bus before the integrated server soServerStartingEventreaches mods, preventing Xaero's Minimap and World Map from disconnecting the player ("Error loading server world map properties") and passing client window verification on Forge 1.21.1 (corpusForgeClient). - Fix Forge 1.20.x SRG translation so a Mixin method selector that is a bare SRG name of an overloaded method receives the Mojang descriptor unless overrides give the ID other descriptors, resolving Entity Model Features'
MixinModelPartpicking the wrongrenderoverload on Forge 1.20.4. - Fix Forge 1.20.x SRG translation so a Mixin method selector that names its owner, such as
Lnet/minecraft/client/renderer/entity/layers/ParrotOnShoulderLayer;m_117317_(Entity Texture Features'MixinShoulderParrotFeatureRenderer@ModifyArg), also receives the Mojang descriptor when the Mojang name is overloaded, preventing Mixin from picking the wrongrenderoverload and crashing the Forge 1.20.4 client ("failed injection check, (0/1) succeeded"). - Fix the Forge and NeoForge ModLauncher bridge so the class loader handed to launch plugins in
initializeLaunchbuilds a class with the other launch plugins and transformers applied, under the plugin's name, as ModLauncher does, allowing Mixin's class metadata to see access transformer changes and resolving Forgified Fabric API's@ModifyVariablefailing withLVTGeneratorError("Could not locate method metadata for renderHitOutline") on NeoForge 21.1 where an access transformer madeLevelRenderer.renderHitOutlinepublic. - Fix loader detection for NeoForge 20.4 mods whose
mods.tomlnames no loader (Entity Texture Features, BadOptimizations, ImmediatelyFast, Mouse Tweaks, and Dynamic FPS) by recognising them as NeoForge mods from their classes so NeoForge runs instead of MinecraftForge leaving 31 NeoForge mods out (PLEXUS-COMPAT-221), with the NeoForge 20.4 client window reaching the world and leaving after 200 ticks. - Fix
IllegalAccessErrorfailures on Forge 1.20.1 and NeoForge 21.1 when Mixins target library classes (such as FancyMenu targeting LWJGL'sGLFW) by using the library class untransformed as under ModLauncher instead of making an empty class in the game class loader. - Update
PLEXUS-COMPAT-303,PLEXUS-COMPAT-308, andPLEXUS-COMPAT-311messages to name QSL's releases (1.20.1, 1.20.4, and 1.21.1) instead of saying QSL has no release for 26.x.
NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.
v2.1.2
Minecraft: 1.20.1, 1.20.4, 1.21.1, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
Plexus Mod Loader 2.1.2 enables Fabric API alongside MinecraftForge on Minecraft 1.20.1 and 1.20.4, runs Quilt mods headless on 1.20.1, 1.20.4, 1.21.1, and 1.21.11, and verifies Forge 61.2.5 and NeoForge 21.11.48 in game client windows on 1.21.11.
✨ What's New
- Run Fabric API next to MinecraftForge on Minecraft 1.20.1 (Forge 47.4.28) and 1.20.4 (Forge 49.2.13) by opening reviewed host-final methods (specifically
Ingredient.toNetworkforCustomIngredientImpl), reported as informationalPLEXUS-COMPAT-228(ADR-0047), extending automatic Fabric API download (ADR-0046) to Forge on both versions, and passing headless real-mod runs (corpusFabricForge) withfabric-recipe-api-v1loaded (1.20.1: 29 loaded / 50 not loaded; 1.20.4: 52 / 86; 1.21.1, 1.21.11, 26.2, and 26.3 unchanged and passing). - Run Quilt mods headless on Minecraft 1.20.1, 1.20.4, 1.21.1, and 1.21.11, bundling Quilt Config 1.3.3 (Apache-2.0) and Quilt Loader's QuiltConfig API saving configs as JSON5, preserving Mixin refmap keys during intermediary-to-Mojang translation, and resolving
@Accessorand@Invokernames inside target classes, verified on dedicated servers up to the EULA check (1.20.1: 189 loaded / 821 not loaded; 1.20.4: 111 / 153; 1.21.1: 109 / 123; 1.21.11: 123 / 96) and on game test servers (1.20.4: 112 / 153; 1.21.1: 115 / 173; 1.21.11: 123 / 141). - Run Forge and NeoForge in game windows on Minecraft 1.21.11 with Forge 61.2.5 and NeoForge 21.11.48, verified using real-mod sets in development environments and installed launcher profiles joining a world for 200 ticks and leaving via the new
plexus-client-sessiontest mod. - Add an optional pinned Quilted Fabric API download for Minecraft 1.20.1, 1.20.4, and 1.21.1 (
PLEXUS-DISCOVERY-006added,PLEXUS-DISCOVERY-007failed), disabled by default and enabled via-Dplexus.qsl=on(ADR-0048), noting that pre-26.1 Quilt Standard Libraries (QSL) / Quilted Fabric API do not run yet due to differing stack map frames in remapped game jars and that no QSL exists for 1.21.11 or 26.x.
🔧 Improvements & Fixes
- Fix launch stops (
PLEXUS-TRANSFORM-002under ruleplexus:server_tick_events) in installed launcher profiles with Fabric API next to Forge 1.21.11 by excluding the obfuscated Minecraft jar on the JVM class path from library inspection so host-patch checks inspect Forge's patched classes. - Fix Forge's
field_to_methodcoremod failure ("Field climateSettings is not private") when Fabric API widens field access, and exclude mods overriding unreviewed host-final methods withPLEXUS-COMPAT-224instead of stopping the game. - Fix automatic Fabric API downloads being triggered by multi-loader universal jars that the host loader already runs, such as CustomSkinLoader next to Forge.
- Fix pre-launch and compatibility handling on Minecraft 1.20.1, 1.20.4, and 1.21.1 by excluding Forge mods with missing language loaders (such as libIPN needing Kotlin for Forge) with
PLEXUS-COMPAT-209, renaming nested jars underMETA-INF/jars/from SRG to Mojang names on Forge 1.20.x, allowing Plexus Mods alongside NeoForge 20.4 and 21.1 without stopping launch, and treating dual-manifest jars requiring neoforge (such as Entity Culling for 1.20.4) strictly as NeoForge mods. - Keep Fabric and Quilt mods separate from NeoForge 20.4 (1.20.4) and 21.1 (1.21.1), where NeoForge's boot-layer Mixins in FML and ModList require further development.
- Keep game windows on Minecraft 1.20.1, 1.20.4, and 1.21.1 unverified pending individual mod fixes (Xaero's World Map disconnects on Forge 1.21.1; Entity Model Features Mixin descriptor fails on Forge 1.20.4; FancyMenu Mixin into LWJGL GLFW fails with an IllegalAccessError between modules on Forge 1.20.1 and NeoForge 21.1; Entity Texture Features and BadOptimizations fail mod construction on NeoForge 20.4; Cardinal Components API block module stops the 1.20.1 Quilt game test server).
NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.
v2.1.1
Minecraft: 1.20.1, 1.20.4, 1.21.1, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
Plexus Mod Loader 2.1.1 automatically downloads a pinned Fabric API build on first launch when Fabric or Quilt mods are present without it, and runs Fabric API's recipe module next to NeoForge on Minecraft 26.1, 26.1.1, and 26.1.2.
✨ What's New
- Download the pinned Fabric API build for the current Minecraft version from Modrinth on first launch when the
modsfolder has Fabric or Quilt mods without Fabric API or Quilted Fabric API, checking it with SHA-512, keeping it in.plexus/fabric-api/in the game folder, and loading it as if it were in themodsfolder. - Show the Fabric API download in the early loading window and report
PLEXUS-DISCOVERY-004in the log when it is added, orPLEXUS-DISCOVERY-005if the download fails, with the game still starting and reporting Fabric mods that need Fabric API as missing it as before. - Use Fabric API from the
modsfolder instead when present, turn off automatic Fabric API with-Dplexus.fabricApi=off, and skip adding it next to Forge on Minecraft 1.20.1 and 1.20.4 or NeoForge on 1.20.4 and 1.21.1, where Fabric API cannot run yet.
🔧 Improvements & Fixes
- Fix Fabric API's recipe module (
fabric-recipe-api-v1) being left out withPLEXUS-COMPAT-224on Minecraft 26.1, 26.1.1, and 26.1.2 with NeoForge by letting NeoForge'sIngredient.hashCode()serve both loaders, running Fabric's code for every ingredient that is not a NeoForge custom ingredient so Fabric mods' recipe sync channels work next to NeoForge mods (verified headless on 26.1, 26.1.1, and 26.1.2).
NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.
v2.1.0
Minecraft: 1.20.1, 1.20.4, 1.21.1, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
Plexus Mod Loader 2.1.0 extends Fabric, Forge, and NeoForge mod support across Minecraft 1.20 and 1.21 versions, expands Native API events, content, and data edits, adds search to the installer's version list, and relicenses under the MIT License.
✨ What's New
- Run Fabric mods on Minecraft 1.20.1, 1.20.4, 1.21.1, and 1.21.11 by translating them to Mojang names on the player's computer as 26.x already does, verified with real mods on those versions and 26.3.
- Run Forge mods on Minecraft 1.20.1 (Forge 47.4.28), 1.20.4 (49.2.13), 1.21.1 (52.1.21), and 1.21.11 (61.2.5), renaming SRG member names in Forge 1.20.x and its mods to Mojang names once on the player's machine.
- Run NeoForge mods on Minecraft 1.20.4 (NeoForge 20.4.253), 1.21.1 (21.1.265), and 1.21.11 (21.11.48); 1.20.x/1.21.x Forge/NeoForge were verified headless only with real mods on dedicated and game test servers (client windows not run yet).
- Add Native API events and hooks:
PlayerEvents.TICK,InteractionEvents.ATTACK_BLOCK,BlockEvents.BREAK_CANCELLED,EntityEvents.LEFT_WORLD,ALLOW_DEATH,AFTER_DAMAGE,DROPS,KILLED_OTHER,EQUIPMENT_CHANGED,ChatEvents.SYSTEM_MESSAGE, andLootEvents.MODIFY. - Add Native API content for tool and armour materials, fuel, compostable and flammable items and blocks,
creativeTab(tab, after), villager and wandering trader trades, andConfigSpecandModRegistryfor mod-owned data. - Edit worldgen, trades, and loot in the Native API with
WorldgenRegistrar.removeSpawn/removeFeature,TradeRegistrar.removeVillagerTrades/removeWanderingTrades,LootTableEdits(addPool,removeItem,replaceItem), andLootDrops.random(). - Query craft, furnace, smoker, campfire, and stonecutter recipes via
WorldView.recipes(),RecipeLookup.all(), andingredients(), and accessItemStackRefenchantments, lore, unbreakable, and custom model data. - Search the installer's Minecraft version list as you type, group versions by series, highlight the default version, install from the keyboard, and complete partial CLI versions such as
--minecraft 1.21.
🔧 Improvements & Fixes
- Fix game test server runs for Fabric mods touching built-in registries by freezing registries once before start so
minecraft:always_passis registered when Fabric API's registry sync loads (1.20.1, 1.21.1). - Fix loading of Fabric mods that use Puzzles Lib's
LOADmixin on Minecraft 1.20.4 by dropping dead locals from recomputed stack map frames. - Fix
PLEXUS-COMPAT-111exclusions for Fabric mods that fill Fabric Loader's error window (such as ModernFix) by sending the error text to the log instead of leaving those mods out. - Fix mod resource pack loading on NeoForge 20.4 by supporting its changed
Pack.Infoconstructor. - Fix a possible startup deadlock between the Fabric bridge's Mixin setup and FML's background mod scan.
- Fix Native API trade removals on 26.1-26.3 so trades added by mods are not removed, and report unknown items or professions in removals with
PLEXUS-TRADE-005. - Run fewer constant-pool passes during startup link checks and check other loaders only when a game member is missing, so startup link checks do less work.
- Reuse verified checksums for the remap cache key in the installer when reinstalling for a Minecraft version before 26.1.
- Keep Fabric or Quilt mods separate from Forge on 1.20.1/1.20.4 and NeoForge 20.4/21.1 for now, as they do not run together on those versions yet.
- License Plexus Mod Loader under the MIT License instead of MPL-2.0, with every jar carrying the new
LICENSEinMETA-INF; earlier releases keep the license they were released with, and templates and examples stay MIT-0.
NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.
v2.0.0
Minecraft: 1.20.1, 1.20.4, 1.21.1, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
Promotes Minecraft 1.20.1, 1.20.4, 1.21.1, and 1.21.11 to supported versions with client-side Mojang remapping, advances the Plexus Mod Loader major release to 2.0.0 requiring the '>=2.0.0 <3.0.0' dependency range, introduces tick, attribute, and client input events to the Native API, expands Quilt mod compatibility, drops legacy 'poly' compatibility layers (ADR-0036), and adds initial loader comparison benchmark tasks.
✨ What's New
- Supported Minecraft Versions: Minecraft 1.20.1, 1.20.4, 1.21.1, and 1.21.11 are now supported versions (ADR-0033, ADR-0035), executed via client-side on-demand remapping to Mojang official names (ADR-0019) without redistributing remapped jars.
- Version Compatibility Boundaries: On pre-26.1 obfuscated versions (1.20.1, 1.20.4, 1.21.1, 1.21.11), Forge and NeoForge mods are left out (Forge
PLEXUS-COMPAT-206, NeoForgePLEXUS-COMPAT-216; ADR-0033, ADR-0035). Plexus mods run there. Fabric's intermediary names are not translated yet, so a Fabric or Quilt mod runs only if it needs none of them: most released mods for these versions are left out withPLEXUS-COMPAT-112orPLEXUS-COMPAT-126(real mod sets: 2 of 10 Fabric mods on 1.20.1, 16 or 17 of 42 on the others). ADR-0034, which covers NeoForge on 1.20.1, 1.20.4, and 1.21.1, is still proposed. - Native API: Added
ServerEvents.TICK_END,WorldEvents.TICK_START, andWorldEvents.TICK_ENDfiring at the end of each server tick and at the start and end of each level dimension tick. - Native API: Added custom attribute definitions via
ContentRegistrar.attributeandAttributeDefinition, as well as runtime attribute queries and modifications throughLivingEntityView. - Native API: Added
ClientEvents.KEY_INPUT,ClientEvents.MOUSE_BUTTON, andClientEvents.MOUSE_SCROLLobserving keyboard and mouse inputs. - Quilt Compatibility: Runs Quilt mods whose QSL entrypoints implement Fabric initializer interfaces (
PLEXUS-COMPAT-311), treating dependencies onquilt_baseas met. - Quilt Compatibility: Runs Quilt mods requiring external language adapters when provided by loaded mods, rejecting missing adapters with
PLEXUS-COMPAT-312. - Windowing: The early loading window now opens as a background UI element on macOS.
- Benchmarks: Added
frameBenchmarkPureFabriccomparing client frame times against vanilla and pure Fabric Loader KnotClient, and addedstartupBenchmarkPureNeoForgeandtickBenchmarkPureNeoForge(Minecraft 26.2) comparing against standalone NeoForge dedicated servers. - Architecture Decisions: Proposed ADR-0034 (NeoForge on 1.20.1, 1.20.4, and 1.21.1; awaiting owner confirmation), accepted ADR-0035 promoting early versions with client-side remapping, and accepted ADR-0036 dropping legacy 'poly' compatibility layers.
🔧 Improvements & Fixes
- Breaking Changes (Mod Developers): Dropped legacy 'poly' compatibility fallbacks; 'poly.mod.json' is no longer discovered or parsed (jars containing only 'poly.mod.json' fail mod discovery with
PLEXUS-DISCOVERY-002), runtime bytecode remapping for legacy package 'dev.polymodloader.' is removed, loader dependency ID 'poly' is removed, system/Gradle properties 'poly.'/'poly' are ignored, and Gradle plugin ID marker 'dev.polymodloader.mod' is removed (ADR-0036). - Breaking Changes (Mod Developers): Native mods must use 'plexus.mod.json', apply Gradle plugin 'dev.plexusmodloader.mod', and declare the 'plexus' dependency range as '>=2.0.0 <3.0.0'.
- Breaking Changes (Runtime & System): Dropped reading 'config/poly/backups.properties' and legacy backup directory names, renamed system replacement 'poly:game_brand' to 'plexus:game_brand', renamed worldgen structure piece to 'plexus:code_structure_piece', and removed installer legacy 'polymodloader-' launcher profile handling.
- Game Layer: Implemented the Native API common (server) layer and the client layer in
plexus-game-v1_20_1,plexus-game-v1_20_4, andplexus-game-v1_21_1(version adapter rules and hooks for content, commands, networking, world services, generated data, tags, attributes, entities, worldgen, input events, HUD, screens, renderers, particles, and tooltips), replacing the former boot skeletons. Rules are checked against the remapped game classes byBuiltInRulesTest. - Game Layer: Added
GameTestMainentrypoints for Minecraft 1.20.1 and 1.20.4, which have nonet.minecraft.gametest.Main, so headless GameTest runs work there. Minecraft 1.20.1 has no configuration network phase, so declared configuration exchanges run as login queries. - Game Layer: A mod jar written in the later data layout now works on 1.20.1, 1.20.4, and 1.21.1 (
LaterFormatPack): older folder names such astags/blocksandloot_tablesare answered from the later files, andmodels/item/<name>.jsonfromitems/<name>.json. A definition that cannot become a model isPLEXUS-RESOURCE-011. - Game Layer: A world with a mod's dimension no longer asks for a backup as an experimental world on versions before 26.1 (rule
plexus:mod_dimension_count), and mod packs count as built in on 1.20.x. - Build & Verification: Refined
serverBootSmokeTesttransformation rule count assertions per version family, expecting 52 rules on 1.20.1, 54 on 1.20.4 and 1.21.1, 53 on 1.21.11, and 54 on 26.x. - Benchmarks: Excluded 26.2-format enchantment data pack mods from
startupBenchmarkQuiltandtickBenchmarkQuiltto prevent world loading issues on 26.3. - SDK: The
plexus-gradle-pluginjar now bundlesMETA-INF/LICENSEandMETA-INF/THIRD_PARTY_NOTICES.md, verified byverifySdkRepository. - Discovery: Nested jar entries prefixed with dots are safely extracted to
nested.jarwithin their hash directory instead of failing mod discovery. - Forge: Forge files are downloaded over HTTP/1.1, because a Forge installer download stalled over HTTP/2.
- UI: Refreshed dialog and loading screen notices to clearly state "Not yet supported by Plexus Mod Loader" alongside updated Korean translations.
NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.
v1.10.0
Minecraft: 26.1, 26.1.1, 26.1.2, 26.2, 26.3
Plexus Mod Loader runs all of Fabric API and Sodium next to MinecraftForge 26.2 and 26.3, adds fluid rendering and biome host modules, and fixes world joining, chunk drawing, server startup, and fluid behavior across MinecraftForge and NeoForge.
✨ What's New
- Add MinecraftForge host module
fabric-rendering-fluids-v1(6.0.4+plexus.forge.26.2,6.0.6+plexus.forge.26.3) with Forge fluid overlay checks. - Add NeoForge host module
fabric-biome-api-v1(18.0.6+plexus.neoforge.26.2,20.1.1+plexus.neoforge.26.3) to preserve Fabric biome changes inModifiableBiomeInfo. - Support drowning, swimming, sinking, and boats in Fabric mod fluids on NeoForge 26.2 and 26.3 by mapping
FluidBehaviortags toFluidTypeinfabric-content-registries-v0. - Run every Fabric API module on the client next to MinecraftForge 26.2 and 26.3, and run Sodium next to Forge again.
🔧 Improvements & Fixes
- Fix client world-join
ClassCastExceptiononminecraft:registernext to MinecraftForge 26.2-65.1.5 and 26.3-66.1.0 with Fabric API viaForgeForeignPayloads. - Fix client stops on first chunk drawing (
PLEXUS-COMPAT-225inFluidRendererMixin) next to MinecraftForge 26.2 and 26.3 with Fabric API. - Fix NeoForge server stops from Fabric biome changes at start (26.2, 26.3) and Fabric mod fluids, and fix boats rising from the bottom of such fluids on MinecraftForge.
- Fix Forge leaving out
fabric-content-registries-v0,fabric-item-api-v1,fabric-screen-api-v1,fabric-object-builder-api-v1,fabric-data-generation-api-v1, andfabric-renderer-api-v1. - Add
HOST_COVERSandHOST_NEUTRAL_ARGUMENTplacements (HostNeutralArguments) plusHostTargetCallsandReplacedReceiver(PLEXUS-COMPAT-226) bridges. - Support receiver-only
HostStaticCallsscreen helpers,ItemWrap(BLOCK_BREAK_RESET) bridges, andowner.name(desc)targets inHostPatchAdjustments.targetNotation.
NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.