Перейти к содержимому
Mineforgian

Sparkle's Morpher

The successor to Fox Model Loader — a universal Minecraft custom model loader supporting YSM, Blockbench, animations, sounds, multiplayer synchronization, and more.

Загрузки
3K
Подписчики
6
Обновлён
23 августа 2026 г.
Лицензия
MIT

Опубликован 26 мая 2026 г.

Sparkle's Morpher

Formerly Fox Model Loader

Sparkle's Morpher is the official successor to Fox Model Loader.

Fox Model Loader has been discontinued, and active development now continues as Sparkle's Morpher. The project retains its original custom-model functionality while expanding into a more universal Minecraft model-loading platform.

Existing Fox Model Loader releases remain available as legacy versions.

Sparkle's Morpher is a universal custom model loader for Minecraft that allows players to replace the vanilla player model with custom models, animations, textures, sounds, and more.

✨ Features

Custom Player Models

Replace the vanilla Steve and Alex player models with fully customized 3D characters.

Custom models can include geometry, textures, skeletal animations, custom first-person arms, sound effects, and custom actions.

Multiple Model Formats

Sparkle's Morpher currently supports:

  • YSM (.ysm)
  • Blockbench (.bbmodel)
  • Figura avatar archives
  • Compatible ZIP-based model packages

Support for additional model formats is planned as the project continues to evolve.

Animation System

The built-in animation system supports movement, actions, item usage, custom animation controllers, Molang expressions, and multiple playback modes.

An animation carousel allows model-specific actions and animations to be triggered directly in game.

Sound Effects

Models can include voice lines and other sound effects, with Opus audio decoding and cross-platform native acceleration.

Model Management

Import and organize models from local files, directories, archives, URLs, and supported remote sources.

Models can also be grouped and added to favorites.

Multiplayer

Sparkle's Morpher supports multiplayer model synchronization and includes server-side functionality such as:

  • Model synchronization
  • Model manifests
  • Model uploads
  • Model blacklists
  • Transfer scheduling
  • Configurable global bandwidth limits

🔄 Migrating from Fox Model Loader

Fox Model Loader users should remove the old Fox Model Loader JAR before installing Sparkle's Morpher.

Fox Model Loader used the mod ID:

yes_steve_model

Sparkle's Morpher uses:

sparkle_morpher

Do not intentionally install both mods at the same time.

Sparkle's Morpher includes compatibility code that can migrate the legacy configuration directory:

config/yes_steve_model

to:

config/sparkle_morpher

when the new configuration directory does not already exist.

Existing YSM models continue to be supported.

We recommend backing up important custom models and configuration files before performing a major upgrade.

📦 Legacy Fox Model Loader Releases

Older versions on this Modrinth project page that use the Fox Model Loader name are intentionally preserved as legacy releases.

They remain available for users of older Minecraft versions, existing installations, compatibility purposes, and rollback.

Fox Model Loader is no longer actively maintained.

All future development continues as Sparkle's Morpher.

🔗 Links

Source Code

https://github.com/sdf123098/Sparkle-Morpher

Legacy Fox Model Loader Source

https://github.com/sdf123098/Fox-Model-Loader

Issue Tracker

https://github.com/sdf123098/Sparkle-Morpher/issues

Discord

https://discord.gg/3KqK7USF39

Telegram

https://t.me/sparklemorpher

QQ Group

1104823534

📜 Credits & License

Sparkle's Morpher is open source under the MIT License.

The project originates from the Fox Model Loader / OpenYSM codebase and uses components from the OpenYSM ecosystem.

Relevant upstream projects and third-party components are credited in the source repository.

Ченджлог

1.2.2Релиз26.2 · 23 августа 2026 г.

Sparkle Morpher 1.2.2 delivers the main work planned for the 1.2.x “Cross-Backend Performance & Stabilization” phase. All six actual source repositories were synchronized, built, verified, and pushed to their matching GitHub branches.

Highlights

  • Modern HUD modernization and stabilization:

    • 26.x uses explicit VAO, SSBO, BoneSkinShader, and a 144-byte-per-bone layout for the unified skeleton path.
    • Restored the separate translucent blend stage and alpha handling for transparent materials.
    • Fixed layout anchors, AABB/FBO framing, glow-bone exclusion, pose snapshots, scale, and yaw handling.
    • Fixed classic HUD input_vertical direction contamination and lost context during deferred world-model submit replay.
    • Every Modern HUD rendering, layout, and title option is marked “Experimental”. Modern HUD remains disabled by default while Classic HUD remains enabled by default.
  • Minecraft 26.1.2/26.2 held-item crash fix:

    • 26.x Modern HUD now uses Mojang’s GUI item RenderState extraction API for main-hand and off-hand items.
    • Removed the erroneous manual ItemEntityRenderState creation path, which submitted an item through the GUI deferred/Picture-in-Picture pipeline to an EntityRenderDispatcher with no assigned renderer.
    • Main hand, off hand, Scale, Yaw, and HUD Layout behavior are preserved; 1.21.1 keeps its version-specific legacy API.
  • Cross-backend rendering and performance:

    • Roulette stage 1 now uses cached geometry through GuiGraphicsExtractor.fill, avoiding raw GL/CommandEncoder submissions during extraction that were later overwritten; a CPU fallback keeps visibility consistent across OpenGL and Vulkan.
    • The 26.2 Vulkan path detects the actual Minecraft GpuDevice, uses the 144-byte-per-bone Vulkan ABI and Native SIMD bone calculation, and falls back to Java when the native path is not applicable.
    • The implementation keeps business logic behind the backend-neutral Blaze3D/vanilla boundary instead of coupling it to raw OpenGL/Vulkan.
  • Compatibility and reliability:

    • Fixed TouhouLittleMaid sitting-state access and custom-model state synchronization across all six loader/version branches.
    • Fixed the 1.21.1 item-buffer/glint immediate path (Issue #18) and the Fabric 26.x flight animation frame-boundary stutter.
    • Added or tightened architecture-boundary, RenderState contract, material contract, and six-branch build checks while retaining the required 1.21.1 and 26.x adapters.

Build and verification

  • All six branches were pushed with git push; each local HEAD was then compared with its matching remote branch after fetch.
  • A clean release build completed on 2026-08-23 and produced a 1.2.2 original JAR for every branch. The six original JARs in this release are the primary downloads.
  • Full build output is included as BUILD_LOG_1.2.2_2026-08-23.txt; branch logs were collected under .buildlogs/6branches/.
  • This release does not claim real Minecraft 26.2 Vulkan client visual regression coverage; that still requires an actual Vulkan client environment. Fabric 26.2 also retains pre-existing ArchitectureBoundaryTest violations, which are not presented as fixed by this release.

Release assets

  • Six original Fabric/NeoForge JARs.
  • Chinese notes, English notes, and the build log.

The 1.2.2 scope freeze remains in effect: the large Action Runtime, Paper Doll, Import Pipeline, Cloud, and PortableGpuRenderPath rewrites are out of scope for this release.

1.2.2Релиз26.1, 26.1.1, 26.1.2 · 23 августа 2026 г.

Sparkle Morpher 1.2.2 delivers the main work planned for the 1.2.x “Cross-Backend Performance & Stabilization” phase. All six actual source repositories were synchronized, built, verified, and pushed to their matching GitHub branches.

Highlights

  • Modern HUD modernization and stabilization:

    • 26.x uses explicit VAO, SSBO, BoneSkinShader, and a 144-byte-per-bone layout for the unified skeleton path.
    • Restored the separate translucent blend stage and alpha handling for transparent materials.
    • Fixed layout anchors, AABB/FBO framing, glow-bone exclusion, pose snapshots, scale, and yaw handling.
    • Fixed classic HUD input_vertical direction contamination and lost context during deferred world-model submit replay.
    • Every Modern HUD rendering, layout, and title option is marked “Experimental”. Modern HUD remains disabled by default while Classic HUD remains enabled by default.
  • Minecraft 26.1.2/26.2 held-item crash fix:

    • 26.x Modern HUD now uses Mojang’s GUI item RenderState extraction API for main-hand and off-hand items.
    • Removed the erroneous manual ItemEntityRenderState creation path, which submitted an item through the GUI deferred/Picture-in-Picture pipeline to an EntityRenderDispatcher with no assigned renderer.
    • Main hand, off hand, Scale, Yaw, and HUD Layout behavior are preserved; 1.21.1 keeps its version-specific legacy API.
  • Cross-backend rendering and performance:

    • Roulette stage 1 now uses cached geometry through GuiGraphicsExtractor.fill, avoiding raw GL/CommandEncoder submissions during extraction that were later overwritten; a CPU fallback keeps visibility consistent across OpenGL and Vulkan.
    • The 26.2 Vulkan path detects the actual Minecraft GpuDevice, uses the 144-byte-per-bone Vulkan ABI and Native SIMD bone calculation, and falls back to Java when the native path is not applicable.
    • The implementation keeps business logic behind the backend-neutral Blaze3D/vanilla boundary instead of coupling it to raw OpenGL/Vulkan.
  • Compatibility and reliability:

    • Fixed TouhouLittleMaid sitting-state access and custom-model state synchronization across all six loader/version branches.
    • Fixed the 1.21.1 item-buffer/glint immediate path (Issue #18) and the Fabric 26.x flight animation frame-boundary stutter.
    • Added or tightened architecture-boundary, RenderState contract, material contract, and six-branch build checks while retaining the required 1.21.1 and 26.x adapters.

Build and verification

  • All six branches were pushed with git push; each local HEAD was then compared with its matching remote branch after fetch.
  • A clean release build completed on 2026-08-23 and produced a 1.2.2 original JAR for every branch. The six original JARs in this release are the primary downloads.
  • Full build output is included as BUILD_LOG_1.2.2_2026-08-23.txt; branch logs were collected under .buildlogs/6branches/.
  • This release does not claim real Minecraft 26.2 Vulkan client visual regression coverage; that still requires an actual Vulkan client environment. Fabric 26.2 also retains pre-existing ArchitectureBoundaryTest violations, which are not presented as fixed by this release.

Release assets

  • Six original Fabric/NeoForge JARs.
  • Chinese notes, English notes, and the build log.

The 1.2.2 scope freeze remains in effect: the large Action Runtime, Paper Doll, Import Pipeline, Cloud, and PortableGpuRenderPath rewrites are out of scope for this release.

1.2.2Релиз1.21.1 · 23 августа 2026 г.

Sparkle Morpher 1.2.2 delivers the main work planned for the 1.2.x “Cross-Backend Performance & Stabilization” phase. All six actual source repositories were synchronized, built, verified, and pushed to their matching GitHub branches.

Highlights

  • Modern HUD modernization and stabilization:

    • 26.x uses explicit VAO, SSBO, BoneSkinShader, and a 144-byte-per-bone layout for the unified skeleton path.
    • Restored the separate translucent blend stage and alpha handling for transparent materials.
    • Fixed layout anchors, AABB/FBO framing, glow-bone exclusion, pose snapshots, scale, and yaw handling.
    • Fixed classic HUD input_vertical direction contamination and lost context during deferred world-model submit replay.
    • Every Modern HUD rendering, layout, and title option is marked “Experimental”. Modern HUD remains disabled by default while Classic HUD remains enabled by default.
  • Minecraft 26.1.2/26.2 held-item crash fix:

    • 26.x Modern HUD now uses Mojang’s GUI item RenderState extraction API for main-hand and off-hand items.
    • Removed the erroneous manual ItemEntityRenderState creation path, which submitted an item through the GUI deferred/Picture-in-Picture pipeline to an EntityRenderDispatcher with no assigned renderer.
    • Main hand, off hand, Scale, Yaw, and HUD Layout behavior are preserved; 1.21.1 keeps its version-specific legacy API.
  • Cross-backend rendering and performance:

    • Roulette stage 1 now uses cached geometry through GuiGraphicsExtractor.fill, avoiding raw GL/CommandEncoder submissions during extraction that were later overwritten; a CPU fallback keeps visibility consistent across OpenGL and Vulkan.
    • The 26.2 Vulkan path detects the actual Minecraft GpuDevice, uses the 144-byte-per-bone Vulkan ABI and Native SIMD bone calculation, and falls back to Java when the native path is not applicable.
    • The implementation keeps business logic behind the backend-neutral Blaze3D/vanilla boundary instead of coupling it to raw OpenGL/Vulkan.
  • Compatibility and reliability:

    • Fixed TouhouLittleMaid sitting-state access and custom-model state synchronization across all six loader/version branches.
    • Fixed the 1.21.1 item-buffer/glint immediate path (Issue #18) and the Fabric 26.x flight animation frame-boundary stutter.
    • Added or tightened architecture-boundary, RenderState contract, material contract, and six-branch build checks while retaining the required 1.21.1 and 26.x adapters.

Build and verification

  • All six branches were pushed with git push; each local HEAD was then compared with its matching remote branch after fetch.
  • A clean release build completed on 2026-08-23 and produced a 1.2.2 original JAR for every branch. The six original JARs in this release are the primary downloads.
  • Full build output is included as BUILD_LOG_1.2.2_2026-08-23.txt; branch logs were collected under .buildlogs/6branches/.
  • This release does not claim real Minecraft 26.2 Vulkan client visual regression coverage; that still requires an actual Vulkan client environment. Fabric 26.2 also retains pre-existing ArchitectureBoundaryTest violations, which are not presented as fixed by this release.

Release assets

  • Six original Fabric/NeoForge JARs.
  • Chinese notes, English notes, and the build log.

The 1.2.2 scope freeze remains in effect: the large Action Runtime, Paper Doll, Import Pipeline, Cloud, and PortableGpuRenderPath rewrites are out of scope for this release.

1.2.2Релиз1.21.1 · 23 августа 2026 г.

Sparkle Morpher 1.2.2 delivers the main work planned for the 1.2.x “Cross-Backend Performance & Stabilization” phase. All six actual source repositories were synchronized, built, verified, and pushed to their matching GitHub branches.

Highlights

  • Modern HUD modernization and stabilization:

    • 26.x uses explicit VAO, SSBO, BoneSkinShader, and a 144-byte-per-bone layout for the unified skeleton path.
    • Restored the separate translucent blend stage and alpha handling for transparent materials.
    • Fixed layout anchors, AABB/FBO framing, glow-bone exclusion, pose snapshots, scale, and yaw handling.
    • Fixed classic HUD input_vertical direction contamination and lost context during deferred world-model submit replay.
    • Every Modern HUD rendering, layout, and title option is marked “Experimental”. Modern HUD remains disabled by default while Classic HUD remains enabled by default.
  • Minecraft 26.1.2/26.2 held-item crash fix:

    • 26.x Modern HUD now uses Mojang’s GUI item RenderState extraction API for main-hand and off-hand items.
    • Removed the erroneous manual ItemEntityRenderState creation path, which submitted an item through the GUI deferred/Picture-in-Picture pipeline to an EntityRenderDispatcher with no assigned renderer.
    • Main hand, off hand, Scale, Yaw, and HUD Layout behavior are preserved; 1.21.1 keeps its version-specific legacy API.
  • Cross-backend rendering and performance:

    • Roulette stage 1 now uses cached geometry through GuiGraphicsExtractor.fill, avoiding raw GL/CommandEncoder submissions during extraction that were later overwritten; a CPU fallback keeps visibility consistent across OpenGL and Vulkan.
    • The 26.2 Vulkan path detects the actual Minecraft GpuDevice, uses the 144-byte-per-bone Vulkan ABI and Native SIMD bone calculation, and falls back to Java when the native path is not applicable.
    • The implementation keeps business logic behind the backend-neutral Blaze3D/vanilla boundary instead of coupling it to raw OpenGL/Vulkan.
  • Compatibility and reliability:

    • Fixed TouhouLittleMaid sitting-state access and custom-model state synchronization across all six loader/version branches.
    • Fixed the 1.21.1 item-buffer/glint immediate path (Issue #18) and the Fabric 26.x flight animation frame-boundary stutter.
    • Added or tightened architecture-boundary, RenderState contract, material contract, and six-branch build checks while retaining the required 1.21.1 and 26.x adapters.

Build and verification

  • All six branches were pushed with git push; each local HEAD was then compared with its matching remote branch after fetch.
  • A clean release build completed on 2026-08-23 and produced a 1.2.2 original JAR for every branch. The six original JARs in this release are the primary downloads.
  • Full build output is included as BUILD_LOG_1.2.2_2026-08-23.txt; branch logs were collected under .buildlogs/6branches/.
  • This release does not claim real Minecraft 26.2 Vulkan client visual regression coverage; that still requires an actual Vulkan client environment. Fabric 26.2 also retains pre-existing ArchitectureBoundaryTest violations, which are not presented as fixed by this release.

Release assets

  • Six original Fabric/NeoForge JARs.
  • Chinese notes, English notes, and the build log.

The 1.2.2 scope freeze remains in effect: the large Action Runtime, Paper Doll, Import Pipeline, Cloud, and PortableGpuRenderPath rewrites are out of scope for this release.

1.2.2Релиз26.1, 26.1.1, 26.1.2 · 23 августа 2026 г.

Sparkle Morpher 1.2.2 delivers the main work planned for the 1.2.x “Cross-Backend Performance & Stabilization” phase. All six actual source repositories were synchronized, built, verified, and pushed to their matching GitHub branches.

Highlights

  • Modern HUD modernization and stabilization:

    • 26.x uses explicit VAO, SSBO, BoneSkinShader, and a 144-byte-per-bone layout for the unified skeleton path.
    • Restored the separate translucent blend stage and alpha handling for transparent materials.
    • Fixed layout anchors, AABB/FBO framing, glow-bone exclusion, pose snapshots, scale, and yaw handling.
    • Fixed classic HUD input_vertical direction contamination and lost context during deferred world-model submit replay.
    • Every Modern HUD rendering, layout, and title option is marked “Experimental”. Modern HUD remains disabled by default while Classic HUD remains enabled by default.
  • Minecraft 26.1.2/26.2 held-item crash fix:

    • 26.x Modern HUD now uses Mojang’s GUI item RenderState extraction API for main-hand and off-hand items.
    • Removed the erroneous manual ItemEntityRenderState creation path, which submitted an item through the GUI deferred/Picture-in-Picture pipeline to an EntityRenderDispatcher with no assigned renderer.
    • Main hand, off hand, Scale, Yaw, and HUD Layout behavior are preserved; 1.21.1 keeps its version-specific legacy API.
  • Cross-backend rendering and performance:

    • Roulette stage 1 now uses cached geometry through GuiGraphicsExtractor.fill, avoiding raw GL/CommandEncoder submissions during extraction that were later overwritten; a CPU fallback keeps visibility consistent across OpenGL and Vulkan.
    • The 26.2 Vulkan path detects the actual Minecraft GpuDevice, uses the 144-byte-per-bone Vulkan ABI and Native SIMD bone calculation, and falls back to Java when the native path is not applicable.
    • The implementation keeps business logic behind the backend-neutral Blaze3D/vanilla boundary instead of coupling it to raw OpenGL/Vulkan.
  • Compatibility and reliability:

    • Fixed TouhouLittleMaid sitting-state access and custom-model state synchronization across all six loader/version branches.
    • Fixed the 1.21.1 item-buffer/glint immediate path (Issue #18) and the Fabric 26.x flight animation frame-boundary stutter.
    • Added or tightened architecture-boundary, RenderState contract, material contract, and six-branch build checks while retaining the required 1.21.1 and 26.x adapters.

Build and verification

  • All six branches were pushed with git push; each local HEAD was then compared with its matching remote branch after fetch.
  • A clean release build completed on 2026-08-23 and produced a 1.2.2 original JAR for every branch. The six original JARs in this release are the primary downloads.
  • Full build output is included as BUILD_LOG_1.2.2_2026-08-23.txt; branch logs were collected under .buildlogs/6branches/.
  • This release does not claim real Minecraft 26.2 Vulkan client visual regression coverage; that still requires an actual Vulkan client environment. Fabric 26.2 also retains pre-existing ArchitectureBoundaryTest violations, which are not presented as fixed by this release.

Release assets

  • Six original Fabric/NeoForge JARs.
  • Chinese notes, English notes, and the build log.

The 1.2.2 scope freeze remains in effect: the large Action Runtime, Paper Doll, Import Pipeline, Cloud, and PortableGpuRenderPath rewrites are out of scope for this release.

1.2.2Релиз26.2 · 23 августа 2026 г.

Sparkle Morpher 1.2.2 delivers the main work planned for the 1.2.x “Cross-Backend Performance & Stabilization” phase. All six actual source repositories were synchronized, built, verified, and pushed to their matching GitHub branches.

Highlights

  • Modern HUD modernization and stabilization:

    • 26.x uses explicit VAO, SSBO, BoneSkinShader, and a 144-byte-per-bone layout for the unified skeleton path.
    • Restored the separate translucent blend stage and alpha handling for transparent materials.
    • Fixed layout anchors, AABB/FBO framing, glow-bone exclusion, pose snapshots, scale, and yaw handling.
    • Fixed classic HUD input_vertical direction contamination and lost context during deferred world-model submit replay.
    • Every Modern HUD rendering, layout, and title option is marked “Experimental”. Modern HUD remains disabled by default while Classic HUD remains enabled by default.
  • Minecraft 26.1.2/26.2 held-item crash fix:

    • 26.x Modern HUD now uses Mojang’s GUI item RenderState extraction API for main-hand and off-hand items.
    • Removed the erroneous manual ItemEntityRenderState creation path, which submitted an item through the GUI deferred/Picture-in-Picture pipeline to an EntityRenderDispatcher with no assigned renderer.
    • Main hand, off hand, Scale, Yaw, and HUD Layout behavior are preserved; 1.21.1 keeps its version-specific legacy API.
  • Cross-backend rendering and performance:

    • Roulette stage 1 now uses cached geometry through GuiGraphicsExtractor.fill, avoiding raw GL/CommandEncoder submissions during extraction that were later overwritten; a CPU fallback keeps visibility consistent across OpenGL and Vulkan.
    • The 26.2 Vulkan path detects the actual Minecraft GpuDevice, uses the 144-byte-per-bone Vulkan ABI and Native SIMD bone calculation, and falls back to Java when the native path is not applicable.
    • The implementation keeps business logic behind the backend-neutral Blaze3D/vanilla boundary instead of coupling it to raw OpenGL/Vulkan.
  • Compatibility and reliability:

    • Fixed TouhouLittleMaid sitting-state access and custom-model state synchronization across all six loader/version branches.
    • Fixed the 1.21.1 item-buffer/glint immediate path (Issue #18) and the Fabric 26.x flight animation frame-boundary stutter.
    • Added or tightened architecture-boundary, RenderState contract, material contract, and six-branch build checks while retaining the required 1.21.1 and 26.x adapters.

Build and verification

  • All six branches were pushed with git push; each local HEAD was then compared with its matching remote branch after fetch.
  • A clean release build completed on 2026-08-23 and produced a 1.2.2 original JAR for every branch. The six original JARs in this release are the primary downloads.
  • Full build output is included as BUILD_LOG_1.2.2_2026-08-23.txt; branch logs were collected under .buildlogs/6branches/.
  • This release does not claim real Minecraft 26.2 Vulkan client visual regression coverage; that still requires an actual Vulkan client environment. Fabric 26.2 also retains pre-existing ArchitectureBoundaryTest violations, which are not presented as fixed by this release.

Release assets

  • Six original Fabric/NeoForge JARs.
  • Chinese notes, English notes, and the build log.

The 1.2.2 scope freeze remains in effect: the large Action Runtime, Paper Doll, Import Pipeline, Cloud, and PortableGpuRenderPath rewrites are out of scope for this release.

1.2.1Релиз26.2 · 13 августа 2026 г.

Sparkle Morpher 1.2.1

Sparkle Morpher 1.2.1 fixes a singleplayer crash on the Fabric 26.x line, aligns the 26.2 branch with the real 26.2 APIs, and brings the rendering/network/Maid refactor series R0–R11 (recorded between 2026-08-10 and 2026-08-13, including everything from the 08-12 prerelease 1.2.0-beta-R11MAID) into a formal release across Fabric and NeoForge × 1.21.1 / 26.1.2 / 26.2.


Highlights

Crash fixes (focus of this release)

  • Fixed IncompatibleClassChangeError on joining singleplayer (Fabric 26.1.2 / 26.2): removed the compile-time shadow stubs where Minecraft.execute/submit/isLocalServer were wrongly declared static, which made Minecraft.getInstance().execute(...) compile to invokestatic and crash at runtime against the real instance methods. Everything is now compiled back to invokevirtual (verified by a full ASM scan: 0 remaining).
  • Fa26.2 stub cleanup & alignment with real 26.2 APIs: removed 24 vestigial/shadowing stubs, keeping only 4 runtime compat layers (MultiBufferSource / IrisApi / ModConfig / IForgeGuiGraphicsExtractor); 6 call sites (getScoreboard / renderNames / renderBuffers / getMainRenderTarget / screen etc.) moved to the real 26.2 APIs.
  • Sync packet queue overflow → bounded backpressure: bursts no longer abort the whole sync when the queue briefly fills; the enqueue side now waits with a bounded budget (server bandwidth limiting + outbound drain form a backpressure loop).

Rendering & performance

  • Classic HUD deep performance rewrite: FBO partial physical-pixel offscreen cache (was ~35 ms full CPU render per frame → ~0.17 ms); GPU path with a 60 Hz independent refresh budget, SIMD/compat path at 10 Hz throttle; 8-slot bone SSBO ring + GL_STREAM_DRAW streaming uploads, eliminating shared-buffer sync stalls; explicit alpha compositing and batching isolation.
  • First-person hand rendering fix (26.x): the hand always uses the entityTranslucent pass.
  • Preview rotation pollution fix (1.21.1): entity yaw and preview mode are reset even on exception paths (try/finally).
  • Hand rendering NPE guard: getAnimationBundle()==null mid-state protection (12 sites across 6 branches).
  • R10-series internal refactors: RenderBackend interface isolation (Blaze3D / OpenGL / SIMD / Java implementations), GpuMeshRegistry leases + orphan sweeps, unified resource ownership for model assemblies (deterministic release), weighted-LRU audio cache.

Networking & model sync

  • Fixed crash when clients without SPM join: per-player channel pre-checks before sending (NeoForge/Fabric) + batch send fallback.
  • Systemic fix for sync timeouts / stuck "receiving model data": LegacySyncFlowControl 64 KiB burst backpressure + 512 MiB in-flight budget; a dedicated single-threaded sync executor with a bounded ordered packet queue (decrypt/verify/disk-write no longer blocks network/main threads); termination frame sent when the server cache is unavailable so the client never hangs forever; the watchdog no longer reports false success.
  • neo1.21.1 stuck-at-LOADING fix: toClientboundPacket null packet → wrapped in ClientboundCustomPayloadPacket.
  • R9 networking modularization (internal): send-entry pre-checks, connection-state split, upload-transport interfaces.

Maid (TLM) compatibility (R11)

  • MaidModelSync divergence converged across branches (byte-identical in all six).
  • C2SSetMaidModelPacket (id 24) ported to all branches: maid model switching now uses SPM's own chain (auth pipeline); the official TLM protocol remains as fallback.
  • TLM-environment startup crash fixed (@Mixin(targets=...) to avoid MixinTargetAlreadyLoaded).
  • 26.x GUI maid preview not replacing YSM models — fixed.
  • R11 compat.api service layer (internal, no startup-order dependencies).

GUI / HUD

  • Classic / Modern HUD dual toggles: independent switches in settings; the legacy keybinding and old screen were removed.
  • ClassicHudLayoutScreen layout editor: drag, unbounded scaling, scroll zoom, yaw rotation, one-click reset.
  • ModernHudRenderer independent entry contract (off by default, internal).

Other fixes

  • Abnormal head rotation while riding (RiderRotationMath pure-angle helper, verified on 6 branches).
  • 1.21.1 default model rotation not following the camera (cross-frame cache registry retained).
  • Server model pack name JSON-quote display fix.

Internal refactors (R0–R9, core of 1.2.1)

  • S0 security hotfixes: YSM folder path-escape sandbox, atomic audio-cache dedup.
  • R2 unified thread pools (SmExecutors bounded queues + CallerRuns backpressure + TaskScope).
  • R3 ModelStoragePaths centralization + PersistentStore atomic writes.
  • R4 unified resource container (folder / zip GBK / limits) + zip-bomb protection.
  • R5 Model Domain / R6 EntityModelResolver (priority + revision race protection).
  • R7 ClientModelManager split (3024 lines → 5 focused classes).
  • R8 ServerModelManager split (1899 lines → 8 focused classes, atomic file moves + upload policy).
  • Tests grown from 45 → 201 per branch (YsmCrypt golden vectors, model corpus, race acceptance).
1.2.1Релиз26.1, 26.1.1, 26.1.2 · 13 августа 2026 г.

Sparkle Morpher 1.2.1

Sparkle Morpher 1.2.1 fixes a singleplayer crash on the Fabric 26.x line, aligns the 26.2 branch with the real 26.2 APIs, and brings the rendering/network/Maid refactor series R0–R11 (recorded between 2026-08-10 and 2026-08-13, including everything from the 08-12 prerelease 1.2.0-beta-R11MAID) into a formal release across Fabric and NeoForge × 1.21.1 / 26.1.2 / 26.2.


Highlights

Crash fixes (focus of this release)

  • Fixed IncompatibleClassChangeError on joining singleplayer (Fabric 26.1.2 / 26.2): removed the compile-time shadow stubs where Minecraft.execute/submit/isLocalServer were wrongly declared static, which made Minecraft.getInstance().execute(...) compile to invokestatic and crash at runtime against the real instance methods. Everything is now compiled back to invokevirtual (verified by a full ASM scan: 0 remaining).
  • Fa26.2 stub cleanup & alignment with real 26.2 APIs: removed 24 vestigial/shadowing stubs, keeping only 4 runtime compat layers (MultiBufferSource / IrisApi / ModConfig / IForgeGuiGraphicsExtractor); 6 call sites (getScoreboard / renderNames / renderBuffers / getMainRenderTarget / screen etc.) moved to the real 26.2 APIs.
  • Sync packet queue overflow → bounded backpressure: bursts no longer abort the whole sync when the queue briefly fills; the enqueue side now waits with a bounded budget (server bandwidth limiting + outbound drain form a backpressure loop).

Rendering & performance

  • Classic HUD deep performance rewrite: FBO partial physical-pixel offscreen cache (was ~35 ms full CPU render per frame → ~0.17 ms); GPU path with a 60 Hz independent refresh budget, SIMD/compat path at 10 Hz throttle; 8-slot bone SSBO ring + GL_STREAM_DRAW streaming uploads, eliminating shared-buffer sync stalls; explicit alpha compositing and batching isolation.
  • First-person hand rendering fix (26.x): the hand always uses the entityTranslucent pass.
  • Preview rotation pollution fix (1.21.1): entity yaw and preview mode are reset even on exception paths (try/finally).
  • Hand rendering NPE guard: getAnimationBundle()==null mid-state protection (12 sites across 6 branches).
  • R10-series internal refactors: RenderBackend interface isolation (Blaze3D / OpenGL / SIMD / Java implementations), GpuMeshRegistry leases + orphan sweeps, unified resource ownership for model assemblies (deterministic release), weighted-LRU audio cache.

Networking & model sync

  • Fixed crash when clients without SPM join: per-player channel pre-checks before sending (NeoForge/Fabric) + batch send fallback.
  • Systemic fix for sync timeouts / stuck "receiving model data": LegacySyncFlowControl 64 KiB burst backpressure + 512 MiB in-flight budget; a dedicated single-threaded sync executor with a bounded ordered packet queue (decrypt/verify/disk-write no longer blocks network/main threads); termination frame sent when the server cache is unavailable so the client never hangs forever; the watchdog no longer reports false success.
  • neo1.21.1 stuck-at-LOADING fix: toClientboundPacket null packet → wrapped in ClientboundCustomPayloadPacket.
  • R9 networking modularization (internal): send-entry pre-checks, connection-state split, upload-transport interfaces.

Maid (TLM) compatibility (R11)

  • MaidModelSync divergence converged across branches (byte-identical in all six).
  • C2SSetMaidModelPacket (id 24) ported to all branches: maid model switching now uses SPM's own chain (auth pipeline); the official TLM protocol remains as fallback.
  • TLM-environment startup crash fixed (@Mixin(targets=...) to avoid MixinTargetAlreadyLoaded).
  • 26.x GUI maid preview not replacing YSM models — fixed.
  • R11 compat.api service layer (internal, no startup-order dependencies).

GUI / HUD

  • Classic / Modern HUD dual toggles: independent switches in settings; the legacy keybinding and old screen were removed.
  • ClassicHudLayoutScreen layout editor: drag, unbounded scaling, scroll zoom, yaw rotation, one-click reset.
  • ModernHudRenderer independent entry contract (off by default, internal).

Other fixes

  • Abnormal head rotation while riding (RiderRotationMath pure-angle helper, verified on 6 branches).
  • 1.21.1 default model rotation not following the camera (cross-frame cache registry retained).
  • Server model pack name JSON-quote display fix.

Internal refactors (R0–R9, core of 1.2.1)

  • S0 security hotfixes: YSM folder path-escape sandbox, atomic audio-cache dedup.
  • R2 unified thread pools (SmExecutors bounded queues + CallerRuns backpressure + TaskScope).
  • R3 ModelStoragePaths centralization + PersistentStore atomic writes.
  • R4 unified resource container (folder / zip GBK / limits) + zip-bomb protection.
  • R5 Model Domain / R6 EntityModelResolver (priority + revision race protection).
  • R7 ClientModelManager split (3024 lines → 5 focused classes).
  • R8 ServerModelManager split (1899 lines → 8 focused classes, atomic file moves + upload policy).
  • Tests grown from 45 → 201 per branch (YsmCrypt golden vectors, model corpus, race acceptance).

Комментарии

Загружаем…