
Sparkle's Morpher
The successor to Fox Model Loader — a universal Minecraft custom model loader supporting YSM, Blockbench, animations, sounds, multiplayer synchronization, and more.
Оцените первым
6.7K
13
Список изменений
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
IncompatibleClassChangeErroron joining singleplayer (Fabric 26.1.2 / 26.2): removed the compile-time shadow stubs whereMinecraft.execute/submit/isLocalServerwere wrongly declaredstatic, which madeMinecraft.getInstance().execute(...)compile toinvokestaticand crash at runtime against the real instance methods. Everything is now compiled back toinvokevirtual(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/screenetc.) 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_DRAWstreaming uploads, eliminating shared-buffer sync stalls; explicit alpha compositing and batching isolation. - First-person hand rendering fix (26.x): the hand always uses the
entityTranslucentpass. - 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()==nullmid-state protection (12 sites across 6 branches). - R10-series internal refactors:
RenderBackendinterface isolation (Blaze3D / OpenGL / SIMD / Java implementations),GpuMeshRegistryleases + 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":
LegacySyncFlowControl64 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:
toClientboundPacketnull packet → wrapped inClientboundCustomPayloadPacket. - R9 networking modularization (internal): send-entry pre-checks, connection-state split, upload-transport interfaces.
Maid (TLM) compatibility (R11)
MaidModelSyncdivergence 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 avoidMixinTargetAlreadyLoaded). - 26.x GUI maid preview not replacing YSM models — fixed.
- R11
compat.apiservice 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.
ClassicHudLayoutScreenlayout editor: drag, unbounded scaling, scroll zoom, yaw rotation, one-click reset.ModernHudRendererindependent entry contract (off by default, internal).
Other fixes
- Abnormal head rotation while riding (
RiderRotationMathpure-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 (
SmExecutorsbounded queues + CallerRuns backpressure + TaskScope). - R3
ModelStoragePathscentralization +PersistentStoreatomic writes. - R4 unified resource container (folder / zip GBK / limits) + zip-bomb protection.
- R5 Model Domain / R6 EntityModelResolver (priority + revision race protection).
- R7
ClientModelManagersplit (3024 lines → 5 focused classes). - R8
ServerModelManagersplit (1899 lines → 8 focused classes, atomic file moves + upload policy). - Tests grown from 45 → 201 per branch (YsmCrypt golden vectors, model corpus, race acceptance).
Файлы
sparkle-morpher-1.2.1-neo26.1.x.jar(5.83 MiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
1.2.1
Загрузчики
NeoForge
Версии игры
26.1–26.1.2
Загрузок
103
Дата публикации
13.08.2026
