Tags
Creators
Details
Licensed GPL-3.0-only
Published last month
Updated 3 weeks ago
All versions
1.4.5+mc26.1.2-neoforge
Release
Cullify 1.4.5+mc26.1.2-neoforge3 weeks ago 22
Compatibility
Minecraft: Java Edition
26.1.2
Platform
NeoForge
Supported environments
Client-side
Required content
Unavailable version
Unavailable version
Changes
[1.4.5] - 2026-07-13
๐ Bug Fixes (Calculation Logic)
- ๐ Shape Classification Fix (TRIANGLE / STAR): The chunk-section classifier used unsigned (mirrored) distances, so asymmetric shapes were evaluated as if every section sat in the positive quadrant. Sections behind the player could be wrongly marked "fully kept" (vegetation never culled) or wrongly culled. The classifier now receives signed section bounds and matches the per-block shape math exactly on every side of the player.
- โฌก Hexagon Over-Culling Fix: The fast radial rejection used the configured limit as the culling radius, but the hexagon's farthest corners extend to ~115% of the limit. Sections near the hexagon's Z-extremes were culled while still inside the visible shape. The rejection now uses the true circumradius.
- โญ Star Concavity Fix: The star shape is concave (union of two triangles), so a section whose four corners are inside the union is not necessarily fully inside. Sections are now only marked "fully kept" when all corners sit inside the same triangle.
- ๐ฒ LOD Hash Quality: Completed the fmix64 finalizer (both multiply rounds) in the deterministic LOD density hash, removing visible stripe patterns in thinned vegetation at low density settings.
โก Performance Optimizations
- โป๏ธ Shared Section Classifier: Unified the duplicated section-classification math from
ClientEventHandlerand the SodiumLevelSlicemixin into a single, corrected implementation inCullifyMod. - ๐ฐ Equal-Distance Reuse: When grass/flower/other culling distances are equal (the default), the section classifier now computes the result once and reuses it, skipping up to 2/3 of the classification work.
- ๐ฑ๏ธ Hit-Outline Early-Out: The block-outline mixin now checks the cached enable flags before fetching the block state, removing per-frame config lookups.
- ๐พ Atomic Config Saves (Fabric): The config file is written to a temp file and atomically moved into place, so a crash mid-save can never corrupt
cullify.json.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:GpkmSicC:hZDt8fWx"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:GpkmSicC:hZDt8fWx"
}

