EntityCulling 1.11.3 fixes camera pop-in and a world memory leak

Key takeaways

EntityCulling is one of those mods that is installed in almost every performance pack and almost never discussed, because when it works you cannot tell it is there. It skips rendering entities the camera cannot see, which on a server with a busy spawn or a farm full of mobs is one of the largest single frame-time savings available.

Version 1.11.3, published 8 October for 26.3, is a two-item changelog. Neither item makes the mod faster. Both make it stop doing something wrong, and one of them explains a complaint people have had about the mod for a long time.

The pop-in fix

The first entry covers two related bugs in frustum culling – the check that decides whether something is inside the camera’s field of view.

Frustum culling was not using the whitelist. EntityCulling keeps a whitelist of entity types that should never be culled. That list was being respected by the occlusion check but not by the frustum check, which meant whitelisted entities could still vanish when they left the camera’s view cone.

Frustum culling was using the uninflated hitbox. An entity’s hitbox is smaller than the space its model actually occupies – think of a long tail, a wide wing, or an item frame’s contents sticking out past the frame. Culling against the raw hitbox rather than an inflated one means an entity whose hitbox has just left the view cone gets culled while part of its model is still on screen.

Together these produce the symptom the issue report describes: weird pop-in and pop-out when you simply turn the camera, with nothing else moving. If you have ever panned across a room and watched an item frame or a mob blink out at the edge of the screen, this is why.

Minecraft mob farm viewed from a distance

The memory leak

The second fix is less visible and arguably more serious. The mod’s reference to an entity is now weak, which prevents a leak caused by the author’s own library interacting with Fabric API.

The failure described is that leaving a world could leak the entire level – meaning the game held onto all of that world’s data in memory rather than releasing it. Do that two or three times in a session and the heap fills with worlds you are no longer in.

Why a weak reference fixes it: a strong reference keeps an object alive as long as something points at it. If a culling cache holds a strong reference to an entity, and that entity holds a reference to its world, then the cache keeps the world alive forever. A weak reference lets the garbage collector reclaim the entity anyway, breaking the chain.

This is the kind of bug that shows up as “Minecraft gets slower the longer I play” rather than as a crash, and it is usually blamed on the wrong thing. If you have been restarting the client between worlds to keep performance up, this fix may be the reason you can stop. Our chunk loading and stutter guide covers the other common causes of the same symptom.

What EntityCulling actually does

Worth restating, because the mod’s name undersells it. Vanilla Minecraft renders every entity within render distance whether or not anything blocks the line of sight to it. A hundred mobs behind a wall still cost render time.

EntityCulling runs an occlusion test on a separate thread and skips the ones that are genuinely hidden. The gain scales with how many entities are hidden, which means:

It pairs with rather than competes against the chunk-rendering mods. Our Sodium review covers the terrain half of the problem, and our culling explainer covers how the two kinds of culling differ.

Frame rate heavy Minecraft landscape with distant terrain

Should you update

Yes, and without much thought. There is no new feature to evaluate, no config change, and no compatibility risk introduced – it is two bug fixes on a mod you already trust. The memory leak fix alone justifies it for anyone who plays long sessions or switches worlds often.

One note for pack maintainers: the leak was caused by an interaction between the author’s own library and Fabric API, which means it would have affected the Fabric build specifically. If your pack is NeoForge you were likely never hitting it, but the frustum fixes apply to both.

Where it sits in a 26.3 pack

EntityCulling is client-side. A server does not need it and cannot require it, which makes it one of the safest things to add to a pack – there is no version negotiation and nothing for an admin to approve. Our plugins versus mods explainer covers why that distinction matters.

The standard 26.3 performance stack it belongs to is a rendering mod, a lighting or memory mod, and this. Our performance mod list covers the full set, and our server-side equivalent covers the other half if you run the world as well as play it.

Minecraft view used to test entity culling performance

Our read

This is a good example of why bug-fix releases deserve coverage. The frustum fix resolves a visual artefact that people have been attributing to shaders, to render distance, or to their hardware for months – and the answer turned out to be a culling check using the wrong hitbox. The memory leak is the sort of thing that only gets found because somebody traced a complaint back through two of their own libraries.

Neither changes a number you can benchmark. Both change how the game feels over a two-hour session, which is harder to measure and matters more.

Images: Photon Shaders project gallery.