Repository navigation
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.