From 68b7bcc28e39bdf0926072b834eeeeec0ee6c721 Mon Sep 17 00:00:00 2001
From: Zefram <zefram@fysh.org>
Date: Thu, 22 May 2014 20:57:50 +0200
Subject: [PATCH] split default iron/steel into three metals

---
 technic_worldgen/locale/template.txt                      |    8 +
 technic/locale/it.txt                                     |    5 
 technic/textures/technicx32/technic_carbon_steel_dust.png |    0 
 technic_worldgen/textures/technic_wrought_iron_ingot.png  |    0 
 technic/machines/LV/cnc_nodes.lua                         |    9 
 technic_chests/copper_chest.lua                           |    2 
 technic_worldgen/textures/technic_cast_iron_block.png     |    0 
 technic_worldgen/crafts.lua                               |   75 +++++++++
 technic/textures/technicx32/technic_cast_iron_dust.png    |    0 
 technic/machines/HV/solar_array.lua                       |    6 
 notes_on_iron                                             |   68 ++++++++
 technic_worldgen/nodes.lua                                |   57 +++++++
 technic/machines/LV/solar_array.lua                       |    6 
 technic_worldgen/textures/technic_carbon_steel_ingot.png  |    0 
 technic/machines/LV/cnc.lua                               |    4 
 technic/machines/MV/wind_mill.lua                         |   16 +-
 technic/locale/de.txt                                     |    5 
 technic/machines/register/alloy_furnace.lua               |   38 ++++
 technic_worldgen/textures/technic_cast_iron_ingot.png     |    0 
 technic/legacy.lua                                        |    1 
 technic_worldgen/textures/technic_carbon_steel_block.png  |    0 
 technic/machines/switching_station.lua                    |    6 
 technic_chests/gold_chest.lua                             |    2 
 technic/tools/cans.lua                                    |    4 
 technic/machines/LV/electric_furnace.lua                  |    6 
 technic/machines/LV/solar_panel.lua                       |    2 
 technic/textures/technicx32/technic_wrought_iron_dust.png |    0 
 wrench/init.lua                                           |    6 
 technic/machines/MV/solar_array.lua                       |    6 
 technic_worldgen/locale/de.txt                            |    8 +
 wrench/depends.txt                                        |    1 
 technic_chests/depends.txt                                |    1 
 concrete/init.lua                                         |   13 +
 technic/machines/HV/quarry.lua                            |   12 
 technic/machines/register/grinder_recipes.lua             |   20 ++
 technic/textures/technic_wrought_iron_dust.png            |    0 
 technic/machines/LV/alloy_furnace.lua                     |    6 
 technic/crafts.lua                                        |   24 +-
 technic/locale/es.txt                                     |    5 
 technic_worldgen/textures/technic_wrought_iron_block.png  |    0 
 technic_chests/iron_chest.lua                             |   14 
 technic_chests/silver_chest.lua                           |    2 
 technic/tools/mining_lasers.lua                           |   18 +-
 /dev/null                                                 |    0 
 technic/machines/LV/battery_box.lua                       |    6 
 technic_chests/mithril_chest.lua                          |    2 
 technic/textures/technic_carbon_steel_dust.png            |    0 
 technic/textures/technic_cast_iron_dust.png               |    0 
 technic/locale/template.txt                               |    5 
 49 files changed, 374 insertions(+), 95 deletions(-)

diff --git a/concrete/init.lua b/concrete/init.lua
index 869dbbd..03a865a 100644
--- a/concrete/init.lua
+++ b/concrete/init.lua
@@ -18,12 +18,19 @@
 minetest.register_alias("technic:concrete_post34", "technic:concrete_post28")
 minetest.register_alias("technic:concrete_post35", "technic:concrete_post19")
 
+local steel_ingot
+if minetest.get_modpath("technic_worldgen") then
+	steel_ingot = "technic:carbon_steel_ingot"
+else
+	steel_ingot = "default:steel_ingot"
+end
+
 minetest.register_craft({
 	output = 'technic:rebar 6',
 	recipe = {
-		{'','', 'default:steel_ingot'},
-		{'','default:steel_ingot',''},
-		{'default:steel_ingot', '', ''},
+		{'','', steel_ingot},
+		{'',steel_ingot,''},
+		{steel_ingot, '', ''},
 	}
 })
 
diff --git a/notes_on_iron b/notes_on_iron
new file mode 100644
index 0000000..7facbcf
--- /dev/null
+++ b/notes_on_iron
@@ -0,0 +1,68 @@
+Notes on iron and steel
+=======================
+
+Alloying iron with carbon is of huge importance, but in some processes
+the alloying is an implicit side effect rather than the product of
+explicit mixing, so it is a complex area.  In the real world, there is
+a huge variety of kinds of iron and steel, differing in the proportion
+of carbon included and in other elements added to the mix.
+
+The Minetest default mod doesn't distinguish between types of iron and
+steel at all.  This mod introduces multiple types in order to get a bit
+of complexity and flavour.
+
+Leaving aside explicit addition of other elements, the iron/carbon
+spectrum is here represented by three substances: wrought iron,
+carbon steel, and cast iron.  Wrought iron has low carbon content
+(less than 0.25%), resists shattering, and is easily welded, but is
+relatively soft and susceptible to rusting.  It was used for rails,
+gates, chains, wire, pipes, fasteners, and other purposes.  Cast iron
+has high carbon content (2.1% to 4%), is especially hard, and resists
+corrosion, but is relatively brittle, and difficult to work.  It was used
+to build large structures such as bridges, and for cannons, cookware,
+and engine cylinders.  Carbon steel has medium carbon content (0.25%
+to 2.1%), and intermediate properties: moderately hard and also tough,
+somewhat resistant to corrosion.  It is now used for most of the purposes
+previously satisfied by wrought iron and many of those of cast iron,
+but has historically been especially important for its use in swords,
+armour, skyscrapers, large bridges, and machines.
+
+Historically, the first form of iron to be refined was wrought iron,
+produced from ore by a low-temperature furnace process in which the
+ore/iron remains solid and impurities (slag) are progressively removed.
+Cast iron, by contrast, was produced somewhat later by a high-temperature
+process in a blast furnace, in which the metal is melted, and carbon is
+unavoidably incorporated from the furnace's fuel.  (In fact, it's done
+in two stages, first producing pig iron from ore, and then remelting the
+pig iron to cast as cast iron.)  Carbon steel requires a more advanced
+process, in which molten pig iron is processed to remove the carbon,
+and then a controlled amount of carbon is explicitly mixed back in.
+Other processes are possible to refine iron ore and to adjust its
+carbon content.
+
+Unfortunately, Minetest doesn't let us readily distinguish between
+low-temperature and high-temperature processes: in the default game, the
+same furnace is used both to cook food (low temperature) and to cast metal
+ingots (varying high temperatures).  So we can't sensibly have wrought
+iron and cast iron produced by different types of furnace.  Nor can
+furnace recipes discriminate by which kind of fuel is used (and thus
+by the availability of carbon).  The alloy furnace allows for explicit
+alloying, which appropriately represents how carbon steel is made, but
+is not sensible for the other two, and is a relatively advanced process.
+About the only option to make a second iron-processing furnace process
+readily available is to cook multiple times; happily, this bears a slight
+resemblance to the real process with pig iron as an intermediate product.
+
+The default mod's refined iron, which it calls "steel", is identified
+with this mod's wrought iron.  Cooking an iron lump (representing ore)
+initially produces wrought iron; the cooking process here represents a
+low-temperature bloomery process.  Cooking wrought iron then produces
+cast iron; this time the cooking process represents a blast furnace.
+Alloy cooking wrought iron with coal dust (carbon) produces carbon steel;
+this represents the explicit mixing stage of carbon steel production.
+Additionally, alloy cooking carbon steel with coal dust produces cast
+iron, which is logical but not very useful.  Furthermore, to make it
+possible to turn any of the forms of iron into any other, cooking carbon
+steel or cast iron produces wrought iron, in an abbreviated form of the
+bloomery process.  As usual for metals, the same cooking and alloying
+processes can be performed in parallel forms on ingots or dust.
diff --git a/technic/crafts.lua b/technic/crafts.lua
index 0beea30..29199b3 100644
--- a/technic/crafts.lua
+++ b/technic/crafts.lua
@@ -100,36 +100,36 @@
 minetest.register_craft({
 	output = 'technic:copper_coil 1',
 	recipe = {
-		{'technic:fine_copper_wire', 'default:steel_ingot', 'technic:fine_copper_wire'},
-		{'default:steel_ingot', '', 'default:steel_ingot'},
-		{'technic:fine_copper_wire', 'default:steel_ingot', 'technic:fine_copper_wire'},
+		{'technic:fine_copper_wire', 'technic:wrought_iron_ingot', 'technic:fine_copper_wire'},
+		{'technic:wrought_iron_ingot', '', 'technic:wrought_iron_ingot'},
+		{'technic:fine_copper_wire', 'technic:wrought_iron_ingot', 'technic:fine_copper_wire'},
 	}
 })
 
 minetest.register_craft({
 	output = 'technic:motor',
 	recipe = {
-		{'default:steel_ingot', 'technic:copper_coil', 'default:steel_ingot'},
-		{'default:steel_ingot', 'technic:copper_coil', 'default:steel_ingot'},
-		{'default:steel_ingot', 'default:copper_ingot', 'default:steel_ingot'},
+		{'technic:carbon_steel_ingot', 'technic:copper_coil', 'technic:carbon_steel_ingot'},
+		{'technic:carbon_steel_ingot', 'technic:copper_coil', 'technic:carbon_steel_ingot'},
+		{'technic:carbon_steel_ingot', 'default:copper_ingot', 'technic:carbon_steel_ingot'},
 	}
 })
 
 minetest.register_craft({
 	output = 'technic:lv_transformer',
 	recipe = {
-		{'default:iron_lump',   'default:iron_lump', 'default:iron_lump'},
-		{'technic:copper_coil', 'default:iron_lump', 'technic:copper_coil'},
-		{'default:iron_lump',   'default:iron_lump', 'default:iron_lump'},
+		{'technic:wrought_iron_ingot', 'technic:wrought_iron_ingot', 'technic:wrought_iron_ingot'},
+		{'technic:copper_coil',        'technic:wrought_iron_ingot', 'technic:copper_coil'},
+		{'technic:wrought_iron_ingot', 'technic:wrought_iron_ingot', 'technic:wrought_iron_ingot'},
 	}
 })
 
 minetest.register_craft({
 	output = 'technic:mv_transformer',
 	recipe = {
-		{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
-		{'technic:copper_coil', 'default:steel_ingot', 'technic:copper_coil'},
-		{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
+		{'technic:carbon_steel_ingot', 'technic:carbon_steel_ingot', 'technic:carbon_steel_ingot'},
+		{'technic:copper_coil',        'technic:carbon_steel_ingot', 'technic:copper_coil'},
+		{'technic:carbon_steel_ingot', 'technic:carbon_steel_ingot', 'technic:carbon_steel_ingot'},
 	}
 })
 
diff --git a/technic/legacy.lua b/technic/legacy.lua
index 37fb1d5..bc6fd9c 100644
--- a/technic/legacy.lua
+++ b/technic/legacy.lua
@@ -24,6 +24,7 @@
 	["technic:mv_battery_box"] = "technic:mv_battery_box0",
 	["technic:generator"]        = "technic:lv_generator",
 	["technic:generator_active"] = "technic:lv_generator_active",
+	["technic:iron_dust"] = "technic:wrought_iron_dust",
 }
 
 for old, new in pairs(technic.legacy_nodenames) do
diff --git a/technic/locale/de.txt b/technic/locale/de.txt
index acf6dfb..4844a83 100644
--- a/technic/locale/de.txt
+++ b/technic/locale/de.txt
@@ -135,7 +135,6 @@
 Dirt = Erde:
 Leaves = Laub:
 Sandstone = Sandstein:
-Steel = Stahl:
 Stone = Stein:
 Tree = Baumstamm:
 Wooden = Holz:
@@ -148,16 +147,18 @@
 Arol = Arol
 Brass = Messing
 Bronze = Bronze
+Carbon Steel = Kohlenstoffstahl
+Cast Iron = Gusseisen
 Chromium = Chrom
 Coal = Kohle
 Copper = Kupfer
 Gold = Gold
-Iron = Eisen
 Mithril = Mithril
 Silver = Silber
 Stainless Steel = Edelstahl
 Talinite = Talinite
 Tin = Zinn
+Wrought Iron = Schmiedeeisen
 Zinc = Zink
 
 ## Tools
diff --git a/technic/locale/es.txt b/technic/locale/es.txt
index 4ac9693..a0200bd 100644
--- a/technic/locale/es.txt
+++ b/technic/locale/es.txt
@@ -121,7 +121,6 @@
 Slope = Rampa
 Element T = Elemento T
 Cylinder = Cilindro
-Steel = Acero
 Cobble = Adoquines
 Stone = Piedra
 Brick = Ladrillo
@@ -138,16 +137,18 @@
 Arol = Arol
 Brass = Laton
 Bronze = Bronce
+Carbon Steel = Acero al Carbono
+Cast Iron = Hierro Fundido
 Chromium = Cromo
 Coal = Carbon
 Copper = Cobre
 Gold = Oro
-Iron = Hierro
 Mithril = Mitrilo
 Silver = Plata
 Stainless Steel = Acero Inoxidable
 Talinite = Talinita
 Tin = Estanio
+Wrought Iron = Hierro Forjado
 Zinc = Zinc
 
 ## Tools
diff --git a/technic/locale/it.txt b/technic/locale/it.txt
index 03d1c5f..4b4fbe0 100644
--- a/technic/locale/it.txt
+++ b/technic/locale/it.txt
@@ -132,7 +132,6 @@
 Dirt = Terra
 Leaves = Foglie
 Sandstone = Arenaria
-Steel = Acciaio
 Stone = Pietra
 Tree = Albero
 Wooden = Legno
@@ -145,16 +144,18 @@
 Arol = Arol
 Brass = Ottone
 Bronze = Bronzo
+Carbon Steel = Acciaio al Carbonio
+Cast Iron = Ghisa
 Chromium = Cromo
 Coal = Carbone
 Copper = Rame
 Gold = Oro
-Iron = Ferro
 Mithril = Mithril
 Silver = Argento
 Stainless Steel = Acciaio Inossidabile
 Talinite = Talinite
 Tin = Stagno
+Wrought Iron = Ferro Battuto
 Zinc = Zinco
 
 ## Tools
diff --git a/technic/locale/template.txt b/technic/locale/template.txt
index 5bda22f..17860ee 100644
--- a/technic/locale/template.txt
+++ b/technic/locale/template.txt
@@ -135,7 +135,6 @@
 Dirt =
 Leaves =
 Sandstone =
-Steel =
 Stone =
 Tree =
 Wooden =
@@ -148,16 +147,18 @@
 Arol =
 Brass =
 Bronze =
+Carbon Steel =
+Cast Iron =
 Chromium =
 Coal =
 Copper =
 Gold =
-Iron =
 Mithril =
 Silver =
 Stainless Steel =
 Talinite =
 Tin =
+Wrought Iron =
 Zinc =
 
 ## Tools
diff --git a/technic/machines/HV/quarry.lua b/technic/machines/HV/quarry.lua
index 4d6d932..fcf0fec 100644
--- a/technic/machines/HV/quarry.lua
+++ b/technic/machines/HV/quarry.lua
@@ -3,9 +3,9 @@
 
 minetest.register_craft({
 	recipe = {
-		{"default:steelblock", "pipeworks:filter",           "default:steelblock"},
-		{"default:steelblock", "technic:motor",              "default:steelblock"},
-		{"default:steelblock", "technic:diamond_drill_head", "default:steelblock"}},
+		{"technic:carbon_steel_block", "pipeworks:filter",           "technic:carbon_steel_block"},
+		{"technic:carbon_steel_block", "technic:motor",              "technic:carbon_steel_block"},
+		{"technic:carbon_steel_block", "technic:diamond_drill_head", "technic:carbon_steel_block"}},
 	output = "technic:quarry",
 })
 
@@ -136,9 +136,9 @@
 
 minetest.register_node("technic:quarry", {
 	description = S("Quarry"),
-	tiles = {"default_steel_block.png", "default_steel_block.png",
-	         "default_steel_block.png", "default_steel_block.png",
-	         "default_steel_block.png^default_tool_mesepick.png", "default_steel_block.png"},
+	tiles = {"technic_carbon_steel_block.png", "technic_carbon_steel_block.png",
+	         "technic_carbon_steel_block.png", "technic_carbon_steel_block.png",
+	         "technic_carbon_steel_block.png^default_tool_mesepick.png", "technic_carbon_steel_block.png"},
 	paramtype2 = "facedir",
 	groups = {cracky=2, tubedevice=1},
 	tube = {
diff --git a/technic/machines/HV/solar_array.lua b/technic/machines/HV/solar_array.lua
index cb4874a..ceea77a 100644
--- a/technic/machines/HV/solar_array.lua
+++ b/technic/machines/HV/solar_array.lua
@@ -4,9 +4,9 @@
 minetest.register_craft({
 	output = 'technic:solar_array_hv 1',
 	recipe = {
-		{'technic:solar_array_mv', 'technic:solar_array_mv',  'technic:solar_array_mv'},
-		{'default:steel_ingot',    'technic:hv_transformer',  'default:steel_ingot'},
-		{'',                       'technic:hv_cable0',       ''},
+		{'technic:solar_array_mv',     'technic:solar_array_mv', 'technic:solar_array_mv'},
+		{'technic:carbon_steel_ingot', 'technic:hv_transformer', 'technic:carbon_steel_ingot'},
+		{'',                           'technic:hv_cable0',      ''},
 	}
 })
 
diff --git a/technic/machines/LV/alloy_furnace.lua b/technic/machines/LV/alloy_furnace.lua
index 0637f48..b24e192 100644
--- a/technic/machines/LV/alloy_furnace.lua
+++ b/technic/machines/LV/alloy_furnace.lua
@@ -4,9 +4,9 @@
 minetest.register_craft({
 	output = 'technic:lv_alloy_furnace',
 	recipe = {
-		{'default:brick',       'default:brick',        'default:brick'},
-		{'default:brick',       '',                     'default:brick'},
-		{'default:steel_ingot', 'default:copper_ingot', 'default:steel_ingot'},
+		{'default:brick',           'default:brick',        'default:brick'},
+		{'default:brick',           '',                     'default:brick'},
+		{'technic:cast_iron_ingot', 'default:copper_ingot', 'technic:cast_iron_ingot'},
 	}
 })
 
diff --git a/technic/machines/LV/battery_box.lua b/technic/machines/LV/battery_box.lua
index cba2ef6..e21a66a 100644
--- a/technic/machines/LV/battery_box.lua
+++ b/technic/machines/LV/battery_box.lua
@@ -2,9 +2,9 @@
 minetest.register_craft({
 	output = 'technic:lv_battery_box0',
 	recipe = {
-		{'technic:battery',     'group:wood',           'technic:battery'},
-		{'technic:battery',     'default:copper_ingot', 'technic:battery'},
-		{'default:steel_ingot', 'default:steel_ingot',  'default:steel_ingot'},
+		{'technic:battery',         'group:wood',              'technic:battery'},
+		{'technic:battery',         'default:copper_ingot',    'technic:battery'},
+		{'technic:cast_iron_ingot', 'technic:cast_iron_ingot', 'technic:cast_iron_ingot'},
 	}
 })
 
diff --git a/technic/machines/LV/cnc.lua b/technic/machines/LV/cnc.lua
index e466dad..baee2c9 100644
--- a/technic/machines/LV/cnc.lua
+++ b/technic/machines/LV/cnc.lua
@@ -229,8 +229,8 @@
 	output = 'technic:cnc',
 	recipe = {
 		{'default:glass',              'technic:diamond_drill_head', 'default:glass'},
-		{'technic:control_logic_unit', 'technic:motor',              'default:steel_ingot'},
-		{'default:steel_ingot',        'default:copper_ingot',       'default:steel_ingot'},         
+		{'technic:control_logic_unit', 'technic:motor',              'technic:carbon_steel_ingot'},
+		{'technic:carbon_steel_ingot', 'default:copper_ingot',       'technic:carbon_steel_ingot'},         
 	},
 })
 
diff --git a/technic/machines/LV/cnc_nodes.lua b/technic/machines/LV/cnc_nodes.lua
index a12307f..4835e49 100644
--- a/technic/machines/LV/cnc_nodes.lua
+++ b/technic/machines/LV/cnc_nodes.lua
@@ -58,12 +58,13 @@
                 {snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, wood=1, not_in_creative_inventory=1},
                 {"default_tree.png"},
                 S("Tree"))
--- STEEL
---------
+
+-- WROUGHT IRON
+---------------
 technic.cnc.register_all("default:steelblock",
                 {cracky=1, level=2, not_in_creative_inventory=1},
-                {"default_steel_block.png"},
-                S("Steel"))
+                {"technic_wrought_iron_block.png"},
+                S("Wrought Iron"))
 
 -- Bronze
 --------
diff --git a/technic/machines/LV/electric_furnace.lua b/technic/machines/LV/electric_furnace.lua
index a67fca1..8bb1562 100644
--- a/technic/machines/LV/electric_furnace.lua
+++ b/technic/machines/LV/electric_furnace.lua
@@ -5,9 +5,9 @@
 minetest.register_craft({
 	output = 'technic:electric_furnace',
 	recipe = {
-		{'default:cobble',      'default:cobble',        'default:cobble'},
-		{'default:cobble',      '',                      'default:cobble'},
-		{'default:steel_ingot', 'moreores:copper_ingot', 'default:steel_ingot'},
+		{'default:cobble',          'default:cobble',        'default:cobble'},
+		{'default:cobble',          '',                      'default:cobble'},
+		{'technic:cast_iron_ingot', 'moreores:copper_ingot', 'technic:cast_iron_ingot'},
 	}
 })
 
diff --git a/technic/machines/LV/solar_array.lua b/technic/machines/LV/solar_array.lua
index 63f64f1..4d2c3b3 100644
--- a/technic/machines/LV/solar_array.lua
+++ b/technic/machines/LV/solar_array.lua
@@ -8,9 +8,9 @@
 minetest.register_craft({
 	output = 'technic:solar_array_lv 1',
 	recipe = {
-		{'technic:solar_panel', 'technic:solar_panel',    'technic:solar_panel'},
-		{'default:steel_ingot', 'technic:lv_transformer', 'default:steel_ingot'},
-		{'',                    'technic:lv_cable0',      ''},
+		{'technic:solar_panel',        'technic:solar_panel',    'technic:solar_panel'},
+		{'technic:carbon_steel_ingot', 'technic:lv_transformer', 'technic:carbon_steel_ingot'},
+		{'',                           'technic:lv_cable0',      ''},
 	}
 })
 
diff --git a/technic/machines/LV/solar_panel.lua b/technic/machines/LV/solar_panel.lua
index d49f609..95b359d 100644
--- a/technic/machines/LV/solar_panel.lua
+++ b/technic/machines/LV/solar_panel.lua
@@ -29,7 +29,7 @@
 	output = 'technic:solar_panel',
 	recipe = {
 		{'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer'},
-		{'default:steel_ingot',         'technic:lv_cable0',           'default:steel_ingot'},
+		{'technic:wrought_iron_ingot',  'technic:lv_cable0',           'technic:wrought_iron_ingot'},
 
 	}
 })
diff --git a/technic/machines/MV/solar_array.lua b/technic/machines/MV/solar_array.lua
index d939fb9..227d8ee 100644
--- a/technic/machines/MV/solar_array.lua
+++ b/technic/machines/MV/solar_array.lua
@@ -2,9 +2,9 @@
 minetest.register_craft({
 	output = 'technic:solar_array_mv 1',
 	recipe = {
-		{'technic:solar_array_lv', 'technic:solar_array_lv', 'technic:solar_array_lv'},
-		{'default:steel_ingot',    'technic:mv_transformer', 'default:steel_ingot'},
-		{'',                       'technic:mv_cable0',      ''},
+		{'technic:solar_array_lv',     'technic:solar_array_lv', 'technic:solar_array_lv'},
+		{'technic:carbon_steel_ingot', 'technic:mv_transformer', 'technic:carbon_steel_ingot'},
+		{'',                           'technic:mv_cable0',      ''},
 	}
 })
 
diff --git a/technic/machines/MV/wind_mill.lua b/technic/machines/MV/wind_mill.lua
index 32fa5c3..6930228 100644
--- a/technic/machines/MV/wind_mill.lua
+++ b/technic/machines/MV/wind_mill.lua
@@ -4,25 +4,25 @@
 minetest.register_craft({
 	output = 'technic:wind_mill_frame 5',
 	recipe = {
-		{'default:steel_ingot', '',                    'default:steel_ingot'},
-		{'',                    'default:steel_ingot', ''},
-		{'default:steel_ingot', '',                    'default:steel_ingot'},
+		{'technic:carbon_steel_ingot', '',                           'technic:carbon_steel_ingot'},
+		{'',                           'technic:carbon_steel_ingot', ''},
+		{'technic:carbon_steel_ingot', '',                           'technic:carbon_steel_ingot'},
 	}
 })
 
 minetest.register_craft({
 	output = 'technic:wind_mill',
 	recipe = {
-		{'',                    'default:steel_ingot', ''},
-		{'default:steel_ingot', 'technic:motor',       'default:steel_ingot'},
-		{'',                    'default:steelblock',  ''},
+		{'',                           'technic:carbon_steel_ingot', ''},
+		{'technic:carbon_steel_ingot', 'technic:motor',              'technic:carbon_steel_ingot'},
+		{'',                           'technic:carbon_steel_block', ''},
 	}
 })
 
 minetest.register_node("technic:wind_mill_frame", {
 	description = S("Wind Mill Frame"),
 	drawtype = "glasslike_framed",
-	tiles = {"default_steel_block.png", "default_glass.png"},
+	tiles = {"technic_carbon_steel_block.png", "default_glass.png"},
 	sunlight_propagates = true,
 	groups = {cracky=3},
 	sounds = default.node_sound_stone_defaults(),
@@ -31,7 +31,7 @@
 
 minetest.register_node("technic:wind_mill", {
 	description = S("Wind Mill"),
-	tiles = {"default_steel_block.png"},
+	tiles = {"technic_carbon_steel_block.png"},
 	paramtype2 = "facedir",
 	groups = {cracky=1},
 	sounds = default.node_sound_stone_defaults(),
diff --git a/technic/machines/register/alloy_furnace.lua b/technic/machines/register/alloy_furnace.lua
index ebf5eab..ac1cd05 100644
--- a/technic/machines/register/alloy_furnace.lua
+++ b/technic/machines/register/alloy_furnace.lua
@@ -45,6 +45,36 @@
 	end
 end
 
+minetest.after(0.01, function ()
+	for _, recipe in pairs(technic.alloy_recipes) do
+		local in1 = recipe.input[1]
+		local in2 = recipe.input[2]
+		local in1n = in1.name
+		local in2n = in2.name
+		while minetest.registered_aliases[in1n] do
+			in1n = minetest.registered_aliases[in1n]
+		end
+		while minetest.registered_aliases[in2n] do
+			in2n = minetest.registered_aliases[in2n]
+		end
+		if in1n > in2n then
+			local temp = in1
+			in1 = in2
+			in2 = temp
+			temp = in1n
+			in1n = in2n
+			in2n = temp
+		end
+		technic.alloy_recipes[in1n.." "..in2n] = {
+			input = {
+				{ name = in1n, count = in1.count },
+				{ name = in2n, count = in2.count },
+			},
+			output = recipe.output,
+		}
+	end
+end)
+
 -- Retrieve a recipe given the input metals.
 function technic.get_alloy_recipe(stack1, stack2)
 	-- Sort the stacks alphebetically
@@ -65,8 +95,12 @@
 
 technic.register_alloy_recipe("technic:copper_dust",   3, "technic:tin_dust",       1, "technic:bronze_dust",           4)
 technic.register_alloy_recipe("default:copper_ingot",  3, "moreores:tin_ingot",     1, "moreores:bronze_ingot",         4)
-technic.register_alloy_recipe("technic:iron_dust",     3, "technic:chromium_dust",  1, "technic:stainless_steel_dust",  4)
-technic.register_alloy_recipe("default:steel_ingot",   3, "technic:chromium_ingot", 1, "technic:stainless_steel_ingot", 4)
+technic.register_alloy_recipe("technic:wrought_iron_dust", 1, "technic:coal_dust",  1, "technic:carbon_steel_dust",     1)
+technic.register_alloy_recipe("technic:wrought_iron_ingot", 1, "technic:coal_dust", 1, "technic:carbon_steel_ingot",    1)
+technic.register_alloy_recipe("technic:carbon_steel_dust", 1, "technic:coal_dust",  1, "technic:cast_iron_dust",        1)
+technic.register_alloy_recipe("technic:carbon_steel_ingot", 1, "technic:coal_dust", 1, "technic:cast_iron_ingot",       1)
+technic.register_alloy_recipe("technic:carbon_steel_dust", 3, "technic:chromium_dust", 1, "technic:stainless_steel_dust", 4)
+technic.register_alloy_recipe("technic:carbon_steel_ingot", 3, "technic:chromium_ingot", 1, "technic:stainless_steel_ingot", 4)
 technic.register_alloy_recipe("technic:copper_dust",   2, "technic:zinc_dust",      1, "technic:brass_dust",            3)
 technic.register_alloy_recipe("default:copper_ingot",  2, "technic:zinc_ingot",     1, "technic:brass_ingot",           3)
 technic.register_alloy_recipe("default:sand",          2, "technic:coal_dust",      2, "technic:silicon_wafer",         1)
diff --git a/technic/machines/register/grinder_recipes.lua b/technic/machines/register/grinder_recipes.lua
index d81d421..d0352d7 100644
--- a/technic/machines/register/grinder_recipes.lua
+++ b/technic/machines/register/grinder_recipes.lua
@@ -24,6 +24,16 @@
 	end
 end
 
+minetest.after(0.01, function ()
+	for ingredient, recipe in pairs(technic.grinder_recipes) do
+		ingredient = minetest.registered_aliases[ingredient]
+		while ingredient do
+			technic.grinder_recipes[ingredient] = recipe
+			ingredient = minetest.registered_aliases[ingredient]
+		end
+	end
+end)
+
 -- Receive an ItemStack of result by an ItemStack input
 function technic.get_grinder_recipe(itemstack)
 	return technic.grinder_recipes[itemstack:get_name()]
@@ -40,8 +50,7 @@
 	{"default:gold_ingot",      "technic:gold_dust 1"},
 	{"default:gold_lump",       "technic:gold_dust 2"},
 	{"default:gravel",          "default:dirt"},
-	{"default:iron_lump",       "technic:iron_dust 2"},
-	{"default:steel_ingot",     "technic:iron_dust 1"},
+	{"default:iron_lump",       "technic:wrought_iron_dust 2"},
 	{"default:stone",           "default:sand"},
 	{"gloopores:alatro_lump",   "technic:alatro_dust 2"},
 	{"gloopores:kalite_lump",   "technic:kalite_dust 2"},
@@ -54,8 +63,11 @@
 	{"moreores:silver_lump",    "technic:silver_dust 2"},
 	{"moreores:tin_ingot",      "technic:tin_dust 1"},
 	{"moreores:tin_lump",       "technic:tin_dust 2"},
+	{"technic:cast_iron_ingot", "technic:cast_iron_dust 1"},
 	{"technic:chromium_ingot",  "technic:chromium_dust 1"},
 	{"technic:chromium_lump",   "technic:chromium_dust 2"},
+	{"technic:wrought_iron_ingot", "technic:wrought_iron_dust 1"},
+	{"technic:carbon_steel_ingot", "technic:carbon_steel_dust 1"},
 	{"technic:zinc_ingot",      "technic:zinc_dust 1"},
 	{"technic:zinc_lump",       "technic:zinc_dust 2"},
 	{"technic:brass_ingot",     "technic:brass_dust 1"},
@@ -92,16 +104,18 @@
 register_dust("Arol",            "glooptest:arol_ingot")
 register_dust("Brass",           "technic:brass_ingot")
 register_dust("Bronze",          "default:bronze_ingot")
+register_dust("Carbon Steel",    "technic:carbon_steel_ingot")
+register_dust("Cast Iron",       "technic:cast_iron_ingot")
 register_dust("Chromium",        "technic:chromium_ingot")
 register_dust("Coal",            nil)
 register_dust("Copper",          "default:copper_ingot")
 register_dust("Gold",            "default:gold_ingot")
-register_dust("Iron",            "default:steel_ingot")
 register_dust("Mithril",         "moreores:mithril_ingot")
 register_dust("Silver",          "moreores:silver_ingot")
 register_dust("Stainless Steel", "technic:stainless_steel_ingot")
 register_dust("Talinite",        "glooptest:talinite_ingot")
 register_dust("Tin",             "moreores:tin_ingot")
+register_dust("Wrought Iron",    "technic:wrought_iron_ingot")
 register_dust("Zinc",            "technic:zinc_ingot")
 
 minetest.register_craft({
diff --git a/technic/machines/switching_station.lua b/technic/machines/switching_station.lua
index f7a0f44..a6c0c99 100644
--- a/technic/machines/switching_station.lua
+++ b/technic/machines/switching_station.lua
@@ -35,9 +35,9 @@
 minetest.register_craft({
 	output = "technic:switching_station",
 	recipe = {
-		{"default:steel_ingot",  "technic:lv_transformer", "default:steel_ingot"},
-		{"default:copper_ingot", "technic:lv_cable0",      "default:copper_ingot"},
-		{"default:steel_ingot",  "technic:lv_cable0",      "default:steel_ingot"}
+		{"technic:cast_iron_ingot", "technic:lv_transformer", "technic:cast_iron_ingot"},
+		{"default:copper_ingot",    "technic:lv_cable0",      "default:copper_ingot"},
+		{"technic:cast_iron_ingot", "technic:lv_cable0",      "technic:cast_iron_ingot"}
 	}
 })
 
diff --git a/technic/textures/technic_carbon_steel_dust.png b/technic/textures/technic_carbon_steel_dust.png
new file mode 100644
index 0000000..0fa8a17
--- /dev/null
+++ b/technic/textures/technic_carbon_steel_dust.png
Binary files differ
diff --git a/technic/textures/technic_cast_iron_dust.png b/technic/textures/technic_cast_iron_dust.png
new file mode 100644
index 0000000..b5690ac
--- /dev/null
+++ b/technic/textures/technic_cast_iron_dust.png
Binary files differ
diff --git a/technic/textures/technic_iron_dust.png b/technic/textures/technic_wrought_iron_dust.png
similarity index 100%
rename from technic/textures/technic_iron_dust.png
rename to technic/textures/technic_wrought_iron_dust.png
Binary files differ
diff --git a/technic/textures/technicx32/technic_carbon_steel_dust.png b/technic/textures/technicx32/technic_carbon_steel_dust.png
new file mode 100644
index 0000000..0bf350f
--- /dev/null
+++ b/technic/textures/technicx32/technic_carbon_steel_dust.png
Binary files differ
diff --git a/technic/textures/technicx32/technic_cast_iron_dust.png b/technic/textures/technicx32/technic_cast_iron_dust.png
new file mode 100644
index 0000000..f355094
--- /dev/null
+++ b/technic/textures/technicx32/technic_cast_iron_dust.png
Binary files differ
diff --git a/technic/textures/technicx32/technic_iron_dust.png b/technic/textures/technicx32/technic_iron_dust.png
deleted file mode 100644
index aaecd2b..0000000
--- a/technic/textures/technicx32/technic_iron_dust.png
+++ /dev/null
Binary files differ
diff --git a/technic/textures/technicx32/technic_wrought_iron_dust.png b/technic/textures/technicx32/technic_wrought_iron_dust.png
new file mode 100644
index 0000000..d890e73
--- /dev/null
+++ b/technic/textures/technicx32/technic_wrought_iron_dust.png
Binary files differ
diff --git a/technic/tools/cans.lua b/technic/tools/cans.lua
index 737443e..f1a821b 100644
--- a/technic/tools/cans.lua
+++ b/technic/tools/cans.lua
@@ -7,8 +7,8 @@
 	output = 'technic:water_can 1',
 	recipe = {
 		{'technic:zinc_ingot', 'technic:rubber','technic:zinc_ingot'},
-		{'default:steel_ingot', '', 'default:steel_ingot'},
-		{'technic:zinc_ingot', 'default:steel_ingot', 'technic:zinc_ingot'},
+		{'technic:carbon_steel_ingot', '', 'technic:carbon_steel_ingot'},
+		{'technic:zinc_ingot', 'technic:carbon_steel_ingot', 'technic:zinc_ingot'},
 	}
 })
 
diff --git a/technic/tools/mining_lasers.lua b/technic/tools/mining_lasers.lua
index 03286f4..8f32a5a 100644
--- a/technic/tools/mining_lasers.lua
+++ b/technic/tools/mining_lasers.lua
@@ -16,25 +16,25 @@
 minetest.register_craft({
 	output = 'technic:laser_mk1',
 	recipe = {
-		{'default:diamond', 'default:steel_ingot', 'technic:red_energy_crystal'},
-		{'',                'default:steel_ingot', 'default:steel_ingot'},
-		{'',                '',                    'default:copper_ingot'},
+		{'default:diamond', 'technic:carbon_steel_ingot', 'technic:red_energy_crystal'},
+		{'',                'technic:carbon_steel_ingot', 'technic:carbon_steel_ingot'},
+		{'',                '',                           'default:copper_ingot'},
 	}
 })
 minetest.register_craft({
 	output = 'technic:laser_mk2',
 	recipe = {
-		{'default:diamond', 'default:steel_ingot', 'technic:laser_mk1'},
-		{'',                'default:steel_ingot', 'technic:green_energy_crystal'},
-		{'',                '',                    'default:copper_ingot'},
+		{'default:diamond', 'technic:carbon_steel_ingot', 'technic:laser_mk1'},
+		{'',                'technic:carbon_steel_ingot', 'technic:green_energy_crystal'},
+		{'',                '',                           'default:copper_ingot'},
 	}
 })
 minetest.register_craft({
 	output = 'technic:laser_mk3',
 	recipe = {
-		{'default:diamond', 'default:steel_ingot', 'technic:laser_mk2'},
-		{'',                'default:steel_ingot', 'technic:blue_energy_crystal'},
-		{'',                '',                    'default:copper_ingot'},
+		{'default:diamond', 'technic:carbon_steel_ingot', 'technic:laser_mk2'},
+		{'',                'technic:carbon_steel_ingot', 'technic:blue_energy_crystal'},
+		{'',                '',                           'default:copper_ingot'},
 	}
 })
 
diff --git a/technic_chests/copper_chest.lua b/technic_chests/copper_chest.lua
index a2a5a28..21f0563 100644
--- a/technic_chests/copper_chest.lua
+++ b/technic_chests/copper_chest.lua
@@ -19,7 +19,7 @@
 minetest.register_craft({
 	output = 'technic:copper_locked_chest 1',
 	recipe = {
-		{'default:steel_ingot'},
+		{'technic:wrought_iron_ingot'},
 		{'technic:copper_chest'},
 	}
 })
diff --git a/technic_chests/depends.txt b/technic_chests/depends.txt
index 8009e56..fc0492e 100644
--- a/technic_chests/depends.txt
+++ b/technic_chests/depends.txt
@@ -1,5 +1,6 @@
 default
 technic
+technic_worldgen
 moreores
 pipeworks
 intllib?
diff --git a/technic_chests/gold_chest.lua b/technic_chests/gold_chest.lua
index d173fde..941834d 100644
--- a/technic_chests/gold_chest.lua
+++ b/technic_chests/gold_chest.lua
@@ -20,7 +20,7 @@
 minetest.register_craft({
 	output = 'technic:gold_locked_chest',
 	recipe = {
-		{'default:steel_ingot'},
+		{'technic:wrought_iron_ingot'},
 		{'technic:gold_chest'},
 	}
 })
diff --git a/technic_chests/iron_chest.lua b/technic_chests/iron_chest.lua
index c21fcfb..a1f5c63 100644
--- a/technic_chests/iron_chest.lua
+++ b/technic_chests/iron_chest.lua
@@ -2,25 +2,25 @@
 minetest.register_craft({
 	output = 'technic:iron_chest 1',
 	recipe = {
-		{'default:steel_ingot','default:steel_ingot','default:steel_ingot'},
-		{'default:steel_ingot','default:chest','default:steel_ingot'},
-		{'default:steel_ingot','default:steel_ingot','default:steel_ingot'},
+		{'technic:cast_iron_ingot','technic:cast_iron_ingot','technic:cast_iron_ingot'},
+		{'technic:cast_iron_ingot','default:chest','technic:cast_iron_ingot'},
+		{'technic:cast_iron_ingot','technic:cast_iron_ingot','technic:cast_iron_ingot'},
 	}
 })
 
 minetest.register_craft({
 	output = 'technic:iron_locked_chest 1',
 	recipe = {
-		{'default:steel_ingot','default:steel_ingot','default:steel_ingot'},
-		{'default:steel_ingot','default:chest_locked','default:steel_ingot'},
-		{'default:steel_ingot','default:steel_ingot','default:steel_ingot'},
+		{'technic:cast_iron_ingot','technic:cast_iron_ingot','technic:cast_iron_ingot'},
+		{'technic:cast_iron_ingot','default:chest_locked','technic:cast_iron_ingot'},
+		{'technic:cast_iron_ingot','technic:cast_iron_ingot','technic:cast_iron_ingot'},
 	}
 })
 
 minetest.register_craft({
 	output = 'technic:iron_locked_chest 1',
 	recipe = {
-		{'default:steel_ingot'},
+		{'technic:wrought_iron_ingot'},
 		{'technic:iron_chest'},
 	}
 })
diff --git a/technic_chests/mithril_chest.lua b/technic_chests/mithril_chest.lua
index b39fc9d..f5aa986 100644
--- a/technic_chests/mithril_chest.lua
+++ b/technic_chests/mithril_chest.lua
@@ -19,7 +19,7 @@
 minetest.register_craft({
 	output = 'technic:mithril_locked_chest 1',
 	recipe = {
-		{'default:steel_ingot'},
+		{'technic:wrought_iron_ingot'},
 		{'technic:mithril_chest'},
 	}
 })
diff --git a/technic_chests/silver_chest.lua b/technic_chests/silver_chest.lua
index 9c3453a..75b33f8 100644
--- a/technic_chests/silver_chest.lua
+++ b/technic_chests/silver_chest.lua
@@ -19,7 +19,7 @@
 minetest.register_craft({
 	output = 'technic:silver_locked_chest',
 	recipe = {
-		{'default:steel_ingot'},
+		{'technic:wrought_iron_ingot'},
 		{'technic:silver_chest'},
 	}
 })
diff --git a/technic_worldgen/crafts.lua b/technic_worldgen/crafts.lua
index fc593a6..e2d5236 100644
--- a/technic_worldgen/crafts.lua
+++ b/technic_worldgen/crafts.lua
@@ -34,6 +34,23 @@
 	inventory_image = "technic_brass_ingot.png",
 })
 
+minetest.register_alias("technic:wrought_iron_ingot", "default:steel_ingot")
+
+minetest.override_item("default:steel_ingot", {
+	description = S("Wrought Iron Ingot"),
+	inventory_image = "technic_wrought_iron_ingot.png",
+})
+
+minetest.register_craftitem(":technic:cast_iron_ingot", {
+	description = S("Cast Iron Ingot"),
+	inventory_image = "technic_cast_iron_ingot.png",
+})
+
+minetest.register_craftitem(":technic:carbon_steel_ingot", {
+	description = S("Carbon Steel Ingot"),
+	inventory_image = "technic_carbon_steel_ingot.png",
+})
+
 minetest.register_craftitem(":technic:stainless_steel_ingot", {
 	description = S("Stainless Steel Ingot"),
 	inventory_image = "technic_stainless_steel_ingot.png",
@@ -61,6 +78,8 @@
 register_block("technic:chromium_block", "technic:chromium_ingot")
 register_block("technic:zinc_block", "technic:zinc_ingot")
 register_block("technic:brass_block", "technic:brass_ingot")
+register_block("technic:cast_iron_block", "technic:cast_iron_ingot")
+register_block("technic:carbon_steel_block", "technic:carbon_steel_ingot")
 register_block("technic:stainless_steel_block", "technic:stainless_steel_ingot")
 
 minetest.register_craft({
@@ -75,3 +94,59 @@
 	output = "technic:chromium_ingot",
 })
 
+minetest.register_craft({
+	type = 'cooking',
+	recipe = minetest.registered_aliases["technic:wrought_iron_ingot"],
+	output = "technic:cast_iron_ingot",
+})
+
+minetest.register_craft({
+	type = 'cooking',
+	recipe = "technic:cast_iron_ingot",
+	cooktime = 2,
+	output = "technic:wrought_iron_ingot",
+})
+
+minetest.register_craft({
+	type = 'cooking',
+	recipe = "technic:carbon_steel_ingot",
+	cooktime = 2,
+	output = "technic:wrought_iron_ingot",
+})
+
+local function for_each_registered_craftitem(action)
+	local already_reg = {}
+	for k, _ in pairs(minetest.registered_items) do
+		table.insert(already_reg, k)
+	end
+	local really_register_craftitem = minetest.register_craftitem
+	minetest.register_craftitem = function(name, def)
+		really_register_craftitem(name, def)
+		action(string.gsub(name, "^:", ""))
+	end
+	for _, name in ipairs(already_reg) do
+		action(name)
+	end
+end
+
+local steel_to_iron = {}
+for _, i in ipairs({
+	"default:axe_steel",
+	"default:pick_steel",
+	"default:shovel_steel",
+	"default:sword_steel",
+	"doors:door_steel",
+	"farming:hoe_steel",
+	"mesecons_doors:op_door_steel",
+	"mesecons_doors:sig_door_steel",
+	"vessels:steel_bottle",
+}) do
+	steel_to_iron[i] = true
+end
+
+for_each_registered_craftitem(function(item_name)
+	local item_def = minetest.registered_items[item_name]
+	if steel_to_iron[item_name] and string.find(item_def.description, "Steel") then
+		minetest.override_item(item_name, { description = string.gsub(item_def.description, "Steel", S("Iron")) })
+	end
+end)
diff --git a/technic_worldgen/locale/de.txt b/technic_worldgen/locale/de.txt
index 60f3862..1dacb41 100644
--- a/technic_worldgen/locale/de.txt
+++ b/technic_worldgen/locale/de.txt
@@ -9,7 +9,11 @@
 Zinc Lump = Zinkklumpen
 Zinc Ingot = Zinkbarren
 Brass Ingot = Messingbarren
+Wrought Iron Ingot = Schmiedeeisenbarren
+Cast Iron Ingot = Gusseisenbarren
+Carbon Steel Ingot = Kohlenstoffstahlbarren
 Stainless Steel Ingot = Edelstahlbarren
+Iron = Eisen
 
 ## nodes.lua
 Uranium Ore = Uranerz
@@ -21,8 +25,12 @@
 Uranium Block = Uranblock
 Chromium Block = Chromblock
 Zinc Block = Zinkblock
+Wrought Iron Block = Schmiedeeisenblock
+Cast Iron Block = Gusseisenblock
+Carbon Steel Block = Kohlenstoffstahlblock
 Stainless Steel Block = Edelstahlblock
 Brass Block = Messingblock
+Wrought Iron = Schmiedeeisen
 
 ## rubber.lua
 Rubber Tree Sapling = Gummibaumsetzling
diff --git a/technic_worldgen/locale/template.txt b/technic_worldgen/locale/template.txt
index f1da697..a4a6e4d 100644
--- a/technic_worldgen/locale/template.txt
+++ b/technic_worldgen/locale/template.txt
@@ -8,7 +8,11 @@
 Zinc Lump = 
 Zinc Ingot = 
 Brass Ingot = 
+Wrought Iron Ingot =
+Cast Iron Ingot =
+Carbon Steel Ingot =
 Stainless Steel Ingot = 
+Iron =
 
 ###nodes.lua
 Uranium Ore = 
@@ -20,8 +24,12 @@
 Uranium Block = 
 Chromium Block = 
 Zinc Block = 
+Wrought Iron Block =
+Cast Iron Block =
+Carbon Steel Block =
 Stainless Steel Block = 
 Brass Block = 
+Wrought Iron =
 
 ###rubber.lua
 Rubber Tree Sapling = 
diff --git a/technic_worldgen/nodes.lua b/technic_worldgen/nodes.lua
index 07ec4af..12637f7 100644
--- a/technic_worldgen/nodes.lua
+++ b/technic_worldgen/nodes.lua
@@ -76,6 +76,29 @@
 	sounds = default.node_sound_stone_defaults()
 })
 
+minetest.register_alias("technic:wrought_iron_block", "default:steelblock")
+
+minetest.override_item("default:steelblock", {
+	description = S("Wrought Iron Block"),
+	tiles = { "technic_wrought_iron_block.png" },
+})
+
+minetest.register_node(":technic:cast_iron_block", {
+	description = S("Cast Iron Block"),
+	tiles = { "technic_cast_iron_block.png" },
+	is_ground_content = true,
+	groups = {cracky=1, level=2},
+	sounds = default.node_sound_stone_defaults()
+})
+
+minetest.register_node(":technic:carbon_steel_block", {
+	description = S("Carbon Steel Block"),
+	tiles = { "technic_carbon_steel_block.png" },
+	is_ground_content = true,
+	groups = {cracky=1, level=2},
+	sounds = default.node_sound_stone_defaults()
+})
+
 minetest.register_node(":technic:stainless_steel_block", {
 	description = S("Stainless Steel Block"),
 	tiles = { "technic_stainless_steel_block.png" },
@@ -104,3 +127,37 @@
 minetest.register_alias("technic:diamond", "default:diamond")
 minetest.register_alias("technic:mineral_diamond", "default:stone_with_diamond")
 
+local function for_each_registered_node(action)
+	local already_reg = {}
+	for k, _ in pairs(minetest.registered_nodes) do
+		table.insert(already_reg, k)
+	end
+	local really_register_node = minetest.register_node
+	minetest.register_node = function(name, def)
+		really_register_node(name, def)
+		action(string.gsub(name, "^:", ""))
+	end
+	for _, name in ipairs(already_reg) do
+		action(name)
+	end
+end
+
+for_each_registered_node(function(node_name)
+	local node_def = minetest.registered_nodes[node_name]
+	if node_name ~= "default:steelblock" and string.find(node_name, "steelblock") and string.find(node_def.description, "Steel") then
+		minetest.override_item(node_name, { description = string.gsub(node_def.description, "Steel", S("Wrought Iron")) })
+	end
+	if node_def.tiles or node_def.tile_images then
+		local tn = node_def.tiles and "tiles" or "tile_images"
+		local tl = {}
+		local ca = false
+		for i, t in ipairs(node_def[tn]) do
+			if type(t) == "string" and t == "default_steel_block.png" then
+				ca = true
+				t = "technic_wrought_iron_block.png"
+			end
+			table.insert(tl, t)
+		end
+		if ca then minetest.override_item(node_name, { [tn] = tl }) end
+	end
+end)
diff --git a/technic_worldgen/textures/technic_carbon_steel_block.png b/technic_worldgen/textures/technic_carbon_steel_block.png
new file mode 100644
index 0000000..f3cfdc1
--- /dev/null
+++ b/technic_worldgen/textures/technic_carbon_steel_block.png
Binary files differ
diff --git a/technic_worldgen/textures/technic_carbon_steel_ingot.png b/technic_worldgen/textures/technic_carbon_steel_ingot.png
new file mode 100644
index 0000000..0d45066
--- /dev/null
+++ b/technic_worldgen/textures/technic_carbon_steel_ingot.png
Binary files differ
diff --git a/technic_worldgen/textures/technic_cast_iron_block.png b/technic_worldgen/textures/technic_cast_iron_block.png
new file mode 100644
index 0000000..2df61e5
--- /dev/null
+++ b/technic_worldgen/textures/technic_cast_iron_block.png
Binary files differ
diff --git a/technic_worldgen/textures/technic_cast_iron_ingot.png b/technic_worldgen/textures/technic_cast_iron_ingot.png
new file mode 100644
index 0000000..692fff8
--- /dev/null
+++ b/technic_worldgen/textures/technic_cast_iron_ingot.png
Binary files differ
diff --git a/technic_worldgen/textures/technic_wrought_iron_block.png b/technic_worldgen/textures/technic_wrought_iron_block.png
new file mode 100644
index 0000000..cf6c961
--- /dev/null
+++ b/technic_worldgen/textures/technic_wrought_iron_block.png
Binary files differ
diff --git a/technic_worldgen/textures/technic_wrought_iron_ingot.png b/technic_worldgen/textures/technic_wrought_iron_ingot.png
new file mode 100644
index 0000000..b7e6d1e
--- /dev/null
+++ b/technic_worldgen/textures/technic_wrought_iron_ingot.png
Binary files differ
diff --git a/wrench/depends.txt b/wrench/depends.txt
index 0905917..4d126c6 100644
--- a/wrench/depends.txt
+++ b/wrench/depends.txt
@@ -1,5 +1,6 @@
 default
 technic
 technic_chests
+technic_worldgen
 intllib?
 
diff --git a/wrench/init.lua b/wrench/init.lua
index 500f8ac..f0a0e00 100644
--- a/wrench/init.lua
+++ b/wrench/init.lua
@@ -165,8 +165,8 @@
 minetest.register_craft({
 	output = "wrench:wrench",
 	recipe = {
-		{"default:steel_ingot", "",                    "default:steel_ingot"},
-		{"",                    "default:steel_ingot", ""},
-		{"",                    "default:steel_ingot", ""},
+		{"technic:carbon_steel_ingot", "",                           "technic:carbon_steel_ingot"},
+		{"",                           "technic:carbon_steel_ingot", ""},
+		{"",                           "technic:carbon_steel_ingot", ""},
 	},
 })

--
Gitblit v1.8.0