๐ What is Cullify?
Cullify is a client-side mod that culls decorative vegetation blocks (such as grass, flowers, ferns, algae, and kelp) based on distance from the player and customizable geometric shapes. By preventing distant or non-visible vegetation blocks from rendering, it reduces rendering load (vertex throughput and draw calls) without altering or removing the actual blocks in the world.

โจ Features
- โ๏ธ Vegetation Culling โ Reduces rendering load by hiding vegetation blocks that are beyond a configured distance.
- ๐ 8 Geometric Culling Shapes โ Customizable boundaries to control culling behavior around the player.
- ๐ LOD Density Filter โ Deterministic, hash-based density filtering that thins out outer vegetation (75%, 50%, or 25%) to save CPU overhead near the boundary.
- ๐ฟ Double-Tall Vegetation Support โ Synchronizes culling between the bottom and top halves of double-tall blocks (like sunflowers or tall grass) to prevent visual discrepancies.
- โ๏ธ In-Game Config Menu โ A configuration screen accessible via the
Kkeybind, chat commands, or the NeoForge mods menu. - ๐ Real-Time Statistics HUD โ On-screen overlay tracking culled blocks, water replacements, chunk updates, and draw calls.
- ๐งช Native Sodium Compatibility โ Direct hooks into Sodium's internal LevelSlice rendering pipeline and Sodium Options API.
๐ Geometric Culling Shapes
Unlike traditional culling mods, Cullify offers flexible mathematical boundary checks on both the horizontal plane (X/Z) and the vertical axis (Y):
| Icon | Shape | Geometry Mode | Description |
|---|---|---|---|
| ๐ข | Sphere | 3D Sphere | Culls blocks outside a 3D spherical radius. |
| ๐ | Cylinder | Cylinder | Culls blocks outside a horizontal circular radius (infinite Y). |
| ๐ฆ | Box | 3D Box | Culls blocks outside a 3D cubical bounding box. |
| ๐บ | Triangle | Triangle | Culls blocks outside an equilateral triangular boundary centered on the player. |
| โฌก | Hexagon | Hexagon | Culls blocks outside a hexagonal boundary. |
| โญ | Star | Star | Culls blocks outside a 6-point star (union of two intersecting triangles). |
| โน๏ธ | Square | Square | Culls blocks outside a flat square grid. |
| ๐ต | Circle | Circle | Culls blocks outside a flat horizontal circular boundary. |
๐ฎ Controls & Commands
Configuring and inspecting Cullify in-game is straightforward:
โจ๏ธ Keybinds
Kโ Opens the custom Cullify GUI Config Screen.
๐ฌ Chat Commands
/cullify menuโ Opens the configuration GUI menu./cullify benchmarkโ Performs a benchmark of the mod and displays the results in chat./cullify debugโ Toggles the real-time statistics HUD overlay./cullify statsโ Prints current performance statistics directly into the chat./cullify verboseโ Toggles verbose logging for debugging./cullify reloadโ Forces a complete reload of the client level renderer chunks.
๐ Compatibility & Requirements
- Sodium / Embeddium: Fully integrated. Hooks directly into Sodium's internal LevelSlice rendering pipeline to batch-cull blocks in MDI (Multi-Draw Indirect) buffers. The Culling Shape options and configurations are also registered directly inside Sodium's Video Settings menu!
- Vanilla Renderer: Fallback compatibility included for the standard Minecraft block rendering pipeline.
- ๐ 100% Client-Side: This mod runs entirely on your client. You can join any server (Vanilla, Spigot, Forge, Paper, etc.) without any issues!
๐ License & Modpack Usage
This mod is available under the GNU General Public License v3 (GPL-3.0).
๐ฆ Modpack Permissions: Feel free to include Cullify in any of your modpacks on CurseForge, Modrinth, or private launchers! Credits are appreciated but not required.
โก Vibe Coding
This mod was built 100% using Vibe Coding! Developed entirely through AI-assisted pair programming, dynamic prompt iterations, and automated compilation loops. Let the vibes render!
Developed by Fluxsyum Studios

How to Install Cullify (Mod)
Cullify by FluxsyumStudios is verified for Fabric, Forge, Neoforge across Minecraft versions 1.20.1, 1.21.1, 26.1.2 (latest release: 1.4.5+mc26.1.2-neoforge, file size: 7.6 MB). Follow the steps below to install it safely from ModCraft.tv:
- Click the Download button above and select your Minecraft version (1.20.1, 1.21.1, 26.1.2) and platform (Fabric, Forge, Neoforge).
- Make sure you have the compatible loader or environment installed for Fabric, Forge, Neoforge.
- Move the downloaded Cullify file into your Minecraft
.minecraft/modsfolder and launch the game.
All Versions
+ Add Version### ๐ 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.
### ๐ 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.
### ๐ 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.
### ๐ 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.
### ๐ 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.
### โจ New Features
- ๐ฌ Cinematic Benchmark Camera**: Added
/cullify benchmark start <seconds>. The mod will now lock your movement and rotate the camera 360ยฐ automatically, ensuring perfectly accurate performance comparison tests. - ๐ Gorgeous Results Screen**: After finishing a benchmark, you are greeted with a beautiful glassmorphic screen showing your FPS gains, 1% Lows (stability), and how many plants were culled.
### โก Performance & Stability (Fewer Stutters!)
- ๐ถ Smooth Walking**: Increased the threshold for updating culled chunks. The game no longer aggressively rebuilds chunks with every step, completely removing stutters at higher render distances (like 12+ chunks).
- ๐ง Rebuilt Culling System**: Replaced the old heavy memory grid with a smart bounding-box math system. This saves a huge amount of RAM and makes plant scanning hundreds of times faster.
- ๐งน Micro-Stutter Fix**: Stopped allocating temporary blocks in memory during culling calculations. This prevents Java memory dumps, leading to much smoother frame rates.
- ๐ Faster Double-Tall Plants**: Caching properties of tall grass and large flowers is now instant, reducing CPU overhead in heavy biomes.
- ๐ป Less CPU Usage**: Background world checks now trigger less frequently, leaving more CPU power for actual rendering.
### โจ New Features
- ๐ฌ Cinematic Benchmark Camera**: Added
/cullify benchmark start <seconds>. The mod will now lock your movement and rotate the camera 360ยฐ automatically, ensuring perfectly accurate performance comparison tests. - ๐ Gorgeous Results Screen**: After finishing a benchmark, you are greeted with a beautiful glassmorphic screen showing your FPS gains, 1% Lows (stability), and how many plants were culled.
### โก Performance & Stability (Fewer Stutters!)
- ๐ถ Smooth Walking**: Increased the threshold for updating culled chunks. The game no longer aggressively rebuilds chunks with every step, completely removing stutters at higher render distances (like 12+ chunks).
- ๐ง Rebuilt Culling System**: Replaced the old heavy memory grid with a smart bounding-box math system. This saves a huge amount of RAM and makes plant scanning hundreds of times faster.
- ๐งน Micro-Stutter Fix**: Stopped allocating temporary blocks in memory during culling calculations. This prevents Java memory dumps, leading to much smoother frame rates.
- ๐ Faster Double-Tall Plants**: Caching properties of tall grass and large flowers is now instant, reducing CPU overhead in heavy biomes.
- ๐ป Less CPU Usage**: Background world checks now trigger less frequently, leaving more CPU power for actual rendering.
### โจ New Features
- ๐ฌ Cinematic Benchmark Camera**: Added
/cullify benchmark start <seconds>. The mod will now lock your movement and rotate the camera 360ยฐ automatically, ensuring perfectly accurate performance comparison tests. - ๐ Gorgeous Results Screen**: After finishing a benchmark, you are greeted with a beautiful glassmorphic screen showing your FPS gains, 1% Lows (stability), and how many plants were culled.
### โก Performance & Stability (Fewer Stutters!)
- ๐ถ Smooth Walking**: Increased the threshold for updating culled chunks. The game no longer aggressively rebuilds chunks with every step, completely removing stutters at higher render distances (like 12+ chunks).
- ๐ง Rebuilt Culling System**: Replaced the old heavy memory grid with a smart bounding-box math system. This saves a huge amount of RAM and makes plant scanning hundreds of times faster.
- ๐งน Micro-Stutter Fix**: Stopped allocating temporary blocks in memory during culling calculations. This prevents Java memory dumps, leading to much smoother frame rates.
- ๐ Faster Double-Tall Plants**: Caching properties of tall grass and large flowers is now instant, reducing CPU overhead in heavy biomes.
- ๐ป Less CPU Usage**: Background world checks now trigger less frequently, leaving more CPU power for actual rendering.
### โจ New Features
- ๐ฌ Cinematic Benchmark Camera**: Added
/cullify benchmark start <seconds>. The mod will now lock your movement and rotate the camera 360ยฐ automatically, ensuring perfectly accurate performance comparison tests. - ๐ Gorgeous Results Screen**: After finishing a benchmark, you are greeted with a beautiful glassmorphic screen showing your FPS gains, 1% Lows (stability), and how many plants were culled.
### โก Performance & Stability (Fewer Stutters!)
- ๐ถ Smooth Walking**: Increased the threshold for updating culled chunks. The game no longer aggressively rebuilds chunks with every step, completely removing stutters at higher render distances (like 12+ chunks).
- ๐ง Rebuilt Culling System**: Replaced the old heavy memory grid with a smart bounding-box math system. This saves a huge amount of RAM and makes plant scanning hundreds of times faster.
- ๐งน Micro-Stutter Fix**: Stopped allocating temporary blocks in memory during culling calculations. This prevents Java memory dumps, leading to much smoother frame rates.
- ๐ Faster Double-Tall Plants**: Caching properties of tall grass and large flowers is now instant, reducing CPU overhead in heavy biomes.
- ๐ป Less CPU Usage**: Background world checks now trigger less frequently, leaving more CPU power for actual rendering.
### โจ New Features
- ๐ฌ Cinematic Benchmark Camera**: Added
/cullify benchmark start <seconds>. The mod will now lock your movement and rotate the camera 360ยฐ automatically, ensuring perfectly accurate performance comparison tests. - ๐ Gorgeous Results Screen**: After finishing a benchmark, you are greeted with a beautiful glassmorphic screen showing your FPS gains, 1% Lows (stability), and how many plants were culled.
### โก Performance & Stability (Fewer Stutters!)
- ๐ถ Smooth Walking**: Increased the threshold for updating culled chunks. The game no longer aggressively rebuilds chunks with every step, completely removing stutters at higher render distances (like 12+ chunks).
- ๐ง Rebuilt Culling System**: Replaced the old heavy memory grid with a smart bounding-box math system. This saves a huge amount of RAM and makes plant scanning hundreds of times faster.
- ๐งน Micro-Stutter Fix**: Stopped allocating temporary blocks in memory during culling calculations. This prevents Java memory dumps, leading to much smoother frame rates.
- ๐ Faster Double-Tall Plants**: Caching properties of tall grass and large flowers is now instant, reducing CPU overhead in heavy biomes.
- ๐ป Less CPU Usage**: Background world checks now trigger less frequently, leaving more CPU power for actual rendering.
### โ Added / New Features
- ๐๏ธ Draggable Sliders**: Replaced the old distance click-cards with smooth, draggable sliders in the config menu.
- ๐ Sodium Slider Integration**: Added the "LOD Density" slider option natively inside the Sodium settings page.
- ๐จ Custom Glassmorphic UI**: Redesigned the config menu screen with a premium dark theme, animated culling shape previews, glowing green neon borders, and rich tooltips.
- ๐ Better Translations**: Added full localization support for 13 languages.
### ๐ Bug Fixes
- ๐ง Fixed Startup Crash**: Fixed a game crash on startup if Vanillin mod was not installed.
- โก Concurrency Protection**: Fixed rare background crashes when loading/unloading chunks.
- ๐ Voxel Grid Flickering Fix**: Fixed block rendering flickering issues when moving fast by using atomic swaps.
- ๐ LOD Block Outline Fix**: Fixed block outline wireframes showing up on invisible plant spaces where blocks were culled.
- ๐งน Cache Section Fix**: Fixed cached section states being deleted too early under background thread latency.
- ๐ Math.abs Random Bug**: Fixed a math overflow bug in the LOD generator causing uneven plant density distribution.
### โก Performance Optimizations
- ๐ฆ Memory Double-Buffering**: Reuses voxel grid memory arrays instead of allocating 2MB buffers repeatedly, saving RAM and avoiding GC micro-stutters.
- โ๏ธ Fast-Path Plant Check**: Replaced slow registries checks with quick direct Java class checks for 99% of plant lookups.
- ๐ฎ UI Optimization**: Cached visual glow animation math so it runs once per frame instead of calculating per option card.
- โ๏ธ Debounced Reload**: Consecutive config changes now trigger exactly one world redraw instead of reloading the world multiple times.
### ๐จ Visual & Assets Updates
- ๐ท๏ธ New Mod Logo**: Updated the mod logo (
Cullify.png) to a new high-resolution 2048x2048 design. Replaced the mod list icon, Custom HUD overlay icon, and menu screens. - ๐ผ๏ธ Sodium Sidebar Icon**: Configured the Cullify option tab inside the Sodium menu to display the custom mod icon natively next to the tab name (
setNonTintedIcon).
### ๐ Benchmark & Performance Profiling
- โฑ๏ธ Two-Phase Comparison Benchmark**: The
/cullify benchmark start <seconds>command now triggers an automated, two-phase comparative benchmark: - Phase 1**: Temporarily disables Cullify and measures rendering performance (warmup + recording).
- Phase 2**: Re-enables Cullify and records performance under the same conditions.
- ๐ Detailed FPS Metrics**: Tracks precise frame times to calculate Average FPS, Minimum/Maximum FPS, and critical gaming benchmarks (1% low and 0.1% low frame rates).
- ๐ Interactive Summary & File Links**: Generates a side-by-side comparison report text file, displays a colorized chat summary with performance gain percentages, and prints a clickable file link in chat to open the report instantly.
### ๐งช Sodium & Compatibility Improvements
- โก Native Sodium Options**: Fully resolved the startup crash related to duplicate mod ID entries (
IllegalArgumentExceptioninConfigManager.registerConfigs) under Sodium 0.8.x. Removed redundant annotations and unified option registering through standardneoforge.mods.tomlmod properties. - ๐ฆ Element Name Translation**: Integrated element translation support (
setElementNameProvider) for the Culling Shape enum, and provided translations for all geometric shapes in English and Brazilian Portuguese. - โ๏ธ Default Values & Storage Handlers**: Fully populated option builders with proper default values and background storage handlers (
ClientEventHandler::scheduleDebouncedSave) to preventNullPointerExceptionduring Sodium configurations setup.
### ๐ Localization & Translations
- ๐ง๐ท Translation Coverage**: Added missing translation keys (
cullify.options.pageand shapes names) for both English (en_us.json) and Portuguese (pt_br.json).