1.0.2
Render distant players' terrain live on real Voxy geometry, far past its render sphere
Stream and draw the terrain around a viewed player thousands of blocks
away, updating live, well past Voxy's own render sphere — with real
lighting.
Four pieces make this work:
-
Far-node injection (VoxyFarNodeInjector): Voxy only draws a camera-
centred LOD sphere, so streamed columns beyond it never render. Instead
of enlarging the sphere (cost grows with its area), inject just our
streamed columns as extra top-level render roots via AsyncNodeManager,
and lift the traversal shader's distance cull for them by forcing its
sectionRenderDistance uniform past any streamable range. Occlusion and
LOD are unchanged — same traverser and screen-space detail, more roots.
Terrain then reaches Voxy's projection far plane (~48k blocks). -
Real-light ingest (VoxyIngestBridge): Voxy's tryAutoIngestChunk reads
the client light engine, which never lights a chunk past render distance,
so it silently wrote nothing and terrain showed only VSS's stale cache.
Run Voxy's own convert -> mip -> insertUpdate pipeline directly, feeding
the chunk packet's real block+sky light (captured by
ClientPacketListenerMixin/FarChunkLightCapture), so torches, lava, and
shadows are correct. Falls back to a heightmap sky approximation if a
chunk ever arrives without light data. -
Deferred re-mesh (VoxyFarNodeInjector.tick): Voxy won't re-mesh a far
node live on its own, so after the async node add settles, force it with
WorldEngine.markDirty on a client tick. -
Dirty-tracked re-send (FarChunkStreamer, ChunkHolderMixin): the streamer
sent each far chunk once. Mark a streamed chunk dirty on broadcast
(scoped to chunks we actually stream — never vanilla's) and re-send the
whole chunk on the update interval, so the client re-ingests and Voxy
re-meshes it. Full re-send because a client can't apply incremental
deltas to an out-of-range chunk it never cached.