diff --git a/README.md b/README.md index ee45e91..55b7337 100644 --- a/README.md +++ b/README.md @@ -24,13 +24,27 @@ and a material whose ingredient item is missing fails to parse. So each source mod's materials are a separate built-in datapack, registered in `CMModular.java` only when that mod is present. -**Overlapping metals.** Several metals come from more than one mod - steel, -lead and uranium from Mekanism and Immersive Engineering, silver from Ice and -Fire and Immersive Engineering, titanium from both aerospace addons. Each one -picks a single provider rather than accepting either, so the crafting screen -shows one entry per metal instead of two identical-looking ones. Providers are -Mekanism for steel/lead/uranium, Ice and Fire for silver, Cosmonautics for -titanium; swapping one is a one-line change in `tools/materials.py`. +**Identical materials are one material.** Several metals and gems come from +more than one mod - silver from Ice and Fire, Immersive Engineering, Occultism +and Superb Warfare, steel from Mekanism, Immersive Engineering and Superb +Warfare, and so on. There is one entry per metal, and every provider's version +feeds it: alongside the primary provider's own items each material also accepts +the `c:` common tag that all of them register into. Any mod's silver ingot is +just silver. + +Nothing records where a stack came from, because there is nothing to record - +MIAPI stores only the material id on the item, so a tool built from Immersive +Engineering silver is indistinguishable from one built with Ice and Fire silver. +The primary provider's item is listed first, so anywhere a single representative +item is read back out - repair and deconstruct previews - it resolves to the +default rather than to whichever variant was used. Primaries are Mekanism for +steel/lead/uranium, Ice and Fire for silver, Cosmonautics for titanium; each is +a one-line change in `tools/materials.py`. + +The material still lives in its primary provider's pack, so its icon and its +first ingredient always point at an item that exists. Create: The Air War is the +one provider that ships no common tags, so `data/c/` adds its titanium to +`c:ingots/titanium` with optional entries. **Fire immunity.** Cinder essence grants immunity to fire, which is not an attribute the game has and not a property MIAPI offers. Instead of coupling to diff --git a/src/main/resources/data/c/tags/item/ingots/titanium.json b/src/main/resources/data/c/tags/item/ingots/titanium.json new file mode 100644 index 0000000..8ed2dba --- /dev/null +++ b/src/main/resources/data/c/tags/item/ingots/titanium.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + { + "id": "create_the_air_wars:titaniumingot", + "required": false + } + ] +} diff --git a/src/main/resources/data/c/tags/item/nuggets/titanium.json b/src/main/resources/data/c/tags/item/nuggets/titanium.json new file mode 100644 index 0000000..02cf2f7 --- /dev/null +++ b/src/main/resources/data/c/tags/item/nuggets/titanium.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + { + "id": "create_the_air_wars:titaniumnugget", + "required": false + } + ] +} diff --git a/src/main/resources/data/c/tags/item/plates/titanium.json b/src/main/resources/data/c/tags/item/plates/titanium.json new file mode 100644 index 0000000..0a9b381 --- /dev/null +++ b/src/main/resources/data/c/tags/item/plates/titanium.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + { + "id": "create_the_air_wars:titaniumsheet", + "required": false + } + ] +} diff --git a/src/main/resources/packs/ae2/data/cmmodular/miapi/materials/crystal/certus_quartz.json b/src/main/resources/packs/ae2/data/cmmodular/miapi/materials/crystal/certus_quartz.json index a2078a5..960bf94 100644 --- a/src/main/resources/packs/ae2/data/cmmodular/miapi/materials/crystal/certus_quartz.json +++ b/src/main/resources/packs/ae2/data/cmmodular/miapi/materials/crystal/certus_quartz.json @@ -42,6 +42,10 @@ { "item": "ae2:certus_quartz_crystal", "value": 1.0 + }, + { + "tag": "c:gems/certus_quartz", + "value": 1.0 } ] } diff --git a/src/main/resources/packs/ae2/data/cmmodular/miapi/materials/crystal/fluix.json b/src/main/resources/packs/ae2/data/cmmodular/miapi/materials/crystal/fluix.json index f5e70f2..2701b26 100644 --- a/src/main/resources/packs/ae2/data/cmmodular/miapi/materials/crystal/fluix.json +++ b/src/main/resources/packs/ae2/data/cmmodular/miapi/materials/crystal/fluix.json @@ -50,6 +50,10 @@ { "item": "ae2:fluix_crystal", "value": 1.0 + }, + { + "tag": "c:gems/fluix", + "value": 1.0 } ] } diff --git a/src/main/resources/packs/ars_nouveau/data/cmmodular/miapi/materials/crystal/source_gem.json b/src/main/resources/packs/ars_nouveau/data/cmmodular/miapi/materials/crystal/source_gem.json index d28656e..c4ee5df 100644 --- a/src/main/resources/packs/ars_nouveau/data/cmmodular/miapi/materials/crystal/source_gem.json +++ b/src/main/resources/packs/ars_nouveau/data/cmmodular/miapi/materials/crystal/source_gem.json @@ -51,6 +51,10 @@ { "item": "ars_nouveau:source_gem", "value": 1.0 + }, + { + "tag": "c:gems/source", + "value": 1.0 } ] } diff --git a/src/main/resources/packs/cosmonautics/data/cmmodular/miapi/materials/metal/titanium.json b/src/main/resources/packs/cosmonautics/data/cmmodular/miapi/materials/metal/titanium.json index 69c7211..35f909f 100644 --- a/src/main/resources/packs/cosmonautics/data/cmmodular/miapi/materials/metal/titanium.json +++ b/src/main/resources/packs/cosmonautics/data/cmmodular/miapi/materials/metal/titanium.json @@ -66,6 +66,18 @@ { "item": "rocketnautics:titanium_block", "value": 9.0 + }, + { + "tag": "c:ingots/titanium", + "value": 1.0 + }, + { + "tag": "c:nuggets/titanium", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/titanium", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/cosmonautics/data/cmmodular/miapi/materials/metal/titanium_alloy.json b/src/main/resources/packs/cosmonautics/data/cmmodular/miapi/materials/metal/titanium_alloy.json index 7f0a448..0131151 100644 --- a/src/main/resources/packs/cosmonautics/data/cmmodular/miapi/materials/metal/titanium_alloy.json +++ b/src/main/resources/packs/cosmonautics/data/cmmodular/miapi/materials/metal/titanium_alloy.json @@ -56,6 +56,18 @@ { "item": "rocketnautics:titanium_alloy_block", "value": 9.0 + }, + { + "tag": "c:ingots/titanium_alloy", + "value": 1.0 + }, + { + "tag": "c:nuggets/titanium_alloy", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/titanium_alloy", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/create/data/cmmodular/miapi/materials/metal/andesite_alloy.json b/src/main/resources/packs/create/data/cmmodular/miapi/materials/metal/andesite_alloy.json index 9286238..b700510 100644 --- a/src/main/resources/packs/create/data/cmmodular/miapi/materials/metal/andesite_alloy.json +++ b/src/main/resources/packs/create/data/cmmodular/miapi/materials/metal/andesite_alloy.json @@ -44,6 +44,18 @@ { "item": "create:andesite_alloy_block", "value": 9.0 + }, + { + "tag": "c:ingots/andesite_alloy", + "value": 1.0 + }, + { + "tag": "c:nuggets/andesite_alloy", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/andesite_alloy", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/create/data/cmmodular/miapi/materials/metal/brass.json b/src/main/resources/packs/create/data/cmmodular/miapi/materials/metal/brass.json index c9c1dd8..a685323 100644 --- a/src/main/resources/packs/create/data/cmmodular/miapi/materials/metal/brass.json +++ b/src/main/resources/packs/create/data/cmmodular/miapi/materials/metal/brass.json @@ -51,6 +51,18 @@ { "item": "create:brass_sheet", "value": 1.0 + }, + { + "tag": "c:ingots/brass", + "value": 1.0 + }, + { + "tag": "c:nuggets/brass", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/brass", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/create/data/cmmodular/miapi/materials/metal/zinc.json b/src/main/resources/packs/create/data/cmmodular/miapi/materials/metal/zinc.json index fc26568..3126c80 100644 --- a/src/main/resources/packs/create/data/cmmodular/miapi/materials/metal/zinc.json +++ b/src/main/resources/packs/create/data/cmmodular/miapi/materials/metal/zinc.json @@ -47,6 +47,18 @@ { "item": "create:zinc_block", "value": 9.0 + }, + { + "tag": "c:ingots/zinc", + "value": 1.0 + }, + { + "tag": "c:nuggets/zinc", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/zinc", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/createdeco/data/cmmodular/miapi/materials/metal/industrial_iron.json b/src/main/resources/packs/createdeco/data/cmmodular/miapi/materials/metal/industrial_iron.json index 514b7cd..a2c5589 100644 --- a/src/main/resources/packs/createdeco/data/cmmodular/miapi/materials/metal/industrial_iron.json +++ b/src/main/resources/packs/createdeco/data/cmmodular/miapi/materials/metal/industrial_iron.json @@ -42,6 +42,18 @@ { "item": "createdeco:industrial_iron_nugget", "value": 0.11112 + }, + { + "tag": "c:ingots/industrial_iron", + "value": 1.0 + }, + { + "tag": "c:nuggets/industrial_iron", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/industrial_iron", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/ender_crystal.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/ender_crystal.json index e8aa37e..25097ac 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/ender_crystal.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/ender_crystal.json @@ -50,6 +50,10 @@ { "item": "enderio:ender_crystal", "value": 1.0 + }, + { + "tag": "c:gems/ender_crystal", + "value": 1.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/enticing_crystal.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/enticing_crystal.json index 519f4b7..b297a92 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/enticing_crystal.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/enticing_crystal.json @@ -54,6 +54,10 @@ { "item": "enderio:enticing_crystal", "value": 1.0 + }, + { + "tag": "c:gems/enticing_crystal", + "value": 1.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/prescient_crystal.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/prescient_crystal.json index 20548f3..7daee65 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/prescient_crystal.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/prescient_crystal.json @@ -47,6 +47,10 @@ { "item": "enderio:prescient_crystal", "value": 1.0 + }, + { + "tag": "c:gems/prescient_crystal", + "value": 1.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/pulsating_crystal.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/pulsating_crystal.json index bfbf72f..01831e5 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/pulsating_crystal.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/pulsating_crystal.json @@ -50,6 +50,10 @@ { "item": "enderio:pulsating_crystal", "value": 1.0 + }, + { + "tag": "c:gems/pulsating_crystal", + "value": 1.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/vibrant_crystal.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/vibrant_crystal.json index 51e9a06..4d2a6d8 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/vibrant_crystal.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/vibrant_crystal.json @@ -50,6 +50,10 @@ { "item": "enderio:vibrant_crystal", "value": 1.0 + }, + { + "tag": "c:gems/vibrant_crystal", + "value": 1.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/weather_crystal.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/weather_crystal.json index 1e880c4..80dd169 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/weather_crystal.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/crystal/weather_crystal.json @@ -50,6 +50,10 @@ { "item": "enderio:weather_crystal", "value": 1.0 + }, + { + "tag": "c:gems/weather_crystal", + "value": 1.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/conductive_alloy.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/conductive_alloy.json index 89e3926..03c47cd 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/conductive_alloy.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/conductive_alloy.json @@ -42,6 +42,18 @@ { "item": "enderio:conductive_alloy_nugget", "value": 0.11112 + }, + { + "tag": "c:ingots/conductive_alloy", + "value": 1.0 + }, + { + "tag": "c:nuggets/conductive_alloy", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/conductive_alloy", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/dark_steel.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/dark_steel.json index 643b82d..08ded9b 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/dark_steel.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/dark_steel.json @@ -48,6 +48,18 @@ { "item": "enderio:dark_steel_nugget", "value": 0.11112 + }, + { + "tag": "c:ingots/dark_steel", + "value": 1.0 + }, + { + "tag": "c:nuggets/dark_steel", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/dark_steel", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/end_steel.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/end_steel.json index b322645..d62b391 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/end_steel.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/end_steel.json @@ -48,6 +48,18 @@ { "item": "enderio:end_steel_nugget", "value": 0.11112 + }, + { + "tag": "c:ingots/end_steel", + "value": 1.0 + }, + { + "tag": "c:nuggets/end_steel", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/end_steel", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/energetic_alloy.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/energetic_alloy.json index 2c13f2f..31b5d36 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/energetic_alloy.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/energetic_alloy.json @@ -52,6 +52,18 @@ { "item": "enderio:energetic_alloy_nugget", "value": 0.11112 + }, + { + "tag": "c:ingots/energetic_alloy", + "value": 1.0 + }, + { + "tag": "c:nuggets/energetic_alloy", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/energetic_alloy", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/pulsating_alloy.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/pulsating_alloy.json index 6dbfe7e..46d3acc 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/pulsating_alloy.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/pulsating_alloy.json @@ -50,6 +50,18 @@ { "item": "enderio:pulsating_alloy_nugget", "value": 0.11112 + }, + { + "tag": "c:ingots/pulsating_alloy", + "value": 1.0 + }, + { + "tag": "c:nuggets/pulsating_alloy", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/pulsating_alloy", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/redstone_alloy.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/redstone_alloy.json index 808d351..8dc42d1 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/redstone_alloy.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/redstone_alloy.json @@ -50,6 +50,18 @@ { "item": "enderio:redstone_alloy_nugget", "value": 0.11112 + }, + { + "tag": "c:ingots/redstone_alloy", + "value": 1.0 + }, + { + "tag": "c:nuggets/redstone_alloy", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/redstone_alloy", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/soularium.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/soularium.json index 155137a..4b8b6dc 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/soularium.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/soularium.json @@ -47,6 +47,18 @@ { "item": "enderio:soularium_nugget", "value": 0.11112 + }, + { + "tag": "c:ingots/soularium", + "value": 1.0 + }, + { + "tag": "c:nuggets/soularium", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/soularium", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/vibrant_alloy.json b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/vibrant_alloy.json index ef1811e..8791d14 100644 --- a/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/vibrant_alloy.json +++ b/src/main/resources/packs/enderio/data/cmmodular/miapi/materials/metal/vibrant_alloy.json @@ -52,6 +52,18 @@ { "item": "enderio:vibrant_alloy_nugget", "value": 0.11112 + }, + { + "tag": "c:ingots/vibrant_alloy", + "value": 1.0 + }, + { + "tag": "c:nuggets/vibrant_alloy", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/vibrant_alloy", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/iceandfire/data/cmmodular/miapi/materials/crystal/sapphire.json b/src/main/resources/packs/iceandfire/data/cmmodular/miapi/materials/crystal/sapphire.json index cb5fd56..6b3713f 100644 --- a/src/main/resources/packs/iceandfire/data/cmmodular/miapi/materials/crystal/sapphire.json +++ b/src/main/resources/packs/iceandfire/data/cmmodular/miapi/materials/crystal/sapphire.json @@ -46,6 +46,10 @@ { "item": "iceandfire:sapphire_block", "value": 9.0 + }, + { + "tag": "c:gems/sapphire", + "value": 1.0 } ] } diff --git a/src/main/resources/packs/iceandfire/data/cmmodular/miapi/materials/metal/silver.json b/src/main/resources/packs/iceandfire/data/cmmodular/miapi/materials/metal/silver.json index 9bd93ab..28fc425 100644 --- a/src/main/resources/packs/iceandfire/data/cmmodular/miapi/materials/metal/silver.json +++ b/src/main/resources/packs/iceandfire/data/cmmodular/miapi/materials/metal/silver.json @@ -54,6 +54,18 @@ { "item": "iceandfire:silver_block", "value": 9.0 + }, + { + "tag": "c:ingots/silver", + "value": 1.0 + }, + { + "tag": "c:nuggets/silver", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/silver", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/aluminum.json b/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/aluminum.json index 7494f48..2b4c626 100644 --- a/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/aluminum.json +++ b/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/aluminum.json @@ -59,6 +59,18 @@ { "item": "immersiveengineering:plate_aluminum", "value": 1.0 + }, + { + "tag": "c:ingots/aluminum", + "value": 1.0 + }, + { + "tag": "c:nuggets/aluminum", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/aluminum", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/constantan.json b/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/constantan.json index 9505657..2e14248 100644 --- a/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/constantan.json +++ b/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/constantan.json @@ -46,6 +46,18 @@ { "item": "immersiveengineering:plate_constantan", "value": 1.0 + }, + { + "tag": "c:ingots/constantan", + "value": 1.0 + }, + { + "tag": "c:nuggets/constantan", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/constantan", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/electrum.json b/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/electrum.json index ad58f88..30eed09 100644 --- a/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/electrum.json +++ b/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/electrum.json @@ -52,6 +52,18 @@ { "item": "immersiveengineering:plate_electrum", "value": 1.0 + }, + { + "tag": "c:ingots/electrum", + "value": 1.0 + }, + { + "tag": "c:nuggets/electrum", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/electrum", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/hop_graphite.json b/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/hop_graphite.json index bb944a6..75dd4ef 100644 --- a/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/hop_graphite.json +++ b/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/hop_graphite.json @@ -58,6 +58,18 @@ { "item": "immersiveengineering:plate_hop_graphite", "value": 1.0 + }, + { + "tag": "c:ingots/hop_graphite", + "value": 1.0 + }, + { + "tag": "c:nuggets/hop_graphite", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/hop_graphite", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/nickel.json b/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/nickel.json index 586d6d9..3d550e3 100644 --- a/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/nickel.json +++ b/src/main/resources/packs/immersiveengineering/data/cmmodular/miapi/materials/metal/nickel.json @@ -47,6 +47,18 @@ { "item": "immersiveengineering:plate_nickel", "value": 1.0 + }, + { + "tag": "c:ingots/nickel", + "value": 1.0 + }, + { + "tag": "c:nuggets/nickel", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/nickel", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/industrialforegoing/data/cmmodular/miapi/materials/metal/pink_slime.json b/src/main/resources/packs/industrialforegoing/data/cmmodular/miapi/materials/metal/pink_slime.json index 40ba997..3fa0a36 100644 --- a/src/main/resources/packs/industrialforegoing/data/cmmodular/miapi/materials/metal/pink_slime.json +++ b/src/main/resources/packs/industrialforegoing/data/cmmodular/miapi/materials/metal/pink_slime.json @@ -50,6 +50,18 @@ { "item": "industrialforegoing:pink_slime_ingot", "value": 1.0 + }, + { + "tag": "c:ingots/pink_slime", + "value": 1.0 + }, + { + "tag": "c:nuggets/pink_slime", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/pink_slime", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/irons_spellbooks/data/cmmodular/miapi/materials/metal/mithril.json b/src/main/resources/packs/irons_spellbooks/data/cmmodular/miapi/materials/metal/mithril.json index 95aad64..9fdfe07 100644 --- a/src/main/resources/packs/irons_spellbooks/data/cmmodular/miapi/materials/metal/mithril.json +++ b/src/main/resources/packs/irons_spellbooks/data/cmmodular/miapi/materials/metal/mithril.json @@ -52,6 +52,18 @@ { "item": "irons_spellbooks:mithril_ingot", "value": 1.0 + }, + { + "tag": "c:ingots/mithril", + "value": 1.0 + }, + { + "tag": "c:nuggets/mithril", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/mithril", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/crystal/fluorite.json b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/crystal/fluorite.json index b1e2c35..e121b3f 100644 --- a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/crystal/fluorite.json +++ b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/crystal/fluorite.json @@ -54,6 +54,10 @@ { "item": "mekanism:block_fluorite", "value": 4.0 + }, + { + "tag": "c:gems/fluorite", + "value": 1.0 } ] } diff --git a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/bronze.json b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/bronze.json index 9819bc9..372812d 100644 --- a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/bronze.json +++ b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/bronze.json @@ -46,6 +46,18 @@ { "item": "mekanism:block_bronze", "value": 9.0 + }, + { + "tag": "c:ingots/bronze", + "value": 1.0 + }, + { + "tag": "c:nuggets/bronze", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/bronze", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/lead.json b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/lead.json index b3cf111..09361c0 100644 --- a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/lead.json +++ b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/lead.json @@ -59,6 +59,18 @@ { "item": "mekanism:block_lead", "value": 9.0 + }, + { + "tag": "c:ingots/lead", + "value": 1.0 + }, + { + "tag": "c:nuggets/lead", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/lead", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/osmium.json b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/osmium.json index c4f6001..4e7f31c 100644 --- a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/osmium.json +++ b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/osmium.json @@ -59,6 +59,18 @@ { "item": "mekanism:block_osmium", "value": 9.0 + }, + { + "tag": "c:ingots/osmium", + "value": 1.0 + }, + { + "tag": "c:nuggets/osmium", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/osmium", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/refined_glowstone.json b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/refined_glowstone.json index b3c22c0..e44e073 100644 --- a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/refined_glowstone.json +++ b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/refined_glowstone.json @@ -58,6 +58,18 @@ { "item": "mekanism:block_refined_glowstone", "value": 9.0 + }, + { + "tag": "c:ingots/refined_glowstone", + "value": 1.0 + }, + { + "tag": "c:nuggets/refined_glowstone", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/refined_glowstone", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/refined_obsidian.json b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/refined_obsidian.json index eb0c0b9..75e6920 100644 --- a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/refined_obsidian.json +++ b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/refined_obsidian.json @@ -62,6 +62,18 @@ { "item": "mekanism:block_refined_obsidian", "value": 9.0 + }, + { + "tag": "c:ingots/refined_obsidian", + "value": 1.0 + }, + { + "tag": "c:nuggets/refined_obsidian", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/refined_obsidian", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/steel.json b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/steel.json index 9256e83..5670294 100644 --- a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/steel.json +++ b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/steel.json @@ -47,6 +47,18 @@ { "item": "mekanism:block_steel", "value": 9.0 + }, + { + "tag": "c:ingots/steel", + "value": 1.0 + }, + { + "tag": "c:nuggets/steel", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/steel", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/tin.json b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/tin.json index 7ce2f30..463f2f2 100644 --- a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/tin.json +++ b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/tin.json @@ -47,6 +47,18 @@ { "item": "mekanism:block_tin", "value": 9.0 + }, + { + "tag": "c:ingots/tin", + "value": 1.0 + }, + { + "tag": "c:nuggets/tin", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/tin", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/uranium.json b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/uranium.json index 8540814..b1e76bc 100644 --- a/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/uranium.json +++ b/src/main/resources/packs/mekanism/data/cmmodular/miapi/materials/metal/uranium.json @@ -65,6 +65,18 @@ { "item": "mekanism:block_uranium", "value": 9.0 + }, + { + "tag": "c:ingots/uranium", + "value": 1.0 + }, + { + "tag": "c:nuggets/uranium", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/uranium", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/occultism/data/cmmodular/miapi/materials/metal/iesnium.json b/src/main/resources/packs/occultism/data/cmmodular/miapi/materials/metal/iesnium.json index 92e511d..32e3074 100644 --- a/src/main/resources/packs/occultism/data/cmmodular/miapi/materials/metal/iesnium.json +++ b/src/main/resources/packs/occultism/data/cmmodular/miapi/materials/metal/iesnium.json @@ -48,6 +48,18 @@ { "item": "occultism:iesnium_nugget", "value": 0.11112 + }, + { + "tag": "c:ingots/iesnium", + "value": 1.0 + }, + { + "tag": "c:nuggets/iesnium", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/iesnium", + "value": 9.0 } ] } diff --git a/src/main/resources/packs/superbwarfare/data/cmmodular/miapi/materials/metal/tungsten.json b/src/main/resources/packs/superbwarfare/data/cmmodular/miapi/materials/metal/tungsten.json index ed24b71..9e3b194 100644 --- a/src/main/resources/packs/superbwarfare/data/cmmodular/miapi/materials/metal/tungsten.json +++ b/src/main/resources/packs/superbwarfare/data/cmmodular/miapi/materials/metal/tungsten.json @@ -54,6 +54,18 @@ { "item": "superbwarfare:tungsten_ingot", "value": 1.0 + }, + { + "tag": "c:ingots/tungsten", + "value": 1.0 + }, + { + "tag": "c:nuggets/tungsten", + "value": 0.11112 + }, + { + "tag": "c:storage_blocks/tungsten", + "value": 9.0 } ] } diff --git a/tools/materials.py b/tools/materials.py index 047d10c..6f0cc8e 100644 --- a/tools/materials.py +++ b/tools/materials.py @@ -1088,3 +1088,68 @@ EXTENSIONS = [ }, }, ] + + +# ------------------------------------------------- identical materials, one entry +# Several of these metals and gems are added by more than one mod. Every +# variant should behave as the same material rather than as a near-duplicate, +# so on top of the primary provider's own items each material also accepts the +# `c:` common tag, which every provider registers into. Any mod's silver ingot +# is therefore just silver. +# +# Nothing records where a stack came from - MIAPI stores only the material id on +# the item - so a tool built from Immersive Engineering silver is indistinguish- +# able from one built with Ice and Fire silver. The primary provider's item stays +# first in the list, so anything that reads a single representative item back out +# (repair and deconstruct previews) resolves to the default rather than to +# whichever variant happened to be used. +COMMON_TAGS = { + # metals + "tin": "tin", "lead": "lead", "osmium": "osmium", "bronze": "bronze", + "steel": "steel", "uranium": "uranium", "silver": "silver", + "refined_obsidian": "refined_obsidian", "refined_glowstone": "refined_glowstone", + "brass": "brass", "zinc": "zinc", "andesite_alloy": "andesite_alloy", + "aluminum": "aluminum", "nickel": "nickel", "constantan": "constantan", + "electrum": "electrum", "hop_graphite": "hop_graphite", + "titanium": "titanium", "titanium_alloy": "titanium_alloy", + "industrial_iron": "industrial_iron", "iesnium": "iesnium", + "pink_slime": "pink_slime", "tungsten": "tungsten", + "dark_steel": "dark_steel", "end_steel": "end_steel", + "energetic_alloy": "energetic_alloy", "vibrant_alloy": "vibrant_alloy", + "conductive_alloy": "conductive_alloy", "pulsating_alloy": "pulsating_alloy", + "redstone_alloy": "redstone_alloy", "soularium": "soularium", + "mithril": "mithril", +} + +COMMON_GEM_TAGS = { + "certus_quartz": "certus_quartz", "fluix": "fluix", "source_gem": "source", + "fluorite": "fluorite", "sapphire": "sapphire", + "ender_crystal": "ender_crystal", "vibrant_crystal": "vibrant_crystal", + "pulsating_crystal": "pulsating_crystal", "prescient_crystal": "prescient_crystal", + "enticing_crystal": "enticing_crystal", "weather_crystal": "weather_crystal", +} + + +def _accept_every_provider(): + """Append the common tag to each material that more than one mod can supply. + + Tags are safe where item ids are not: an unknown tag resolves to nothing + instead of failing the material, so a tag naming a mod that is not installed + costs only an ingredient that matches no item. + """ + for material in MATERIALS: + name = material["name"] + if name in COMMON_TAGS: + tag = COMMON_TAGS[name] + material["items"] = material["items"] + [ + {"tag": f"c:ingots/{tag}", "value": 1.0}, + {"tag": f"c:nuggets/{tag}", "value": NUGGET}, + {"tag": f"c:storage_blocks/{tag}", "value": BLOCK}, + ] + elif name in COMMON_GEM_TAGS: + material["items"] = material["items"] + [ + {"tag": f"c:gems/{COMMON_GEM_TAGS[name]}", "value": 1.0}, + ] + + +_accept_every_provider()