81 client examples that harnesses run become modules of examples/probe:
harnesses run `probe <name> ...` (or `cargo run --example probe -- <name>`),
and the shared helpers (audio_common, hud_fixture, chat_screen_fixture)
move with them. The benchmarks and manual tools stay standalone examples.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lab.VERSION, lab.GAME (.local/minecraft/<version>) and lab.RESOURCES
(.local/horizon-client/<version>) come from the lock, and lab.version_info()
reads the pinned client jar's version.json. Every harness, generator and
tool that named 26.3 (resource folders, jar and source paths, result
records, the vanilla client's --version and asset index, the bare login
client's protocol, the benchmark's options.txt data version, the packet id
table's header) uses them, so a candidate worktree pinned to another version
runs them unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Choosing packs in the Resource Packs screen only reloaded the GUI atlas
(and only when it kept its size), item models and languages; block
textures and models changed after a restart, and sounds, clouds and the
world border never did. Block textures were also squeezed to 16x16, and
the pack overlay took every file from the top pack, so a pack's own
en_us.json, sounds.json, font or atlas definition replaced vanilla's
instead of adding to it (all other text, or every vanilla sound, gone).
- Minecraft.reloadResourcePacks: rebuild block sprites and models, mesh
tables, the shared atlas, item models, sounds, languages, GUI
metadata, clouds.png and forcefield.png from the new overlay; swap the
mesher's context (workers read it per job), mesh every loaded section
again (LevelRenderer.allChanged) and build a renderer with the new
textures. Nothing switches if loading fails.
- The block sprite array takes the largest texture's resolution (power
of two, at most 256 MiB), so 32x/64x packs keep their detail;
animations upload at that size.
- Files vanilla reads as resource stacks are merged in the overlay:
ClientLanguage (keys override), SoundManager (sounds add up unless an
event replaces; a sounds.json Gson rejects is skipped whole),
FontManager (top pack's providers first), SpriteSourceList (sources
bottom up). Languages are read from every namespace, not only
minecraft.
- Missing or broken block textures use vanilla's missing texture; packs
that still break startup fall back to the default resources
(Minecraft.rollbackResourcePacks).
- Open Pack Folder opens the folder on macOS and Windows too.
tools/test_resource_pack_parity.py checks pack discovery, overlays,
filters, which pack provides a file and the merged languages, sounds,
fonts and atlases against vanilla's FolderRepositorySource,
MultiPackResourceManager and reload listeners.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>