Repository navigation
fix(client): stop copper grates and barriers from culling neighbor faces - #667
Merged
Purdze merged 2 commits intoOct 8, 2026
Merged
Conversation
Copper grates (all oxidation and waxed states) and barriers bake as full cubes but are cutout/noOcclusion in vanilla, so the mesher culled the adjacent face of every solid block touching them and left a see-through hole, most visible next to a placed copper grate. Adds the grate family and barrier to is_non_occluding, and a regression test covering the eight grate states, barrier, the existing glass/ice/leaves sets, and the solid lookalikes that must keep culling. Fixes PommeMC#660.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Placing a copper grate culls the adjacent face of every solid block touching it, leaving a see-through hole instead of the neighbor block's face (visible in the issue screenshot).
Why
Copper grates bake as full cubes, so the mesher treated them as occluders and dropped the neighboring face via
registry.occludes_neighbor. In vanilla the whole grate family isnoOcclusion/cutout (like glass and ice), so it must never cull a neighbor.Change
is_non_occluding(pomme-client/src/world/block/model.rs) now covers:copper_grate,exposed_/weathered_/oxidized_and their waxed variants) via the_copper_gratesuffixbarrier, the only other full-cube block that is cutout in vanilla and had the same bugExisting entries (
_leaves,_stained_glass,glass,tinted_glass,ice,frosted_ice) are unchanged; solid lookalikes such aspacked_ice/blue_icestill occlude.Added a regression test asserting the grate family,
barrier, and the existing non-occluding set reporttrue, and thatstone/oak_planks/copper_block/packed_ice/blue_ice/panes still reportfalse.Verification
cargo test -p pomme-client --bin pomme-client world::block::model— 21 passedcargo clippy -p pomme-client --release --all-targets --all-features -- -D warnings— cleanFixes #660.