An unofficial patch, bugfix, and compatibility addon for Copper Age Backport (by Smallinger) on Minecraft 1.21.1 for NeoForge and Fabric mod loaders.
Copper Age Backport brings official modern copper equipment and the Copper Golem to Minecraft 1.21.1.
Important loader distinction:
- On Fabric, Copper Age Backport runs completely fine standalone and suffers from no startup or registry crashes. On Fabric, this patch serves purely as a gameplay, balance, and mod compatibility enhancement.
- On NeoForge (versions 21.1.237 and newer), Copper Age Backport has a critical registry collision bug that crashes the game on startup or aborts world loading with a safe mode warning. This patch intercepts and fixes that crash on NeoForge.
Across both loaders, this patch restores canonical armor durability, adds the Copper Axe to the Combat creative tab, implements proper vanilla armor trim rendering, adds optional compatibility for the Tool Trims mod, enhances the Copper Golem spawn egg texture, and integrates with popular mods such as Jade, Better Combat, and Create.
- The Problem: NeoForge 21.1.237 and newer enforces strict registry validation during bootstrap. Upstream Copper Age Backport registers
ResourceKey[minecraft:armor_material / minecraft:copper]multiple times across separate item initializations. On NeoForge, this triggers anIllegalStateException: Duplicate keyerror, causing the game to crash or forcing world loading into Safe Mode. - Important Note: Fabric does not enforce this restriction and runs Copper Age Backport standalone without issues. This crash fix is active only on NeoForge.
- The Fix: A thread-safe
MemoizedSupplierinterceptor implemented via Mixin ensures the armor material registration executes exactly once during startup on NeoForge, completely eliminating the crash.
- The Problem: In upstream Copper Age Backport, copper armor items omit the canonical
MAX_DAMAGEdata component introduced in modern Minecraft (1.20.5+ / 1.21). As a result, copper armor pieces are completely indestructible and never lose durability when taking damage. - The Fix: Restores balanced durability values following standard vanilla tier progression using the canonical tier multiplier of 11:
- Copper Helmet: 121 max durability
- Copper Chestplate: 176 max durability
- Copper Leggings: 165 max durability
- Copper Boots: 143 max durability
- Note: Separate third-party durability fix mods are obsolete and no longer needed.
- In vanilla Minecraft, all axes appear in both the Tools & Utilities tab and the Combat tab. Upstream omitted the Copper Axe from the Combat tab.
- Copper Axe is placed in the Creative Combat tab directly after Stone Axe and before Iron Axe, maintaining tier progression (Wooden -> Stone -> Copper -> Iron).
It is important to distinguish between how armor trims and tool trims work in this mod:
- Copper armor pieces (Helmet, Chestplate, Leggings, Boots) can be trimmed at a Smithing Table out of the box using standard vanilla armor trim smithing templates.
- Adds model override definitions across all 4 armor pieces for all 10 standard trim materials (trim_type predicates from 0.1 to 1.0), with 44 discrete item models.
- Includes a custom
copper_darkerpalette permutation inassets/minecraft/atlases/blocks.jsonso copper trims applied to copper armor maintain high visual contrast, matching vanilla gold-on-gold and iron-on-iron conventions. - Preserves in-world player 3D entity armor trim rendering.
- Note: This mod does NOT add standalone tool trimming on its own. It is specifically an integration layer for the Tool Trims mod.
- If Tool Trims is installed, all 5 copper tools (Copper Sword, Copper Axe, Copper Pickaxe, Copper Shovel, and Copper Hoe) become trimmable at a Smithing Table.
- Supports all 4 Tool Trims patterns (Linear, Tracks, Charge, Frost) and all 10 trim materials (Amethyst, Copper, Diamond, Emerald, Gold, Iron, Lapis, Netherite, Quartz, Redstone), providing 200 data-driven smithing recipes.
- Reuses Tool Trims colorized palettes based on iron tool silhouettes, avoiding redundant texture assets.
- Z-Fighting Elimination: Trim models utilize Tool Trims layer architecture (layer0 mapped to
tooltrims:item/trim_bases/iron_<tool>_<pattern>overlay) to eliminate coplanar z-fighting artifacts in first-person and world rendering. - Copper tools are dynamically enrolled into
#tooltrims:trimmable_toolsas well as standard vanilla tool tags (#minecraft:swords,#minecraft:axes, etc.).
- To ensure copper equipment models with trim overrides are not masked by upstream plain models due to pack load order, models are packaged into an always-enabled built-in resource pack (
copper_trims). - Registered via
ResourceManagerHelper.registerBuiltinResourcePack(ALWAYS_ENABLED) on Fabric andAddPackFindersEvent(Pack.Position.TOP) on NeoForge.
- Conditionally replaces the classic dotted spawn egg icon with the modern detailed Copper Golem spawn egg texture when Vanilla Backport is installed.
- Configurable via
config/copper_age_patch.json:"AUTO"(default): Uses the modern texture if Vanilla Backport is installed, classic otherwise."MODERN": Forces the modern detailed texture."CLASSIC": Forces the classic vanilla dotted texture.
- Antenna Items: Detects and displays items placed on the Copper Golem antenna (such as the poppy flower gifted by an Iron Golem).
- Weathering & Waxing: Displays the current oxidation stage (Unaffected, Exposed, Weathered, Oxidized) and whether the golem or statue is waxed.
- Held Items: Displays the item currently held by the Copper Golem.
- Shelf Inventories: Provides full visual inventory previews when looking at Copper Shelves via Jade.
- Enrolls copper nuggets from all sources into common tags:
#c:nuggets,#c:nuggets/copper, and#c:copper_nuggets. - Bidirectional crafting recipes: 9 copper nuggets craft 1 copper ingot, and 1 copper ingot crafts 9 copper nuggets.
- Adds Crushing Wheel recipes to recycle copper equipment into copper ingots and nuggets with Create.
- Configures native attack animations, weapon attributes, range, and sweeping hitboxes for copper weapons with Better Combat.
Full in-game translations for all supported language variants:
- Arabic (
ar_sa) - Azerbaijani (
az_az) - Chinese Simplified (
zh_cn) - Chinese Traditional (
zh_hk,zh_tw) - Czech (
cs_cz) - English (
en_us,en_gb) - French (
fr_fr,fr_ca) - German (
de_de) - Hungarian (
hu_hu) - Italian (
it_it) - Japanese (
ja_jp) - Korean (
ko_kr) - Polish (
pl_pl) - Portuguese (
pt_br,pt_pt) - Russian (
ru_ru) - Spanish (
es_es,es_mx,es_ar,es_cl,es_ec,es_uy,es_ve) - Thai (
th_th) - Turkish (
tr_tr) - Vietnamese (
vi_vn)
A client-side configuration file is located at config/copper_age_patch.json:
{
"spawnEggTextureMode": "AUTO"
}| Value | Behavior |
|---|---|
"AUTO" |
Modern texture if Vanilla Backport is present; classic dotted egg otherwise. (Default) |
"MODERN" |
Always use the modern detailed spawn egg texture. |
"CLASSIC" |
Always use the classic vanilla dotted spawn egg texture. |
| Mod | Platform | Requirement | Purpose |
|---|---|---|---|
| Copper Age Backport | NeoForge & Fabric | Required | The base mod being patched |
| Fabric API | Fabric | Required | Core framework on Fabric |
| Tool Trims | NeoForge & Fabric | Optional | Enables smithing trims on copper tools (optional integration) |
| Vanilla Backport | NeoForge & Fabric | Optional | Modern spawn egg texture trigger |
| Jade | NeoForge & Fabric | Optional | HUD tooltips for golems, statues, and shelves |
| Better Combat | NeoForge & Fabric | Optional | Custom combat animations and weapon stats |
| Create | NeoForge & Fabric | Optional | Crushing recipes and nugget recycling |
This project uses Gradle with Java 21:
# Clone the repository
git clone https://github.com/1unarea/copper-age-backport-patch.git
cd copper-age-backport-patch
# Run all verification tests
./gradlew test
# Assemble NeoForge and Fabric jars
./gradlew assemble
# Generated artifacts:
# - build/libs/copper_age_patch-neoforge-1.21.1-0.1.3.jar
# - build/libs/copper_age_patch-fabric-1.21.1-0.1.3.jar- Original Mod: Copper Age Backport by Smallinger (CC0).
- Patch: Developed by 1unarea under the MIT License.
- Clean-room implementation: No proprietary or external code was copied.