Skip to content

v0.2.5

Choose a tag to compare

@castledking castledking released this 08 May 06:58

v0.2.5: Chunked Preview Deferred Draws, Surface Detection Fixes & Limit Bumps

Deferred GPU draw submission for chunked previews, fixes for surface detection through non-opaque blocks (grass, flowers, crops), server-side block entity snapshot coordinate fixes, and increased operation limits.

Changes

  • Undo/Redo Decay Drift Tolerance: History action service now tolerates native block decay drift (grass_block→dirt, mycelium→dirt, podzol→dirt, farmland→dirt, dirt_path→dirt, snow→air) when verifying block state for undo/redo, preventing failures on naturally changed blocks via a hardcoded allowlist.
  • Chunked Preview Deferred Draws (1.21.6+): Moved GPU preview submission from per-session immediate draw to a deferred queue flushed after vanilla's WorldRenderer pass, improving compatibility. Added frustum-culled SectionDrawList and a bulk drawMultipleIndexedPreview path for 1.21.11 (1.21.7 falls back to manual draw loop). Added ChunkedDrawResult enum for proper handled/not-handled reporting. 1.21.5 continues using the legacy CPU preview path.
  • Block Entity Data Fix: Block entity data is now correctly written during clipboard operations — previously blocks with custom data (banners, signs, etc.) would paste as plain undecorated versions. This fixes decorated banners pasting as white banners, text on signs not persisting, and similar data loss.
  • Increased Operation Limits: Raised PermissiveOperationValidator limits (MAX_BLOCKS_PER_BATCH, MAX_TOTAL_WRITES, MAX_CLIPBOARD_CELLS) from ~1.2M–2M to 4M. Raised PlacementPreviewRenderer cell caps from 200K to 4M.
  • GPU Buffer Fixes: Proper index buffer cleanup when re-uploading vertex data. Sequential index buffer fallback when no index buffer is available.
  • Move Source Z-Fighting Fix: The MOVE_SOURCE_GHOST_SCALE (1.015) was only applied in the entity fallback path, but silently ignored in the mesh cache path (the primary rendering path for most selections). Now tessellateBatch() applies per-block scale, so the gray stained glass move-source overlay renders slightly larger than real blocks at the same position, eliminating z-fighting.
  • Ghost Preview Threshold Bump: Raised CHUNKED_PATH_CELL_THRESHOLD from 1024 to MAX_TEXTURED_GHOST_BLOCKS (32768), keeping medium previews on the reliable CPU path.
  • 1.21.7 Compat: Implemented proper GUI-textured drawTexture using RenderPipelines.GUI_TEXTURED. Added RenderPipeline extraction from RenderLayer via reflection for layer-accurate pipeline selection.

Supported Versions

1.21.5 through 1.21.11

Support and Feedback