🏛️ Architecture & Mixin Technical Reference (Minecraft 26.1.2)
Camera Culling is engineered with a strict "1 File, 1 Purpose" architecture and zero-overhead Mixin hooks designed specifically for the non-obfuscated Minecraft 26.1.2 rendering engine.
📋 Mixin Target Ledger
| Mixin Class | Target Minecraft Class | Target Method & Injection Point | Function |
|---|---|---|---|
EntityRendererMixin | net.minecraft.client.renderer.entity.EntityRenderer | shouldRender @At("HEAD") | Multi-point raycast occlusion culling & crowd density checks |
BlockEntityRenderDispatcherMixin | net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher | tryExtractRenderState(BlockEntity, float, CrumblingOverlay) @At("HEAD") | 6-sided enclosure & raycast block entity culling (3 arguments) |
BlockEntityRenderDispatcherMixin | net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher | tryExtractRenderState(BlockEntity, float, CrumblingOverlay) @At("RETURN") | 2-sided sign back-face & blank text culling (3 arguments) |
LivingEntityRendererMixin | net.minecraft.client.renderer.entity.LivingEntityRenderer | submit @At("HEAD") & @At("RETURN") | Applies & resets OpenGL Texture LOD mipmap bias (GL_TEXTURE_LOD_BIAS) |
SingleQuadParticleMixin | net.minecraft.client.particle.SingleQuadParticle | extract @At("HEAD") | QuadParticle occlusion culling against solid geometry |
TextureAtlasMixin | net.minecraft.client.renderer.texture.TextureAtlas | cycleAnimationFrames @At("HEAD") | Suppresses off-screen animated texture uploads |
🌳 Package Hierarchy
text
net.vanillaoutsider.culling
├── CameraCullingClient.java (ClientModInitializer & stats counters)
├── ModVersionGuard.java (Knot classloader version integrity guard)
│
├── command
│ └── CameraCullingCommand.java (FabricClientCommandSource Brigadier syntax tree)
│
├── config
│ ├── CameraCullingConfig.java (JSON serialization for client & server configs)
│ ├── CullingLevel.java (LOW, MEDIUM, HIGH, SUPER intensity profiles)
│ ├── ModMenuIntegration.java (ModMenu API entrypoint with deferred YACL factory)
│ └── YaclScreenHelper.java (YetAnotherConfigLib v3 screen builder)
│
├── mixin
│ ├── BlockEntityRenderDispatcherMixin.java
│ ├── EntityRendererMixin.java
│ ├── LivingEntityRendererMixin.java
│ ├── SingleQuadParticleMixin.java
│ └── TextureAtlasMixin.java
│
└── util
├── AnimationCullingHelper.java (Pauses atlas upload when paused/in menus)
├── BlacklistHelper.java (Client & server entity blacklist evaluation)
├── BossDetectionHelper.java (Dynamic HP thresholding & name heuristics)
├── CullingDiagnosticsHelper.java (Real-time chat & log state transition tracing)
├── CullingRaycastHelper.java (Zero-allocation primitive raycasting & hysteresis)
├── ParticleCullingHelper.java (4m proximity bubble & visual clip raycasting)
├── SignTextCullingHelper.java (Vector normal dot products for 2-sided signs)
└── TextureLodHelper.java (3-tier OpenGL mipmap LOD bias calculation)