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