Skip to content

Add Netherite Colossal Chests as new top tier - #207

Open
rubensworks wants to merge 5 commits into
master-1.21-ltsfrom
claude/colossalchests-issue-168-l3qg92
Open

Add Netherite Colossal Chests as new top tier#207
rubensworks wants to merge 5 commits into
master-1.21-ltsfrom
claude/colossalchests-issue-168-l3qg92

Conversation

@rubensworks

Copy link
Copy Markdown
Member

Closes #168

Adds netherite as a new chest material, sitting above obsidian as the new top tier.

Behaviour

  • Inventory multiplier 5 (diamond and obsidian are both 4), configurable via chestInventoryMaterialFactorNetherite.
  • Blast-resistant, like obsidian — matching vanilla, where netherite blocks are also blast-resistant.
  • Top of the upgrade chain: since ItemUpgradeTool walks ChestMaterial.VALUES by ordinal, netherite automatically becomes the final upgrade step and the first downgrade step.
  • Gated behind the existing metalVariants config option, whose comment was updated accordingly.

Recipes

As suggested in the issue, netherite chest walls are made by upgrading diamond chest walls at a smithing table with netherite scrap. Cores and interfaces are then crafted from netherite walls exactly like the other materials.

One deviation from the issue: the recipe does not use minecraft:netherite_upgrade_smithing_template as its template ingredient. SmithingMenu shrinks all three input slots on craft, so that would consume one smithing template per chest wall — prohibitive when a 5×5×5 chest needs ~98 walls. In 1.21.1 the template field of smithing_transform is still mandatory (it only became optional in later versions), so a gold ingot is used instead, mirroring the scrap + gold cost of a vanilla netherite ingot and keeping the upgrade "not too tough" as the issue asked.

Recipes are added for all three loaders, with the appropriate c: / forge: tag conventions per loader.

Assets

Blockstates, block/item models, loot tables, block tag entries, atlas entries and lang keys mirror the existing materials. The three block textures and the chest entity texture were generated by recolouring the grayscale iron textures — the same relationship the existing copper/gold/silver textures have to iron — onto a dark, desaturated netherite ramp, preserving alpha and the chest model's black outlines.

Tests

Added game tests covering the new tier:

  • 5×5 and 9×9 netherite structure formation
  • obsidian → netherite upgrade, netherite → obsidian downgrade
  • base/netherite and size/netherite advancements (positive and negative)
  • All three netherite recipes, resolved through the recipe manager

./gradlew build and ./gradlew runGameTestServer both pass — 94/94 required game tests green on Fabric, Forge and NeoForge.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UQhNuW5hjBYkkuub4MKT3Z


Generated by Claude Code

claude added 5 commits August 25, 2026 18:09
Netherite becomes the new highest chest material, above obsidian:
* Inventory multiplier of 5 (obsidian and diamond are 4)
* Blast-resistant, like obsidian
* Top of the chest upgrade/downgrade tool chain

Chest walls are obtained by upgrading diamond chest walls at a smithing
table with netherite scrap. The netherite upgrade smithing template is
deliberately not used as the template ingredient, since the smithing menu
consumes all three input slots, which would cost one template per wall.
A gold ingot is used instead, mirroring the scrap plus gold cost of a
netherite ingot. Cores and interfaces are crafted from netherite walls
just like the other materials.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQhNuW5hjBYkkuub4MKT3Z
The first pass recoloured the iron textures onto a netherite ramp, which
kept iron's clean, flat surface. Vanilla's block of netherite is instead
mottled, with irregular brown and neutral patches.

The surface roughness is now taken from the interior of the vanilla
netherite block texture, as a local-average-subtracted offset field so
only its mottling carries over, not its border or overall shading. The
field is mirrored when sampled, so it tiles seamlessly.

All four textures are also snapped to a single shared 14-colour palette,
matching how few colours Minecraft textures normally use (vanilla
netherite uses 10) and keeping the material consistent across the wall,
core, interface and chest model.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQhNuW5hjBYkkuub4MKT3Z
Three problems with the previous textures:

* They still read as their own material rather than as netherite. They now
  use the palette of vanilla's block of netherite directly, extended only
  with darker shades for the recessed detail, which sits below anything on
  the vanilla block. The mottling is also taken at full scale now instead
  of high-passed, since the larger blotches are most of what makes
  netherite look rough, and is applied as a multiplier so the frame around
  each block and the recessed detail keep their shape.

* The wall and core had a recognisable artifact towards the bottom right.
  The mottling was sampled mirrored, which made rows 10 and 13 and columns
  11 and 12 exact duplicates. Patches of the vanilla mottling are now
  scattered across the texture, each independently placed and oriented, so
  no row, column or patch repeats.

* The chest model z-fought when closed. The lid's underside and the base's
  top face are coplanar at that point and so must be textured identically,
  as they are in every other chest texture here. The mottling broke that,
  and the two faces are now explicitly kept in sync.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQhNuW5hjBYkkuub4MKT3Z
Two things made the bottom left stand out. The mottling was applied at full
strength to the dark frame around each block as well as to the lit surface,
so a dark patch landing there punched a visible notch out of the frame: it
dropped to a luminance of 11 where the rest of the frame sat at 42. And
because each 4x4 patch was copied across with its own average brightness
intact, a patch darker than its neighbours read as a block rather than as
grain.

The mottling now fades out on everything darker than the lit surface, so
the frame and the recessed detail stay continuous, and most of each patch's
own average is taken back out of it, so no patch lands markedly darker or
lighter than the ones around it. The frame is a flat two shades again, and
the worst local deviation on the wall drops from -19 to +9, against -22 on
the vanilla block itself.

The darker shades added for the recessed detail are also no longer
reachable from the surface, which was letting the mottling punch pinholes
darker than netherite ever gets.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQhNuW5hjBYkkuub4MKT3Z
The chest texture was carrying the same mottling as the blocks, and its
faces are far smaller: only fourteen pixels across, each with a one pixel
dark rim and a one pixel light rim. At the strength the blocks use the
mottling swamped both rims, leaving faces with no readable border and an
interior spanning a luminance of 32 to 88.

The chest now takes much less mottling than the blocks, and its greys are
mapped onto vanilla netherite's own levels rather than the blocks' plain
ramp. Every face is then given the two borders vanilla's block has, lit
from the top left: a dark rim at 53 turning to 32 along the bottom and
right edges, and a bright inner rim at 88 turning to 75. Interiors now sit
between 65 and 75 with a standard deviation under 5, against 9.8 on the
vanilla block.

The block textures are untouched, and the lid underside and base top stay
identical so the closed chest still does not z-fight.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQhNuW5hjBYkkuub4MKT3Z
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.

2 participants