
Fork Client
The modern utility mod for Fabric with a customizable HUD, Click GUI, rendering, and QoL additions for Minecraft.
Оцените первым
859
7
Список изменений
1. src/main/java/com/mahidx7/forkclient/client/modules/EntityCullingModule.java
- Static utility class (follows AntiKnockbackModule pattern)
- Async thread pool (Executors.newFixedThreadPool, daemon threads at NORM_PRIORITY - 1)
- Double-buffered results — writeBuffer (ConcurrentHashMap) receives worker results; readBuffer (volatile) is read by the render thread after an atomic swap
- DDA ray-step path-tracing — walks a ray from camera to entity center through the block grid, stepping one block at a time via the axis-crossing DDA algorithm
- Occlusion check uses BlockState.isSolidRender() — the exact predicate MC uses internally for face-culling during chunk meshing (passes for stone/dirt/deepslate, fails for glass/water/leaves/slabs)
- Entities too close (< 1.5 blocks) or too far (> 128 blocks) are never culled (avoids visual artefacts)
- Position-keyed via spatial hash (x73856093 ^ y19349669 ^ z*83492791) for frame-to-frame matching
2. src/main/java/com/mahidx7/forkclient/mixin/LevelRendererMixin.java
- @Inject at HEAD of submitEntities — calls EntityCullingModule.update() with the entity render state list and camera position
- @Redirect on EntityRenderDispatcher.submit() — intercepts each entity dispatch and skips rendering if shouldSkip(state) returns true Modified files:
3. ForkClientController.java:332 — registered "entity_culling" module under ModuleCategory.VISUAL
4. fork-client.mixins.json — added "LevelRendererMixin" to the client mixin list Architecture
Frame N:
submitEntities() called
└─ @Inject HEAD → EntityCullingModule.update()
├─ Swap double buffers (Frame N-1 writes → Frame N reads)
├─ Populate skipPositions from readBuffer (cached results)
└─ Submit async trace tasks for cold entries → writeBuffer.`
└─ for each EntityRenderState:
└─ @Redirect on dispatcher.submit()
└─ if shouldSkip(state) → return (skip rendering)
└─ else → dispatcher.submit() (normal path).
One frame of latency (standard for async entity culling — used by Sodium, Etho's EntityCulling, etc.) ensures the render thread never stalls on ray-tracing.
Файлы
fork-client-1.1.6+26.2.jar(1.99 MiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
1.1.6+26.2
Загрузчики
Fabric
Версии игры
26.2
Загрузок
42
Дата публикации
20.08.2026
