- face UV orientation now follows vanilla BlockElement.uvsByFace: north/
east/down faces were sampled mirrored. Default UVs adjusted to match.
Block and entity faces share one mapping (ElementIntersector.faceUv),
so the separate blockUv mode of the entity intersector is gone.
- x/y blockstate rotations without uvlock: elements keep their model-space
copy and are intersected with the inverse-rotated ray, so textures turn
with the model exactly like vanilla (pistons facing down showed their
side textures in different directions per face). Replaces the earlier
up/down-only UV rotation. Display entities use the same model-space path.
Edge-case test plugin: piston/observer/dispenser scenes.
Since 26.x a model texture can be an object {"sprite": ..., "force_translucent": ...}
instead of a string. The block-model DTO only accepted strings, so those
models failed to load and rendered as the grey fallback cube: redstone
wire and every glass block and pane (110 models). Accept both forms in
ModelResolver (shared with ItemGeometry).
Edge-case test plugin: redstone/glass scene.
Blockstate "y" rotations turned the geometry counter-clockwise while the
faces were re-assigned clockwise (vanilla). Every east/west variant of an
asymmetric block ended up mirrored on the wrong side of its cell: shelf
mushrooms and ladders floated away from their support, stairs faced
backwards. Rotate clockwise like vanilla, adjust element-rotation axes,
and turn up/down face textures with the model unless uvlock is set.
Edge-case test plugin: shelf mushroom (side + top view) and rotated-block
scenes.
- dump entity models straight from the unobfuscated client jar
(tools/VanillaModelDump.java, tools/update-vanilla-models.sh): models posed
by vanilla setupAnim, baby/variant/layer models, renderer transforms,
default textures, pose variants (sitting, holding items, illager arms)
and all layer definitions; the old CEM template is only a fallback now
- fix adult zombies captured as babies, zero-thickness planes (wings,
fins) and back faces in the entity intersector
- held items, head items (pumpkins, skulls), shields, elytra, saddles and
body equipment for every mount, armor following the pose
- block/item/text display entities, dropped items, falling blocks, primed
TNT, minecart contents, block entities inside displays, leash ropes
- item models resolved from the 26.x item definitions with display
transforms; generated items extruded like vanilla
- bundle the vanilla font definitions as fallback so sign/text rendering
works with packs that lack font/*.json
- one failing entity no longer aborts the whole photo
- edge-case test plugin (tools/edgecase-plugin) and offline harnesses
Colors the map palette cannot represent (light sky blue, sunset tones) were
approximated by mixing far-apart palette colors, producing a high-contrast
checkerboard in the sky and stray speckles elsewhere. Diffuse the error in
CIELAB and only allow palette colors nearly as close to the original as the
best match, so the dither blends between neighbouring colors only.
Biome grass/foliage/dry-foliage/water colors and grass color modifiers are now
read from the server's built-in worldgen biome data at runtime, with a 26.3
snapshot as fallback. Fixes missing biomes (dappled_forest, pale_garden,
sulfur_caves) and several outdated values. Replace deprecated ExactChoice
constructors.