Replace black_concrete roads with scattered gray_concrete_powder/cyan_terracotta mix#887
Conversation
…_terracotta mix Use a deterministic coordinate-based hash to randomly scatter two block types for road surfaces instead of uniform black_concrete. Update all protection lists across tree, natural, landuse, amenities, and ground generation to recognize the new road blocks.
There was a problem hiding this comment.
Pull request overview
This PR replaces uniform black_concrete road surfaces with a deterministic, coordinate-hashed mix of gray_concrete_powder and cyan_terracotta, and updates “protected block” whitelists/blacklists across terrain and element passes so the new road blocks aren’t overwritten by vegetation/landuse/natural generation.
Changes:
- Added deterministic
road_block(x, z)selection for highway road surfaces (mixingGRAY_CONCRETE_POWDER/CYAN_TERRACOTTA). - Expanded protected/road-detection block lists in ground cleanup, tree placement, natural, landuse, and amenities to include the new road blocks.
- Added new block IDs/names/constants for
gray_concrete_powderandcyan_terracotta.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/element_processing/highways.rs | Implements deterministic mixed road surface selection and updates overwrite protection logic. |
| src/ground_generation.rs | Prevents stray vegetation cleanup from missing the new road surface blocks. |
| src/element_processing/tree.rs | Ensures tree placement avoids the new road blocks. |
| src/element_processing/natural.rs | Prevents natural-area generation from overwriting the new road blocks. |
| src/element_processing/landuse.rs | Prevents landuse ground generation from overwriting the new road blocks. |
| src/element_processing/amenities.rs | Updates amenity placement overwrite rules to recognize the new road blocks. |
| src/block_definitions.rs | Adds new block IDs and constants for GRAY_CONCRETE_POWDER and CYAN_TERRACOTTA. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Floor-level ledge bands: horizontal slab projections at each floor separation row, complementing the existing vertical fins - Foundation course: continuous accent block band at ground level - Lobby base (70%): solid wall block for the first floor cycle instead of glass, reading as a podium - Enhanced parapet: accent slab cap with corner posts for a defined roofline crown
- Move is_zebra_crossing outside inner loop (perf) and remove String allocation in tag comparison - Add BLACK_CONCRETE back to road surface blacklist to prevent overwriting asphalt areas and parking driving lanes - Add BLACK_CONCRETE to generate_siding check to protect all paved surfaces - Add Bedrock block mappings for gray_concrete_powder (concretePowder with color state) and cyan_terracotta (stained_hardened_clay with color state) to fix Bedrock edition export
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Add unit tests for gray_concrete_powder and cyan_terracotta Bedrock block mappings to catch palette serialization regressions - Use bitwise AND (h & 1) instead of modulo in road_block() for idiomatic bit checking - Deduplicate effective_block computation by hoisting it before the use_absolute_y branch in the main road surface drawing path
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 9 changed files in this pull request and generated 5 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Add BLACK_CONCRETE to zebra crossing whitelist so stripes render on asphalt area surfaces and older generated roads - Remove AIR-only whitelist from parapet corner posts so they reliably overwrite the cap slab placed just before them - Swap lobby base priority above floor separation band so the ground floor of modern skyscrapers is solid wall block throughout
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Use empty blacklist Some(&[]) instead of None for corner posts so they actually overwrite the cap slab (None/None = no-op when a block already exists) - Remove is_zebra_crossing duplicate re-introduced by merge from main
Use a deterministic coordinate-based hash to randomly scatter two block types for road surfaces instead of uniform black_concrete. Update all protection lists across tree, natural, landuse, amenities, and ground generation to recognize the new road blocks.
Adds more visual variation for skyscrapers.