Skip to content

Releases

v2.1.7

Choose a tag to compare

@rigelx2b rigelx2b released this 09 Nov 16:49

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 ProfileIcon to 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

Choose a tag to compare

@rigelx2b rigelx2b released this 09 Nov 14:11

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.startClient in the Minecraft constructor and Hooks.startServer in Main.main) to Plexus Mod Loader's onModInitialization()V via InjectionPointReplacement.Placement.LOADER_HOOK, GameVersionAdapter.modInitializationCalls() returning ModInitializationCall records across all seven version adapters, and the Fabric bridge's LoaderHookCalls (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 @Group handlers satisfied, and logging one line per changed class), fixing target lookup failures in owo-lib's MinecraftClientMixin and MainMixin (@Group clientFreezeHooks) that stopped the game on 1.20.1 and 1.20.4.
  • Read object-form quilt.mod.json Mixin entries ({"config": ..., "environment": "client"}) in ModJarTranslator using MixinConfigEntry.parse and parseQuilt to translate their reference maps to Mojang names and increment IntermediaryTranslations.REVISION from 3 to 4 to regenerate translated mod copies on first launch, fixing an InvalidInjectionException on target class_310 from Quilted Fabric API's data generation MinecraftClientMixin at 1.21.1 client start.
  • Pack Quilt Loader's JDK-only org.quiltmc.loader.impl.util.FileSystemUtil into the Fabric bridge and permit it through QuiltBridge link checks without triggering PLEXUS-COMPAT-111 refusals, 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 having FabricModContainer.getRootPaths() return the directory or jar via the new FabricLoaderRuntime.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 new EmptyStructureFile (hand-written gzip NBT with DataVersion read from version.json) and use its own GenerationStepName instead of GenerationStep.Decoration, preventing SharedConstants, NBT classes, and approximately 300 game classes from prematurely loading before mods' Mixin configurations apply.
  • Run corpusQuiltClient on Minecraft 1.20.1, 1.20.4, 1.21.1, and 1.21.11 with each version's Quilt corpus and test mod plexus-client-session to 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.4 corpusQuiltServer (160 / 145 loaded / not loaded, where owo-lib and nested Jankson remain unloaded due to link check PLEXUS-COMPAT-111 for missing Fabric API client rendering classes HudRenderCallback and TooltipComponentCallback).
  • Verify the 2026-11-09 release on Java 25 with check, build-logic check, headless suites on all 9 supported versions (serverBootSmokeTest, worldCreateSaveTest, gameTests "-PplexusTests=*:*", and compatibilityMatrix, 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), compatibilityCorpus across 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 across corpusFabric, corpusFabricForge, corpusQuilt, and corpusQuiltServer: 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.4 corpusQuiltServer at 160/145 due to owo-lib and nested Jankson), 4 passing tests in examples/crystal-garden (build gameTests "-PplexusTests=crystal_garden:*" -PplexusLocalSdk after publishToMavenLocal), and 34 window task runs executed one at a time 20 s apart (corpusQuiltClient on 1.20.1, 1.20.4, 1.21.1, and 1.21.11 run twice, the second time without MineLights; clientWorldReloadTest across all 9 versions; corpusForgeClient on 1.20.1, 1.20.4, 1.21.1, and 1.21.11; corpusNeoForgeClient on 1.20.4, 1.21.1, and 1.21.11; corpusFabricNeoForgeClient on 1.20.4 and 1.21.1; launcherProfileForgeTest on 1.20.1, 1.20.4, 1.21.1 passing on isolated rerun after a Balm 21.0.67 BalmClientRuntimeSpi NoSuchElementException in sided_setup, and 1.21.11; launcherProfileNeoForgeTest on 1.20.4, 1.21.1, and 1.21.11; and launcherProfileTest on 26.3).

NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.

v2.1.5

Choose a tag to compare

@rigelx2b rigelx2b released this 08 Nov 21:40

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 NeoForgeFml2ForeignPayloads transformation rules to NeoForge 20.4's NetworkRegistry (canSendPacket clientbound/serverbound, onModdedPacketAtServer, onModdedPacketAtClient, filterGameBundlePackets) to delegate custom payloads to their own loaders and using ForeignPayloads.Host to 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 via corpusFabricNeoForgeClient on 1.20.4 (world reached, 200 client ticks, left) and 1.21.1.
  • Support host-patched delegate methods by moving Fabric @Inject handlers that capture locals at RETURN/TAIL (such as Fabric API fabric-block-view-api-v2 ChunkRendererRegionBuilderMixin with CAPTURE_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.253 RenderRegionCache.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 (HeadHookResult CANCEL_IF_TRUE, RETURN_IF_NON_NULL, such as plexus: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 early ireturn shifted Apoli's @At("RETURN", ordinal = 4) in ServerPlayerGameMode.destroyBlock, causing "LVT ... has incompatible changes at opcode 177"), while keeping non-ending head hooks (CONTINUE) in the early pass, scoping ParameterFrames.keepParameters to methods with InvokeHookBeforeReturn, and updating worldCreateSaveTest expected log lines for two-pass transformation of classes such as MinecraftServer.
  • Resolve incompatibilities with javac-compiled MinecraftForge 1.20.x patched classes on Forge 1.20.1 (Forge 47): rewrite Fabric/Quilt positional LocalCapture into MixinExtras @Local captures by type via HostCapturedLocals when each type maps to a single slot in the patched method (PLEXUS-COMPAT-212 otherwise), allowing Cardinal Components API 5.2.3 to run in Forge's patched FallingBlockEntity.tick; and restore vanilla package access to enum constructors made private by Forge patches via HostEnumConstructors (read from the vanilla jar), allowing Metal Pipe 1.0.5 (EnchantmentCategory constant with a body) to run next to Forge 1.20.1, so corpusQuiltForge on 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 its quilted_fabric_api_base (providing fabric-api-base 0.4.31) lost to a newer nested fabric-api-base 0.4.32 in a Fabric mod.
  • Retain QSL / Quilted Fabric API in corpusQuilt and corpusQuiltServer runs 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 same Language.loadDefault call 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 a NoSuchMethodError on PackResources.getActivationType before QSL's resource loader injects QuiltResourcePack) and out of all corpus runs beside Forge or NeoForge.
  • Enable FML ModList to query other loaders' mods on pre-26.1 Forge and NeoForge versions (ADR-0025): patch ModList instance lookups (getModFileById via fileById, isLoaded via indexedMods) via ForgeModListPatch Shape.FORGE_1 on MinecraftForge 47 to 61 (Minecraft 1.20.1, 1.20.4, 1.21.1, 1.21.11) to delegate to Plexus Mod Loader's ForeignModList (PLEXUS-COMPAT-211 if the code differs), verified on 1.20.1 answering for 29 foreign mods; and patch ModList in FML's fml_loader BOOT module via Shape.NEOFORGE_MODLAUNCHER on NeoForge 20.4.253 (FML 2) and 21.1.265 (FML 4) with responses supplied by NeoForgeForeignModList implementing neoforgespi (PLEXUS-COMPAT-218 if the code differs), installed by PlexusModLauncher and 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-logic check, headless suites on all 9 supported versions (serverBootSmokeTest, worldCreateSaveTest, gameTests *:*, and compatibilityMatrix, 127-155 s per version; updating expected log lines for two-pass transformation of MinecraftServer), compatibilityCorpus on all 9 versions (loaded / not loaded: 1.20.1 corpusFabric 57/34, corpusFabricForge 29/50, corpusQuilt 190/883, corpusQuiltServer 192/827; 1.20.4 corpusFabric 98/69, corpusFabricForge 52/86, corpusQuilt 158/145, corpusQuiltServer 160/143; 1.21.1 corpusFabric 92/68, corpusFabricForge 56/83, corpusQuilt 121/171, corpusQuiltServer 97/139; 1.21.11 corpusFabric 90/78, corpusFabricForge 64/98, corpusQuilt 123/141, corpusQuiltServer 123/96; 26.1 corpusQuilt 118/115, corpusQuiltServer 116/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 for corpusQuiltForge 1.20.1 (110 loaded / 909 not loaded, with Metal Pipe 1.0.5 and Cardinal Components API 5.2.3 included), corpusFabricNeoForge 1.21.1 (15/40) and 1.20.4 (57/80), and corpusFabricForge 1.20.1, and all 26 window tasks run one at a time 20 s apart (clientWorldReloadTest across all 9 versions; corpusForgeClient on 1.20.1, 1.20.4, 1.21.1, and 1.21.11; corpusNeoForgeClient on 1.20.4, 1.21.1, and 1.21.11; launcherProfileForgeTest on 1.20.1, 1.20.4, 1.21.1, and 1.21.11; launcherProfileNeoForgeTest on 1.20.4, 1.21.1, and 1.21.11; corpusFabricNeoForgeClient on 1.20.4 and 1.21.1; and launcherProfileTest on 26.3).

NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.

v2.1.4

Choose a tag to compare

@rigelx2b rigelx2b released this 08 Nov 13:54

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 this and parameters live in frames only inside methods changed by a Plexus transform rule (moving ParameterFrames into ClassTransformExecutor in 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 @ModifyVariable in BlockInput.place (1.20.1) and Fabric API's lifecycle LocalCapture in LevelChunk.setBlockEntity while keeping QSL passing on 1.20.1, 1.20.4 (Polymer), and 1.21.1.
  • Include corpusQuilt on Minecraft 1.20.1 in compatibilityCorpus now 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, where securejarhandler 2.1.10 on the JVM class path needs java.lang.invoke opened and a union: URL handler, by passing the Java agent's JDK module access to the Forge game host, opening java.lang.invoke, and installing the union: URL handler shared with NeoForge, passing launcherProfileForgeTest on 1.20.1, 1.20.4, 1.21.1, and 1.21.11 and launcherProfileNeoForgeTest on 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 javafml mods whose mods.toml has an empty or missing loaderVersion before 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 javafml jars whose mods.toml declares a mod with no matching @Mod class (data packs packaged as mods and multi-loader Quilt or Fabric jars carrying another loader's mods.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 RuntimeEnumExtender failing with "Enum has create method but we could not find $VALUES" when a Fabric or Quilt access widener widens an enum's $VALUES field (such as EnchantmentCategory on Forge 1.20.1) by showing the plugin $VALUES with 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 private EnchantmentCategory constructor) and Cardinal Components API 5.2.3 (local variable mismatch in Forge's patched FallingBlockEntity.tick) out of that run.
  • Verify Fabric mods next to NeoForge 21.1.265 (Minecraft 1.21.1) in a game client window, passing corpusFabricNeoForgeClient after reaching the world, running 200 ticks, and leaving.
  • Verify the 2026-11-08 release on Java 25 with check, build-logic check, headless runs on all 9 supported versions (serverBootSmokeTest, worldCreateSaveTest, gameTests *:*, and compatibilityMatrix, 172-213 s per version), compatibilityCorpus on 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 (clientWorldReloadTest on 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; corpusForgeClient and launcherProfileForgeTest on 1.20.1, 1.20.4, 1.21.1, and 1.21.11; corpusNeoForgeClient and launcherProfileNeoForgeTest on 1.20.4, 1.21.1, and 1.21.11; corpusFabricNeoForgeClient on 1.21.1; and launcherProfileTest on 26.3).

NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.

v2.1.3

Choose a tag to compare

@rigelx2b rigelx2b released this 08 Nov 08:41

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), and corpusQuiltNeoForge (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's ModList, 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-session driver (reaching the world, running 200 client ticks, and leaving), passing corpusForgeClient on Minecraft 1.20.1, 1.20.4, 1.21.1, and 1.21.11 and corpusNeoForgeClient on 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 this and parameters kept live in every frame (remapper revision 4, ParameterFrames), fixing implicit @ModifyVariable injections (such as QSL's EnchantmentMenu) 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.bootStrap before tests (performing only freeze and validate), ensuring QSL init entrypoints 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 so ServerStartingEvent reaches 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' MixinModelPart picking the wrong render overload 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 wrong render overload 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 initializeLaunch builds 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 @ModifyVariable failing with LVTGeneratorError ("Could not locate method metadata for renderHitOutline") on NeoForge 21.1 where an access transformer made LevelRenderer.renderHitOutline public.
  • Fix loader detection for NeoForge 20.4 mods whose mods.toml names 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 IllegalAccessError failures on Forge 1.20.1 and NeoForge 21.1 when Mixins target library classes (such as FancyMenu targeting LWJGL's GLFW) 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, and PLEXUS-COMPAT-311 messages 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

Choose a tag to compare

@rigelx2b rigelx2b released this 07 Nov 22:06

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.toNetwork for CustomIngredientImpl), reported as informational PLEXUS-COMPAT-228 (ADR-0047), extending automatic Fabric API download (ADR-0046) to Forge on both versions, and passing headless real-mod runs (corpusFabricForge) with fabric-recipe-api-v1 loaded (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 @Accessor and @Invoker names 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-session test mod.
  • Add an optional pinned Quilted Fabric API download for Minecraft 1.20.1, 1.20.4, and 1.21.1 (PLEXUS-DISCOVERY-006 added, PLEXUS-DISCOVERY-007 failed), 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-002 under rule plexus: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_method coremod failure ("Field climateSettings is not private") when Fabric API widens field access, and exclude mods overriding unreviewed host-final methods with PLEXUS-COMPAT-224 instead 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 under META-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

Choose a tag to compare

@rigelx2b rigelx2b released this 07 Nov 17:30

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 mods folder 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 the mods folder.
  • Show the Fabric API download in the early loading window and report PLEXUS-DISCOVERY-004 in the log when it is added, or PLEXUS-DISCOVERY-005 if 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 mods folder 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 with PLEXUS-COMPAT-224 on Minecraft 26.1, 26.1.1, and 26.1.2 with NeoForge by letting NeoForge's Ingredient.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

Choose a tag to compare

@rigelx2b rigelx2b released this 07 Nov 12:47

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, and LootEvents.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, and ConfigSpec and ModRegistry for mod-owned data.
  • Edit worldgen, trades, and loot in the Native API with WorldgenRegistrar.removeSpawn/removeFeature, TradeRegistrar.removeVillagerTrades/removeWanderingTrades, LootTableEdits (addPool, removeItem, replaceItem), and LootDrops.random().
  • Query craft, furnace, smoker, campfire, and stonecutter recipes via WorldView.recipes(), RecipeLookup.all(), and ingredients(), and access ItemStackRef enchantments, 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_pass is registered when Fabric API's registry sync loads (1.20.1, 1.21.1).
  • Fix loading of Fabric mods that use Puzzles Lib's LOAD mixin on Minecraft 1.20.4 by dropping dead locals from recomputed stack map frames.
  • Fix PLEXUS-COMPAT-111 exclusions 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.Info constructor.
  • 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 LICENSE in META-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

Choose a tag to compare

@rigelx2b rigelx2b released this 05 Nov 07:52

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, NeoForge PLEXUS-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 with PLEXUS-COMPAT-112 or PLEXUS-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, and WorldEvents.TICK_END firing 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.attribute and AttributeDefinition, as well as runtime attribute queries and modifications through LivingEntityView.
  • Native API: Added ClientEvents.KEY_INPUT, ClientEvents.MOUSE_BUTTON, and ClientEvents.MOUSE_SCROLL observing keyboard and mouse inputs.
  • Quilt Compatibility: Runs Quilt mods whose QSL entrypoints implement Fabric initializer interfaces (PLEXUS-COMPAT-311), treating dependencies on quilt_base as 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 frameBenchmarkPureFabric comparing client frame times against vanilla and pure Fabric Loader KnotClient, and added startupBenchmarkPureNeoForge and tickBenchmarkPureNeoForge (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, and plexus-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 by BuiltInRulesTest.
  • Game Layer: Added GameTestMain entrypoints for Minecraft 1.20.1 and 1.20.4, which have no net.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 as tags/blocks and loot_tables are answered from the later files, and models/item/<name>.json from items/<name>.json. A definition that cannot become a model is PLEXUS-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 serverBootSmokeTest transformation 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 startupBenchmarkQuilt and tickBenchmarkQuilt to prevent world loading issues on 26.3.
  • SDK: The plexus-gradle-plugin jar now bundles META-INF/LICENSE and META-INF/THIRD_PARTY_NOTICES.md, verified by verifySdkRepository.
  • Discovery: Nested jar entries prefixed with dots are safely extracted to nested.jar within 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

Choose a tag to compare

@rigelx2b rigelx2b released this 01 Nov 09:41

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 in ModifiableBiomeInfo.
  • Support drowning, swimming, sinking, and boats in Fabric mod fluids on NeoForge 26.2 and 26.3 by mapping FluidBehavior tags to FluidType in fabric-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 ClassCastException on minecraft:register next to MinecraftForge 26.2-65.1.5 and 26.3-66.1.0 with Fabric API via ForgeForeignPayloads.
  • Fix client stops on first chunk drawing (PLEXUS-COMPAT-225 in FluidRendererMixin) 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, and fabric-renderer-api-v1.
  • Add HOST_COVERS and HOST_NEUTRAL_ARGUMENT placements (HostNeutralArguments) plus HostTargetCalls and ReplacedReceiver (PLEXUS-COMPAT-226) bridges.
  • Support receiver-only HostStaticCalls screen helpers, ItemWrap (BLOCK_BREAK_RESET) bridges, and owner.name(desc) targets in HostPatchAdjustments.targetNotation.

NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.