MineTec
5d581dc482
item guard: photos cannot be cloned, locked or scaled in the cartography table, the anvil only renames camera, film and photo, the crafter does not craft with them (it handed out the static load/copy placeholders and ate the ingredients), camera and film cannot be placed as heads (the broken skull lost the markers) or put into mount saddle slots by horse inventory or dispenser
2026-11-05 10:44:35 +01:00
MineTec
4c52bc2dca
fix survival data loss and lifecycle: crafting consumes the grid atomically in the click (no same-tick dupes), photos that do not fit are dropped like /give, failed or aborted renders give the film back (offline via pending.yml, crash recovery on start) and keep a blank placeholder instead of turning into world maps, shutdown finishes every job synchronously without scheduling after disable and tracing stops on interrupt, renderers detached and reattached across /reload, vanilla map renderer really removed, photos stored per primary world uid with migration and no overwrite on a reset map counter, cleanup only deletes photos unseen for the given days and referenced nowhere in loaded state or saved world and player data, async dither fallback, cooldown map cleared on quit, cleanup permission without op bypass
2026-11-05 04:48:04 +01:00
MineTec
a3fbe122e3
final comment sweep: section separators, signature-only javadocs and history notes removed, stale comments corrected (sign/contents model lookup, inverted entity cubes, item-bounds use, datapack folder search, biome tint argb, water-only overlay faces, beacon first section, mushroom-cow instanceof example, legacy skin arm copy, elytra and pack-detection notes in the scripts, pptest scene descriptions), comments only
2026-11-05 03:35:48 +01:00
MineTec
02e052787c
simplify tools: shared harness setup (pipeline, block proxy, render job, framing, record copy, label cells, contact sheets) for the standalone renderers and the benchmark, block-entity scenes as name/yaw records, one dump pipeline for mob and avatar renderers with a shared submit helper, transform record and jem/entry/subset helpers, posed block entities from direct layer constants, pptest scenes registered once with settle-tick and resolution tables and put() for all blocks, jdk detection and full error log in the dump script, pptest jar rebuilt instead of updated, gradle task printing the tool classpath, comments trimmed
2026-11-05 03:24:30 +01:00
MineTec
b242adb6d2
simplify survival, map and plugin code: map palette built once in a static initializer instead of a synchronized check per dither lookup, film colour as a constant, one blit for blank film and develop, shared crafting result for prepare and craft, unused photo scan state and dead null checks removed, non-italic text helper for item names, pdc getOrDefault, private map file paths, single map-init attach path, listener registration in one loop, unused image constructor removed (pptest dithers itself), comments trimmed
2026-11-05 02:28:46 +01:00
MineTec
44f2b3c59c
simplify asset code: unread average colour and constant model fields dropped (bake returns the element list, shared empty model), baked elements cached per blockstate variant and parent models cached while flattening, one element constructor plus withFaces, blockstate box/face/axis rotation in one pass instead of per-step x/y copies, face rotation normalised once, block state parsing inlined into the resolver, shared json read and image-to-grid helpers, path concatenation instead of format, dead zip directory probe and unused dto/font members removed, comments trimmed
2026-11-05 01:32:46 +01:00
MineTec
7f2520a52d
simplify cem entity, block-entity and item code: entity bake split into body texture, vanilla placement and ground snap, part frames only for entities holding items, entity info looked up once, identical toggles-only pose fallback removed, shared model-space and bake-to-cubes helpers, model cube without unread origin/inflate, tinted copy helper, plains tint shared with the biome provider, item bounds via the rendered entity aabb, element rotation via rotationAround, special transformations accumulated while picking, precomputed end portal layer constants and gateway face set, sign text areas as records, dump info parsing split out, unused loader size removed, comments trimmed
2026-11-05 00:57:17 +01:00
MineTec
cbc859b565
simplify entity, tint and util code: shared direction helpers (axis, of, opposite), one inverted-face test and frac for block and entity intersectors, element rotate/unrotate without allocating copies, entity scene without the per-entity list and with a single child push, cube corners and hit normal without temp arrays, tint channel cached per material, redstone power from the block data, shared leash faces and frame cards, texture ops on colour helpers, simpler text and chest/shulker/statue texture code, dead helper and dead null checks removed, comments trimmed
2026-11-05 00:20:32 +01:00
MineTec
2a3db3d7aa
simplify snapshot code: frustum bounds computed once per photo and shared by all builders, cached per-class reflection handles via a shared helper (getHandle, standing eye height, map data and decorations), one facing yaw for wall and standing block entities, shared banner pattern/skin/copper stage/dye helpers, shield state via the builder, map view read once per frame, leash endpoints without temp arrays, package-private item/map helpers, fully qualified names imported, dead checks removed, comments trimmed
2026-11-04 23:41:05 +01:00
MineTec
bc07631fec
simplify raytracer, fluid, sky and render code: air fog moved into the camera medium, sky colour computed only when read, single ao neighbour lookups, culling test before tint and ao, allocation-free fluid heights and flow angle, one fluid model lookup per cell, shared normal rotation and face fractions in the element intersector, unified side-face table, dead overloads/interface/enums and convenience constructors removed, comments trimmed
2026-11-04 22:53:25 +01:00
MineTec
4348b5fca0
vanilla fluid rendering: water and lava as fluid polygons with level/neighbour corner heights, flow textures, double-sided and overlay faces, texture alpha, opaque lava, waterlogged blocks and seagrass/kelp/bubble columns hold water, underwater and lava fog from biome water_fog attributes with gaussian biome blend, fogged sky disc, 6/7 fov in fluids, sky light under water also for underwater cameras, fluid test scenes
2026-11-04 22:07:02 +01:00
MineTec
9093c1ccfb
christmas chest textures (24-26 december, chests and trapped chests, local_time item models, pixelpics.testDate test property), chest items from the item definition texture, shield banner patterns, item displays turned 180° like vanilla, dropped item lift from the ground model bounds, baby held-item offset, map decorations on framed vanilla maps (banners, frames, markers; none on photo maps), inverted block elements in items and displays (spawner, vault inner faces), deterministic test scenes, items/xmas/marker test scenes
2026-11-04 21:15:38 +01:00
MineTec
9e48e35680
block-entity contents from the decompiled renderers: enchanting table book (closed, open towards a nearby photographer), campfire and shelf items, vault display item, copper golem statues (poses, weathering), spawner and trial spawner mobs, beacon beam with glass colours, end portal and gateway star field, block-entity parts in block displays (lectern book, bell), outer item-model transformations for special models, contents test scenes
2026-11-04 20:15:40 +01:00
MineTec
318a309580
rescale rotated block elements like vanilla (cross plants, amethyst, campfire, fire, raised rails), euler x/y/z element rotations (hanging sign chains), inverted inner-face elements (spawner, vault), vanilla-like water: single surface blend with depth sky light instead of path-length density, water faces against glass/ice/leaves, block geometry and water test scenes
2026-11-04 19:25:17 +01:00
MineTec
2c2e9e2e32
render emissive eye/glow layers, per-model vanilla render types (cutout vs translucent, unshaded), sheep undercoat and vanilla wool colour, angry wolves, tipped arrow and invulnerable wither textures, small armor stand armor textures, elytra rest pose, vanilla mob arm poses (piglins, illagers), layer test scenes
2026-11-04 18:59:14 +01:00
MineTec
45d033bd89
entity state poses from the vanilla dump: sleeping/sitting/crouching/swimming/gliding, fox/cat/panda/parrot/bat/camel/sniffer poses with pose transforms, per-sub-model poses (baby pivots), armor-stand part poses and body pitch via rotation bindings, fish in water, beds, shoulder parrots, pose test scenes
2026-11-04 17:51:01 +01:00
MineTec
6660ebe557
pinhole camera ray map like vanilla (vertical fov 70, horizontal from aspect, pixel centres, no roll) instead of yaw/pitch corner rotation that squashed photos vertically by cos 35, shared buildRayMap in test tools, camera projection test scenes
2026-11-04 17:07:19 +01:00
MineTec
88bae41a03
primitive chunk table in world snapshot instead of colliding long-keyed hashmap, bounded cache for tinted/composited mob and banner textures, vanilla dump with nested model json, village benchmark and perf test scenes
2026-11-04 16:59:42 +01:00
MineTec
b5baffebbd
entity bvh with exact old tie order and allocation-free entity/element intersectors, entity benchmark harness and perf test scenes
2026-11-04 16:42:08 +01:00
MineTec
2d56a1910c
render item frame contents with the item geometry like vanilla ItemFrameRenderer (fixed context, 8 rotations, all facings), frame block models, map contents incl. pixelpics photos, invisible frames, head skins/banner patterns from item meta
2026-11-04 16:03:34 +01:00
MineTec
a743dc32c7
derive default layers, armor wearers, arms/chest pose flags and mob variant textures from the vanilla dump, drop the hardcoded lists
2026-11-04 15:48:03 +01:00
MineTec
022b080fce
render all block entities from the dumped vanilla models with decompiled renderer poses, drop the cem block-entity path
2026-11-04 15:13:55 +01:00
MineTec
c66ebaa942
render cat/wolf collars, charged creeper and wither armor energy swirl (additive), fox/dolphin mouth items
2026-11-04 14:45:57 +01:00
MineTec
fbea9dfe08
match vanilla arrow/trident orientation incl. arrow impact shake, add projectile test scenes
2026-11-04 14:26:21 +01:00
MineTec
addebffba1
add tools/build-vanilla-pack.sh to build the runtime resource pack from Mojang's client jar
2026-11-04 14:22:27 +01:00
MineTec
a0b7ec3a90
apply vanilla uvlock under blockstate x/y rotations and face zero-thickness elements towards the ray
...
x rotations without uvlock already sampled the model-space element like
vanilla (lying logs/pillars, vertical observers/dispensers verified against
FaceBakery for every blockstate variant). The remaining divergence was
uvlock: faces kept model-extent UVs and were sampled in world orientation,
so top stairs, ceiling buttons, fences/walls and ceiling vines showed
shifted or rotated textures. Rotated uvlocked elements now also go through
the model-space path, with each face's final UVs mapped by vanilla's
BlockMath face transformation (inverted, as in FaceBakery).
Zero-thickness elements (vine, lichen) always reported their low face;
pick the face turned towards the ray instead.
Edge-case test plugin: xrot/xrot2 scenes (lying pillars, vertical
observers/dispensers/droppers, top stairs, ceiling buttons).
2026-11-04 14:11:40 +01:00
MineTec
5852d4b367
render chests from the dumped vanilla models (single, double, trapped, ender, copper)
2026-11-04 13:57:35 +01:00
MineTec
9a6c8b538d
alpha-blend translucent block and entity texels (stained glass, slime skin, text backgrounds)
2026-11-04 13:49:45 +01:00
MineTec
37fa1d8f56
bind block textures to the model under blockstate rotations (vanilla UVs)
...
- 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.
2026-11-04 13:36:15 +01:00
MineTec
73e521131b
parse 26.x texture objects in block models (redstone, glass, panes)
...
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.
2026-11-04 13:28:10 +01:00
MineTec
9e59435e13
edge-case test plugin: fence and door in the rotated-block scene
2026-11-04 13:24:48 +01:00
MineTec
a99acad80c
fix blockstate y-rotation direction and rotate top/bottom UVs without uvlock
...
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.
2026-11-04 13:20:40 +01:00
MineTec
32afe08f03
render entities from vanilla client models, add items, displays and leashes
...
- 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
2026-11-04 13:11:39 +01:00
MineTec
5904814e69
reduce harsh dithering: constrained error diffusion in Lab space
...
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.
2026-11-04 11:29:32 +01:00
MineTec
2d84a35cc4
update to Paper 26.3: load biome colors from vanilla data, fix dappled forest grass
...
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.
2026-11-04 11:19:08 +01:00
MineTec
8dd295e5d6
update to Paper 26.2, Java 25 and Gradle 9.6.1
2026-10-08 23:33:14 +02:00
MineTec
6d60b4f74b
improve crafting and camera behavior: enforce single-item results, add exact crafting choices, refine item metadata, and update textures
2026-07-23 22:04:45 +02:00
MineTec
7063d27fb4
add Spotless plugin: enforce code formatting
2026-06-21 18:32:46 +02:00
MineTec
dce7804fed
refactor: simplify rendering logic, remove redundant cases, and replace bounds checks with Math.clamp
2026-06-21 18:09:11 +02:00
MineTec
1d3040610e
refactor: replace fully qualified class names with imports and simplify code readability across rendering modules
2026-06-21 17:56:32 +02:00
MineTec
f83ccdc7ff
add RenderManager: improve CPU control with global render queue and parallel trace pooling
2026-06-21 17:49:57 +02:00
MineTec
220cda1deb
add survival mode support: camera, film system, and dynamic crafting recipes for photos
2026-06-21 17:30:24 +02:00
MineTec
fed94f97d1
add sign text rendering: support font loading, text rasterization, and color adjustments for signs
2026-06-21 16:15:57 +02:00
MineTec
5330948dbd
enhance entity rendering: add support for villager levels, horse armor, llama decor, and saddle/chest states
2026-06-21 15:32:53 +02:00
MineTec
094aa463c5
refactor and simplify rendering logic; remove redundant code and consolidate utility methods
2026-06-21 14:42:10 +02:00
MineTec
c5d5eae1c1
refactor block entity handling and add support for invisible materials
2026-06-21 14:22:10 +02:00
MineTec
f1844a9dd9
wire up rendering + build config
2026-06-07 18:57:53 +02:00
MineTec
211c7e8479
resource-pack render engine
2026-06-07 18:57:40 +02:00
MineTec
18c5fc4ffc
remove bundled vanilla assets
2026-06-07 18:57:13 +02:00
MineTec
3f0814639d
cleanup
2025-08-03 11:13:47 +02:00