Skip to content

v2.1.6

Choose a tag to compare

@rigelx2b rigelx2b released this 09 Nov 14:11
· 1 commit to main since this release

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.