Skip to content

feat(blockstates): pin un-rotated bedrock and deepslate variants - #232

Merged
BharathASL merged 2 commits into
mainfrom
feat/unrotated-blockstates-pedosphere-strata
Sep 23, 2026
Merged

BharathASL merged 2 commits into
mainfrom
feat/unrotated-blockstates-pedosphere-strata

Conversation

@BharathASL

@BharathASL BharathASL commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Description

Pin bedrock, deepslate and infested deepslate to a single un-rotated, un-mirrored model per state, so the directional lighting rims and horizontal strata in the Keyframe masters stay consistent across block boundaries.

Vanilla 1.21.x picks one of four weighted variants for these blocks at random (the base model, its _mirrored twin, and each of those at y: 180). This PR keeps only the base model. Deepslate is a pillar block, so it keeps the vanilla per-axis rotation (axis=x gets x: 90, y: 90, axis=z gets x: 90). Without it, sideways deepslate would show deepslate_top on the wrong face. Vanilla infested_deepslate uses the same deepslate and deepslate_mirrored models with the same four random variants per axis, so it gets the same override; otherwise infested blobs would render mirrored next to pinned deepslate. All three files were checked against the 1.21.6 client jar.

The oak overrides from the earlier revision are gone. The vanilla oak_log, oak_planks and oak_leaves blockstates already map to a single model with no random rotation, so those overrides had no effect.

Refs #77. This PR only adds the blockstates. The texture criteria in #77 are still open. infested_stone has the same gap relative to stone.json and is tracked in #236.

Affected Assets

  • pack_template/assets/minecraft/blockstates/bedrock.json
  • pack_template/assets/minecraft/blockstates/deepslate.json
  • pack_template/assets/minecraft/blockstates/infested_deepslate.json

Type of Change

  • feat: New vector texture master, blockstate, or compiler capability
  • fix: Tiling fix, palette correction, or bugfix
  • docs: Documentation improvement
  • chore / refactor: Maintenance, dependencies, or codebase cleanup

Contributor Checklist

Please check all applicable boxes before requesting review:

Vector Texture Standards (if adding/modifying SVGs)

  • Authored as a clean $512\times512$ SVG (viewBox="0 0 512 512"). Not applicable: no SVGs changed.
  • Primary shapes are aligned to the $32\text{px}$ texel grid ($16\times16$ grid). Not applicable: no SVGs changed.
  • Seamless Toroidal Tiling: Checked and verified that elements wrapping across $X$ and $Y$ edges align perfectly without seams or chopped shapes. Not applicable: no SVGs changed (npm test tiling audit still passes).
  • Ore Consistency: If adding an ore texture, the stone background geometry and corner radius (rx) match textures/block/stone.svg exactly. Not applicable: no ore textures.
  • Free of leftover AI generation comments, unnecessary editor namespaces, or embedded raster images. Not applicable: no SVGs changed.

Build & Verification

  • Ran npm run build locally and verified that the pack compiles successfully.
  • Verified textures in-game or inspected the rasterized PNG outputs in dist/. Not done: I haven't checked the blockstates in game yet. The variant keys and rotations were compared by hand against the vanilla 1.21.6 blockstate JSON.

Git Hygiene & Standards

  • Commit message(s) follow Conventional Commits (e.g., feat(textures): ...).
  • Every commit is signed off with the Developer Certificate of Origin (git commit -s).
  • Branch is rebased cleanly onto latest main with no merge commits.
  • Formatting complies with .editorconfig (2-space indent, LF endings, trailing newline).

@ninja6-agent ninja6-agent Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blockers

  • pack_template/assets/minecraft/blockstates/deepslate.json:L3: deepslate is a pillar block (axis=x|y|z), and the vanilla blockstate rotates axis=x by x:90,y:90 and axis=z by x:90. The catch-all "" variant matches every axis with no rotation, so any sideways deepslate renders with deepslate_top on its top face and the strata running vertically. Keep the three axis keys and remove only the random mirrored/y:180 entries: "axis=y": {"model": "minecraft:block/deepslate"}, "axis=z": {"model": "minecraft:block/deepslate", "x": 90}, "axis=x": {"model": "minecraft:block/deepslate", "x": 90, "y": 90}.

Nits

  • pack_template/assets/minecraft/blockstates/oak_log.json:L1: Same content as the vanilla 1.21 oak_log.json, which has no random rotation. The commit body says this file suppresses "random horizontal rotation", which is wrong. Drop the file, or correct the PR description and commit text to say it only pins the vanilla mapping.
  • pack_template/assets/minecraft/blockstates/oak_planks.json:L1, pack_template/assets/minecraft/blockstates/oak_leaves.json:L1: Vanilla already maps both blocks to one model with no rotation, so these overrides do nothing. Remove them, or give a reason to keep them (for example, guarding against a future vanilla change).
  • Commit be382b6 body: The body is a single 305-character line that restates the PR description, which breaks N6-COMMIT-05 (keep it short and wrapped at 72 columns; reasoning belongs in the PR). The repo squash-merges with COMMIT_MESSAGES, so this body will land on main. Trim it in the squash message at merge time.
  • Branch feat/unrotated-blockstates-pedosphere-strata: The pedosphere-strata part does not describe the change. Bedrock and deepslate are lithosphere blocks, and the oak blocks are neither. Prefer a two- or three-word slug such as feat/unrotated-blockstates for future branches (N6-BRANCH-03, CONTRIBUTING §2).

Drop vanilla random mirror/y:180 variants; keep deepslate per-axis
pillar rotation.

Signed-off-by: Bharath <bharathasl74185@gmail.com>
@BharathASL
BharathASL force-pushed the feat/unrotated-blockstates-pedosphere-strata branch from be382b6 to 1a91f80 Compare September 23, 2026 19:14
@BharathASL BharathASL changed the title feat(blockstates): add un-rotated blockstates for bedrock, deepslate, and oak feat(blockstates): pin un-rotated bedrock and deepslate variants Sep 23, 2026

@ninja6-agent ninja6-agent Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blockers

  • pack_template/assets/minecraft/blockstates/deepslate.json:L3: Vanilla infested_deepslate.json (1.20.4 and 1.21.6) uses the same deepslate and deepslate_mirrored models with the same four random mirror and y:180 variants per axis. It is not overridden here, so it keeps the random variants. Infested deepslate generates as blobs inside the deepslate layer. After this change, about 3 in 4 infested blocks show a mirrored or flipped lighting rim next to pinned deepslate. That breaks the continuity this PR is meant to guarantee, and it lets players spot silverfish blocks by sight. Add pack_template/assets/minecraft/blockstates/infested_deepslate.json with the same three axis variants as deepslate.json.

Nits

  • pack_template/assets/minecraft/blockstates/stone.json:L1: Same gap already on main: vanilla infested_stone.json has the four random stone variants and has no override. Open a follow-up issue to pin it too.
  • CONTRIBUTING.md:L235: The branch was force-pushed at 19:14Z after the 19:00Z review of be382b6, which replaced the reviewed commit and removed the review delta. Follow-up changes during review go in new signed-off commits, and each reply should cite the SHA that fixes it.

Signed-off-by: Bharath <bharathasl74185@gmail.com>
@BharathASL

Copy link
Copy Markdown
Contributor Author
  • Blocker (infested_deepslate): resolved in 56979fd. Added pack_template/assets/minecraft/blockstates/infested_deepslate.json with the same three axis variants as deepslate.json. Checked against the 1.21.6 jar: vanilla infested_deepslate.json references the same deepslate and deepslate_mirrored models with the same variants as deepslate.json.
  • Nit (infested_stone): left out of this PR, tracked in Pin un-rotated infested_stone variants to match stone.json #236.
  • Nit (force-push): noted. The fix is a new signed-off commit on top of 1a91f80, pushed without force.

@ninja6-agent ninja6-agent Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blockers

None.

Nits

  • CHANGELOG.md:L30: Players will see this change (bedrock, deepslate and infested deepslate no longer get random mirrored or y:180 variants), but [Unreleased] has no entry for it. The stone override got one at CHANGELOG.md:L27. Add a line under ### Added for the pinned single-variant blockstates, and mention that deepslate keeps its per-axis pillar rotation.

@BharathASL
BharathASL added this pull request to the merge queue Sep 23, 2026
Merged via the queue into main with commit 48d770a Sep 23, 2026
5 checks passed
@BharathASL
BharathASL deleted the feat/unrotated-blockstates-pedosphere-strata branch September 23, 2026 19:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant