Skip to main content
Version: Minecraft 26.2

Changelog

1.0.0 — 2026-10-24​

  • The first stable release: Fabric, Forge, NeoForge and Quilt mods are all fully supported on Minecraft 26.1, 26.1.2 and 26.2, each checked with popular real mods on the client, the game test server, the dedicated server and installed profiles.
  • NeoForge mods now run by default with NeoForge's own loader, no option needed (NeoForge 26.1.0.19-beta on 26.1, 26.1.1.15-beta on 26.1.1, 26.1.2.122 on 26.1.2, 26.2.0.93 on 26.2). The files NeoForge needs are downloaded on the first start. On the client, popular NeoForge mods play a saved world, save it and quit (54 on 26.2, Sodium and Iris among them), and an installed server runs NeoForge mods from mods/.
  • Fabric, Forge and Quilt mods can be mixed in one game. NeoForge mods do not run in the same game as Fabric or Quilt mods yet: they are left out with the reason (POLY-COMPAT-216).
  • The title screen has a "NeoForge mods" line, also with mods such as FancyMenu that draw the title screen's branding themselves, and the log counts NeoForge mods on their own.
  • Sodium's NeoForge build now loads as under NeoForge, so Iris, Sodium Extra and Reese's Sodium Options find it on the client.
  • Fixed a NeoForge launch that could hang while mods were being set up.

0.2.0-beta.3 — 2026-10-24​

  • Quilt mods are fully supported on Minecraft 26.1, 26.1.2 and 26.2: checked with every Quilt-only build on Modrinth for each version on the client, the game test server and the dedicated server, also together with Forge mods, and compared with real Quilt Loader. The installed server and launcher profile run Quilt mods too. Mods that need Quilt Standard Libraries (QSL) are still left out with the reason, because QSL has no release for 26.x.
  • Fabric mods built for Quilt that require Quilt Loader, such as Better Shulker Boxes and F34, now load, as they do under Quilt Loader.
  • A Fabric or Quilt mod with a mixin that Mixin itself refuses is now left out before the game starts, with the reason (POLY-COMPAT-140). Before, a mod like Even Better Moon and Sun kept the client from joining a world.
  • A mod no longer gets the "works only in part" warning (POLY-COMPAT-124) only because nested mods for the other side are left out, such as Fabric API's client modules on a dedicated server. Fabric Loader and Quilt Loader leave them out there too.

0.2.0-beta.2 — 2026-10-24​

  • Quilt mods (experimental, Minecraft 26.2): Poly Mod Loader now reads quilt.mod.json with Quilt Loader's rules and runs Quilt mods with the Quilt Loader API, their Mixins and access wideners, next to Fabric mods and Poly Mods. Checked with Simple Voice Chat's Quilt build. Mods that need Quilt Standard Libraries (QSL) are left out with the reason, because QSL has no release for Minecraft 26.x.
  • NeoForge preview (still experimental and off by default): a NeoForge mod that NeoForge would refuse is now left out with the reason instead of stopping the launch, and more real mods run, such as mods that need Kotlin for Forge or YACL, and Lithium.
  • The title screen and the log count Quilt mods on their own line.

0.2.0-beta.1 — 2026-10-24​

  • Beta: MinecraftForge mods are fully supported on Minecraft 26.1, 26.1.2 and 26.2, checked with real popular Forge mods on the client, the game test server, the dedicated server and installed profiles.
  • NeoForge preview (experimental, off by default): with -Dpoly.neoforge=on, Poly Mod Loader runs NeoForge's own loader (NeoForge 26.2.0.93) and loads NeoForge mods with it. Without it, NeoForge mods are left out as before.

0.1.0-alpha.18 — 2026-10-23​

  • Forge, Fabric and Poly mods see each other: Forge mods find Fabric and Poly mods through FML's ModList, Fabric mods find Forge mods through FabricLoader, and Poly Mods find every loader's mods through the new ModContext.mods(). Physics Mod (Forge) with Sodium (Fabric) now draws block debris and ragdolls.
  • With Fabric API and Forge together, crafting works again (it failed on every crafting remainder), Fabric data behind resource conditions no longer stops the data pack from loading, and Fabric's block breaking events fire.
  • The title screen shows how many mods each loader loaded, in the bottom-left corner above the game version: "Poly mods: 2", "Fabric mods: 14", "Forge mods: 3", in the game's language (English and Korean so far). With Forge mods, the lines go above Forge's own branding lines.
  • With Forge, more of Fabric API works: its networking and recipe APIs' server connection access, tag files that remove entries with fabric:remove (next to Forge's own remove), and the data generation advancement builder. Fabric API's default attribute changes (FabricDefaultAttributeRegistry.MODIFY) still do not work with Forge, and now say why instead of crashing with a ClassCastException.
  • Forge and Fabric mods together now also run on Minecraft 26.1 in tests, and the 26.1 Forge client and a server installed for 26.1.2 run too.

0.1.0-alpha.17 — 2026-10-23​

  • Fixed a crash on the first frame when Sodium (Fabric) and a Forge mod such as Physics Mod are installed together.
  • When Forge changes a game method that a Fabric mod hooks into, Poly Mod Loader now adapts the hook if Forge only added parameters, instead of losing other mods' changes to the same class.
  • Forge mods now also run together on Minecraft 26.1 in a test (a world is created, tested and saved).

0.1.0-alpha.16 — 2026-10-23​

  • Forge mods now work in the Poly Mod Loader you install. Put Forge mods in mods/ and the launcher profile or a server from the installer runs them. In a test the client entered a world with Forge test mods next to a Fabric mod, and the installed server ran a Forge mod.
  • The first start with Forge mods downloads Forge's files (about 50 MB) from Forge's servers; without Forge mods nothing changes.
  • Profiles and servers installed with an older installer cannot run Forge mods: install again with this version.
  • Forge support is still experimental.

0.1.0-alpha.15 — 2026-10-23​

  • PolyLoader is now Poly Mod Loader. The installer is PolyModLoader-<version>.exe / .jar, the launcher profile is Poly Mod Loader <Minecraft version>, and the releases live at github.com/xyrz47-spec/Poly-Mod-Loader.
  • A profile from an older installer stays in the launcher next to the new one; remove it there if you no longer need it.
  • Mods made with the old dev.polyloader SDK need to be rebuilt with the new SDK.
  • Forge mods now run on the client and on Minecraft 26.1 in the test setup. The installed Poly Mod Loader does not run Forge mods yet; that is the next step.

0.1.0-alpha.14 — 2026-10-23​

  • Forge mods and Fabric mods now run together in one game. In a test on a Minecraft 26.2 server, 91 popular Fabric mods (Fabric API among them) ran next to the Forge mods: the world was created and saved.
  • Where a Fabric mod changes a part of the game that Forge changed too, Poly Mod Loader moves the change to Forge's version when it can, and otherwise logs which part of the mod does not run under Forge, instead of crashing.
  • When the same mod is installed for both Fabric and Forge, the Forge version runs.
  • Forge on the client is still in progress.

0.1.0-alpha.13 — 2026-10-23​

  • Real Forge mods now run on a Minecraft 26.2 server through Poly Mod Loader: in a test set of 38 popular Forge mods, 30 load and the world is created and saved. The other 8 are client-only mods or need a different Minecraft version; Poly Mod Loader leaves them out and logs the reason.
  • Fixed a Forge config save failure on Windows (AccessDeniedException) when a mod writes its config right after Forge creates it.
  • Forge on the client, and Forge mods next to Fabric mods, are still in progress.

0.1.0-alpha.12 — 2026-10-23​

  • Forge mods can now use access transformers and Mixin, as they do under Forge. Forge support is still in progress: Forge mods do not run next to Fabric mods yet.

0.1.0-alpha.11 — 2026-10-22​

  • Fabric mods are now fully supported on Minecraft 26.1 and 26.2. With popular Fabric mods together (138 on 26.2, Sodium, Iris and Lithium among them) you can play a world, save it and quit, and they start a dedicated server. The only mods left out in tests are ones Fabric Loader refuses too.
  • CustomSkinLoader and veinminer now work, and collective now loads on servers.

0.1.0-alpha.10 — 2026-10-22​

  • The installer window is tidier: names and fields line up, and the window keeps its size when you switch between client and server or open "Advanced".
  • Poly Mods can now wait until Fabric mods are initialised (LifecycleEvents.MODS_INITIALIZED). Lifecycle and threads

0.1.0-alpha.9 — 2026-10-22​

  • The installer sets up a dedicated server. Choose "Server" and a folder; it downloads Mojang's server and writes run.bat, run.sh and polymodloader-server.jar. You accept Minecraft's EULA yourself. Install

0.1.0-alpha.8 — 2026-10-22​

  • A Forge mod now runs through Poly Mod Loader in tests: Forge creates it, runs its setup event and registers its item, next to a Poly mod in the same game. An installed Poly Mod Loader does not load Forge mods yet.

0.1.0-alpha.7 — 2026-10-22​

  • The installer is simpler: the Minecraft version, the game's memory and Install. Everything else is under "Advanced".
  • MinecraftForge itself now starts through Poly Mod Loader in tests: Forge loads, creates a world and passes a game test. Forge mods do not load in an installed Poly Mod Loader yet.

0.1.0-alpha.6 — 2026-10-22​

  • Groundwork for Forge mods: Poly Mod Loader can now give mods the Java module setup Forge is built on. Forge mods do not run yet, and nothing changes for players.

0.1.0-alpha.5 — 2026-10-22​

  • The installer sets the game's memory: maximum (-Xmx) and starting (-Xms) memory, written to the launcher profile. It suggests a maximum that fits your PC. Install
  • When the install is done, a notification says whether it worked, and the installer closes by itself. Click the notification to open the mods folder.
  • The website is easier to read, with short lines and a gentle page transition.

0.1.0-alpha.4 — 2026-10-22​

  • Fabric mods that use Mixin now run, the way Fabric Loader runs them: Mixin and MixinExtras, interface injection from class tweakers, and Fabric's entrypoint timing. Compatibility
  • Of 52 popular Fabric mods for 26.2, 42 load on the client and 28 on a dedicated server (most of the rest are client-only). All 44 Fabric API modules load.
  • 137 Fabric mods together, Sodium, Iris and Lithium among them, load on the client and join a world. 99 get through a real dedicated server start.
  • Fabric mods that use getGameInstance or class tweaker enum extension (extend-enum) now load too. Poly Mod Loader now provides every part of Fabric Loader's public API.
  • NeoForge and Forge mods still do not run. Work on Forge has started.
  • The download page shows what changed in every build.

0.1.0-alpha.3 — 2026-10-22 (first public release)​

  • Minecraft 26.1, 26.1.1 and 26.1.2 are supported next to 26.2. The installer asks which version to install.
  • Mod development without the Poly Mod Loader source: the SDK is on this site's Maven repository. Download the mod template and run initPolyMod. Get the mod template
  • Native API: event priorities and decision results, interaction events (use block, item and entity, attack), cancellable block break and place, server, world, respawn and entity lifecycle events, tags, mod creative tabs, item tooltips. Events, Tags and creative tabs
  • Fabric mods with class tweakers (access wideners) load when they need nothing else that is missing. Compatibility
  • Website: English and Korean, a download page, a page for mod developers.
  • Fixed: a respawned player lost its entity data (EntityDataKey), and EntityEvents.DIED never fired for players.

0.1.0-alpha.2 — 2026-10-21 (not published; included in 0.1.0-alpha.3)​

Installer and the first Poly Mod tutorial (2026-10-21)​

  • The player installer (PolyModLoader-<version>.exe and .jar) adds a Poly Mod Loader profile to the Minecraft Launcher. Install guide
  • Mods built with the Native API are now called Poly Mods
  • Create your first Poly Mod is rewritten around Crystal Garden, a growing crystal mod
  • When you run from a launcher profile and the game jar is not found, the error is POLY-BOOTSTRAP-006
  • License: PolyLoader Non-Commercial License 1.0

Server tick, heap, and GC measurement (2026-10-21)​

  • :poly-bootstrap:tickBenchmark: runs vanilla and Poly Mod Loader alternately under the same load and compares server tick time p50/p95/p99, the share of ticks over 50ms, peak heap, and GC. The result is "no significant difference" (Performance)
  • Measurement agent tools/tick-probe

Transform engine: ordering contract, call-site changes, access widening, cache limit (2026-10-21)​

  • Rules that change the same method are applied together when after defines a single order (start hooks and return hooks run in declaration order) (design decision ADR-0013)
  • New action: call-site change, which replaces a specific call inside a method with a static hook
  • Access widening (same meaning as the Fabric access widener: accessible, extendable, mutable). See accessWidenings in the poly.mod.json schema
  • Size limit for the transform cache (default 256 MiB, -Dpoly.transformCacheMaxMegabytes)

Shader textures, mod uniforms, per-state block models (2026-10-21)​

  • Textures for mod shader pipelines (ShaderPipelineDefinition.Builder.texture, Sampler0 to 3) and texture coordinates (VertexSink.vertex(x, y, z, u, v, argb)). Drawing and camera
  • Mod uniforms (Builder.uniform, ShaderUniform): the std140 block ModUniforms, values uploaded every frame on the render thread, invalid values give POLY-CLIENT-007
  • Per-state block models in block entity drawing (BlockEntityCanvas.block(BlockStateView, …), defaultState) and the state copy BlockStateView.with
  • Fixed: compiling the version modules failed on a clean checkout (no build/)

Rename: Poly Mod Loader (2026-10-21)​

  • The project is renamed from Void Mod Loader (VML) to Poly Mod Loader. Package dev.polymodloader, modules poly-*, metadata poly.mod.json, error codes POLY-* (numbers and meanings unchanged), mod ID poly, report folder .poly/. The full mapping is in design decision ADR-0012

Docs site and API reference (2026-10-21)​

  • site/ is now a Docusaurus 3 docs site: Getting started, Native API, Testing, Reference, and Contributing sections, a per-Minecraft-version docs dropdown, offline search (including Korean), and a single place for version values (site/src/versionInfo.js)
  • API reference: ./gradlew apiReference builds one page per package from the Javadoc of the public API (signature, description, arguments, return value, and exceptions for every type and member)

Structure for supporting several Minecraft versions (2026-10-21)​

  • Supported version list gradle/minecraft-versions.properties (versions, default version, Java per version). The minecraft entry in the version catalog is removed
  • The adapter and game layer module of each version is included automatically from the list and compiled with that version's jar and Java
  • -PpolyMinecraft=<version> selects the version to run and verify. Mod projects use polyMinecraft in gradle.properties
  • ./gradlew newMinecraftVersion -Pfrom=<version> -Pto=<new version>: copies the modules of the closest version and renames them. ./gradlew minecraftVersions: lists supported versions
  • "minecraft" in poly.mod.json accepts wildcards (26.*) and ranges (>=26.2 <27). The Native examples and the template use 26.*
  • A version adapter can cover several hotfix versions (GameVersionAdapter.gameVersions())
  • Decision record: ADR-0011

Native API stage 4 (2026-10-20)​

  • Batch A: entity data options (tracker sync, version and migration), reload listeners for all file types (onDataFiles/onAssetFiles), PlayerEvents.LOGIN_CHECK, a limit on world backup count (max-backups-per-world)
  • Batch B: block shapes and collision shapes (BlockShape, per state and per direction), flying and swimming mobs (flying, swimming: pathfinding, movement control, wander goal), keyframe animation for mob models (KeyframeAnimation, ALWAYS/WHILE_MOVING/ON_DEMAND, MobView.playAnimation)
  • Batch C: code placed features (feature, FeaturePlacement), code density functions that plug into noise terrain (densityFunction), code structures (structure, StructureDefinition), and configured/placed feature, structure, and structure_set in the generated pack
  • Batch D: drawing in the world (worldPainter: lines, boxes, points, text, shader quads), block models (BlockEntityCanvas.block) and shader quads in block entity drawing, mod core shader pipelines (shaderPipeline)
  • Batch E: exchange during the join-preparation stage (configurationExchange: server request, client reply, server check and rejection, wait time)
  • Fixed:
    • The custom_goal_seeks_glow_block game test failed about 1 time in 10 (the target block was at the edge of the search radius)
    • The game froze during feature placement in a noise dimension that used a biome changed with addFeature (the generator's feature index is now rebuilt)

Native API stage 3 (2026-10-19)​

  • Advanced content: named block properties (choice), per-state light, slot-layout menus and progress bars, item data components and real stack references (ItemStackRef), projectiles, natural spawning
  • Gameplay: per-mob AI goals (AiGoal, MobView), speed, direction, gravity, and riding APIs with a steerable vehicle mob, damage modification (MODIFY_DAMAGE), advancement triggers with grant and revoke
  • World: code biomes (written to the generated pack), code terrain generators (TerrainGenerator), forced chunk loading, chunk load and unload events, biomeAt. The generated pack version is set by a content hash
  • Client drawing: mob box models with part animation, block entity drawing (items and text), mod particle types, field-of-view events and perspective switching, mod post-processing shaders, dynamic textures and HudCanvas.drawTexture
  • Resources, network, and operations: data and asset reload listeners, entity data (saving, persistence across respawn, self sync), storage versions, migration, and client sync, block entity data versions, permission nodes and providers, client join and leave events with leaveWorld, automatic backup of worlds whose mods changed, the game test area TestArea
  • Fixed: mod block states were not in the game's state ID table, so they could not be sent to the client (a defect present since stage 1)

Native API stage 2 (2026-10-19)​

  • Block state properties, block entities (data, ticks, sync), chest-style inventories, world storage, task scheduling, WorldEvents.READY
  • Mob types (AI goals, attributes, spawn eggs, renderers), status effects, game rules, sounds, particles, damage cancellation and death events
  • KnownPack marking for mod packs: data registries (world generation, dimensions, damage types) are used as stable. Biome feature addition, dimension travel
  • Mod screens (Screen) and widgets, ModContext.configDirectory()
  • Transform engine: RETURN_IF_NON_NULL for methods that return a primitive

Native API stage 1 (2026-10-19)​

  • Native API (poly-game-api, all PREVIEW): blocks, items, food, creative tabs, world, entity, and player views, player, block, and client events, commands, network payload channels, key bindings, HUD layers, in-game tests
  • assets/ and data/ in a mod jar are added automatically as required resource and data packs
  • Game layer poly-game-v26_2: compiled against the Minecraft 26.2 jar and loaded by the game class loader (ADR-0010)
  • New transform actions: InvokeHookAtHead (passes arguments, cancel and early return), InvokeHookBeforeReturn (passes arguments and the return value, rejected if a parameter is reassigned)
  • Gradle: the poly.minecraft-compile plugin, a gameTests task for mod projects, the FabricMC repository added to the mod plugin (fixes the template failing to resolve polyRuntime)
  • The example native-showcase-mod, and item and game test samples in the template

0.1.0-alpha.1 — 2026-10-19 (developer preview)​

The first preview, for Minecraft 26.2 / Java 25. All public APIs are PREVIEW.

  • Bootstrap, transforming class loader, and loading pipeline (discovery → metadata → dependencies → system conflicts → transform plan → system registration → entrypoints → game → shutdown)
  • poly.mod.json schema 1: entrypoints, dependencies, conflicts, permissions (capabilities), system replacement, transform declarations
  • System replacement poly:game_brand, server lifecycle events
  • Transform engine: pre-planning, descriptor and bytecode preconditions, conflict rejection, entry hooks, hash-based cache
  • Loader bridge: Fabric entrypoint execution (Experimental), per-feature diagnostics for Fabric, NeoForge, and Forge
  • Development tools: the dev.polymodloader.mod Gradle plugin, a mod template, real-game verification tasks, a mixed-loader matrix, a startup time benchmark

The source is CHANGELOG.md in the Poly Mod Loader repository.

Buy me a coffee