Skip to content

v2.0.0

Choose a tag to compare

@rigelx2b rigelx2b released this 05 Nov 07:52
· 9 commits 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

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.