diff --git a/technic_worldgen/crafts.lua b/technic_worldgen/crafts.lua index 71294cfb..2a677d92 100644 --- a/technic_worldgen/crafts.lua +++ b/technic_worldgen/crafts.lua @@ -5,12 +5,11 @@ minetest.register_craftitem(":technic:uranium_lump", { description = S("Uranium Lump"), inventory_image = "technic_uranium_lump.png", }) -minetest.register_alias("technic:uranium", "technic:uranium_lump") minetest.register_craftitem(":technic:uranium_ingot", { description = S("Uranium Ingot"), inventory_image = "technic_uranium_ingot.png", - groups = {uranium_ingot=1}, + groups = {uranium_ingot = 1}, }) minetest.register_craftitem(":technic:chromium_lump", { @@ -48,14 +47,6 @@ minetest.register_craftitem(":technic:sulfur_lump", { inventory_image = "technic_sulfur_lump.png", }) -minetest.register_alias("technic:wrought_iron_ingot", "default:steel_ingot") - -minetest.override_item("default:steel_ingot", { - description = S("Wrought Iron Ingot"), - -- make the color of the ingot a bit darker to separate it better from tin - inventory_image = "technic_wrought_iron_ingot.png^[multiply:#bbbbbbff", -}) - minetest.register_craftitem(":technic:cast_iron_ingot", { description = S("Cast Iron Ingot"), inventory_image = "technic_cast_iron_ingot.png", @@ -71,7 +62,21 @@ minetest.register_craftitem(":technic:stainless_steel_ingot", { inventory_image = "technic_stainless_steel_ingot.png", }) -local function register_block(block, ingot) +local blocks = { + "uranium", + "chromium", + "zinc", + "lead", + "cast_iron", + "carbon_steel", + "stainless_steel", + "sulfur", +} + +for _, name in pairs(blocks) do + local block = "technic:"..name.."_block" + local ingot = "technic:"..name.."_ingot" + minetest.register_craft({ output = block, recipe = { @@ -83,112 +88,66 @@ local function register_block(block, ingot) minetest.register_craft({ output = ingot.." 9", - recipe = { - {block} - } + recipe = {{block}} }) end -register_block("technic:uranium_block", "technic:uranium_ingot") -register_block("technic:chromium_block", "technic:chromium_ingot") -register_block("technic:zinc_block", "technic:zinc_ingot") -register_block("technic:lead_block", "technic:lead_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") -register_block("technic:sulfur_block", "technic:sulfur_lump") - minetest.register_craft({ - type = 'cooking', + type = "cooking", recipe = "technic:zinc_lump", output = "technic:zinc_ingot", }) minetest.register_craft({ - type = 'cooking', + type = "cooking", recipe = "technic:chromium_lump", output = "technic:chromium_ingot", }) minetest.register_craft({ - type = 'cooking', + type = "cooking", recipe = "technic:uranium_lump", output = "technic:uranium_ingot", }) minetest.register_craft({ - type = 'cooking', + type = "cooking", recipe = "technic:lead_lump", output = "technic:lead_ingot", }) - minetest.register_craft({ - type = 'cooking', - recipe = minetest.registered_aliases["technic:wrought_iron_ingot"], + type = "cooking", + recipe = "default:steel_ingot", output = "technic:cast_iron_ingot", }) minetest.register_craft({ - type = 'cooking', + type = "cooking", recipe = "technic:cast_iron_ingot", cooktime = 2, output = "technic:wrought_iron_ingot", }) minetest.register_craft({ - type = 'cooking', + type = "cooking", recipe = "technic:carbon_steel_ingot", cooktime = 2, output = "technic:wrought_iron_ingot", }) -local function for_each_registered_item(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 - local really_register_tool = minetest.register_tool - minetest.register_tool = function(name, def) - really_register_tool(name, def) - action(string.gsub(name, "^:", "")) - 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 - -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", - "glooptest:hammer_steel", - "glooptest:handsaw_steel", - "glooptest:reinforced_crystal_glass", - "mesecons_doors:op_door_steel", - "mesecons_doors:sig_door_steel", - "vessels:steel_bottle", -}) do - steel_to_iron[i] = true -end +minetest.register_craft({ + output = "technic:marble_bricks 4", + recipe = { + {"technic:marble","technic:marble"}, + {"technic:marble","technic:marble"} + } +}) -for_each_registered_item(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) +minetest.register_craft({ + output = "technic:granite_bricks 4", + recipe = { + {"technic:granite","technic:granite"}, + {"technic:granite","technic:granite"} + } +}) diff --git a/technic_worldgen/init.lua b/technic_worldgen/init.lua index 2f369200..0f262963 100644 --- a/technic_worldgen/init.lua +++ b/technic_worldgen/init.lua @@ -1,3 +1,4 @@ + local modpath = minetest.get_modpath("technic_worldgen") technic = rawget(_G, "technic") or {} @@ -9,12 +10,13 @@ dofile(modpath.."/config.lua") dofile(modpath.."/nodes.lua") dofile(modpath.."/oregen.lua") dofile(modpath.."/crafts.lua") +dofile(modpath.."/overrides.lua") -- Rubber trees, moretrees also supplies these if not minetest.get_modpath("moretrees") then dofile(modpath.."/rubber.lua") else - -- older versions of technic provided rubber trees regardless + -- Older versions of technic provided rubber trees regardless minetest.register_alias("technic:rubber_sapling", "moretrees:rubber_tree_sapling") minetest.register_alias("technic:rubber_tree_empty", "moretrees:rubber_tree_trunk_empty") end @@ -24,3 +26,9 @@ if minetest.get_modpath("mg") then dofile(modpath.."/mg.lua") end +minetest.register_alias("technic:wrought_iron_ingot", "default:steel_ingot") +minetest.register_alias("technic:uranium", "technic:uranium_lump") +minetest.register_alias("technic:wrought_iron_block", "default:steelblock") +minetest.register_alias("technic:diamond_block", "default:diamondblock") +minetest.register_alias("technic:diamond", "default:diamond") +minetest.register_alias("technic:mineral_diamond", "default:stone_with_diamond") diff --git a/technic_worldgen/mod.conf b/technic_worldgen/mod.conf index 4cd10336..0c980ec3 100644 --- a/technic_worldgen/mod.conf +++ b/technic_worldgen/mod.conf @@ -1,3 +1,3 @@ name = technic_worldgen depends = default -optional_depends = intllib, mg, doors, farming, glooptest, mesecons_doors, vessels +optional_depends = intllib, mg diff --git a/technic_worldgen/nodes.lua b/technic_worldgen/nodes.lua index 2d9de46f..493c1356 100644 --- a/technic_worldgen/nodes.lua +++ b/technic_worldgen/nodes.lua @@ -1,54 +1,54 @@ local S = technic.worldgen.gettext -minetest.register_node( ":technic:mineral_uranium", { +minetest.register_node(":technic:mineral_uranium", { description = S("Uranium Ore"), - tiles = { "default_stone.png^technic_mineral_uranium.png" }, + tiles = {"default_stone.png^technic_mineral_uranium.png"}, is_ground_content = true, groups = {cracky=3, radioactive=1}, sounds = default.node_sound_stone_defaults(), drop = "technic:uranium_lump", }) -minetest.register_node( ":technic:mineral_chromium", { +minetest.register_node(":technic:mineral_chromium", { description = S("Chromium Ore"), - tiles = { "default_stone.png^technic_mineral_chromium.png" }, + tiles = {"default_stone.png^technic_mineral_chromium.png"}, is_ground_content = true, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), drop = "technic:chromium_lump", }) -minetest.register_node( ":technic:mineral_zinc", { +minetest.register_node(":technic:mineral_zinc", { description = S("Zinc Ore"), - tiles = { "default_stone.png^technic_mineral_zinc.png" }, + tiles = {"default_stone.png^technic_mineral_zinc.png"}, is_ground_content = true, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), drop = "technic:zinc_lump", }) -minetest.register_node( ":technic:mineral_lead", { +minetest.register_node(":technic:mineral_lead", { description = S("Lead Ore"), - tiles = { "default_stone.png^technic_mineral_lead.png" }, + tiles = {"default_stone.png^technic_mineral_lead.png"}, is_ground_content = true, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), drop = "technic:lead_lump", }) -minetest.register_node( ":technic:mineral_sulfur", { +minetest.register_node(":technic:mineral_sulfur", { description = S("Sulfur Ore"), - tiles = { "default_stone.png^technic_mineral_sulfur.png" }, + tiles = {"default_stone.png^technic_mineral_sulfur.png"}, is_ground_content = true, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), drop = "technic:sulfur_lump", }) -minetest.register_node( ":technic:granite", { +minetest.register_node(":technic:granite", { description = S("Granite"), - tiles = { "technic_granite.png" }, + tiles = {"technic_granite.png"}, is_ground_content = true, groups = {cracky=1}, sounds = default.node_sound_stone_defaults(), @@ -56,23 +56,23 @@ minetest.register_node( ":technic:granite", { minetest.register_node(":technic:granite_bricks", { description = S("Granite Bricks"), - tiles = { "technic_granite_bricks.png" }, + tiles = {"technic_granite_bricks.png"}, is_ground_content = true, groups = {cracky=1}, sounds = default.node_sound_stone_defaults(), }) -minetest.register_node( ":technic:marble", { +minetest.register_node(":technic:marble", { description = S("Marble"), - tiles = { "technic_marble.png" }, + tiles = {"technic_marble.png"}, is_ground_content = true, groups = {cracky=3, marble=1}, sounds = default.node_sound_stone_defaults(), }) -minetest.register_node( ":technic:marble_bricks", { +minetest.register_node(":technic:marble_bricks", { description = S("Marble Bricks"), - tiles = { "technic_marble_bricks.png" }, + tiles = {"technic_marble_bricks.png"}, is_ground_content = true, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), @@ -80,7 +80,7 @@ minetest.register_node( ":technic:marble_bricks", { minetest.register_node(":technic:uranium_block", { description = S("Uranium Block"), - tiles = { "technic_uranium_block.png" }, + tiles = {"technic_uranium_block.png"}, is_ground_content = true, groups = {uranium_block=1, cracky=1, level=2, radioactive=2}, sounds = default.node_sound_stone_defaults() @@ -88,7 +88,7 @@ minetest.register_node(":technic:uranium_block", { minetest.register_node(":technic:chromium_block", { description = S("Chromium Block"), - tiles = { "technic_chromium_block.png" }, + tiles = {"technic_chromium_block.png"}, is_ground_content = true, groups = {cracky=1, level=2}, sounds = default.node_sound_stone_defaults() @@ -96,7 +96,7 @@ minetest.register_node(":technic:chromium_block", { minetest.register_node(":technic:zinc_block", { description = S("Zinc Block"), - tiles = { "technic_zinc_block.png" }, + tiles = {"technic_zinc_block.png"}, is_ground_content = true, groups = {cracky=1, level=2}, sounds = default.node_sound_stone_defaults() @@ -104,22 +104,15 @@ minetest.register_node(":technic:zinc_block", { minetest.register_node(":technic:lead_block", { description = S("Lead Block"), - tiles = { "technic_lead_block.png" }, + tiles = {"technic_lead_block.png"}, is_ground_content = true, groups = {cracky=1, level=2}, 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" }, + tiles = {"technic_cast_iron_block.png"}, is_ground_content = true, groups = {cracky=1, level=2}, sounds = default.node_sound_stone_defaults() @@ -127,7 +120,7 @@ minetest.register_node(":technic:cast_iron_block", { minetest.register_node(":technic:carbon_steel_block", { description = S("Carbon Steel Block"), - tiles = { "technic_carbon_steel_block.png" }, + tiles = {"technic_carbon_steel_block.png"}, is_ground_content = true, groups = {cracky=1, level=2}, sounds = default.node_sound_stone_defaults() @@ -135,7 +128,7 @@ minetest.register_node(":technic:carbon_steel_block", { minetest.register_node(":technic:stainless_steel_block", { description = S("Stainless Steel Block"), - tiles = { "technic_stainless_steel_block.png" }, + tiles = {"technic_stainless_steel_block.png"}, is_ground_content = true, groups = {cracky=1, level=2}, sounds = default.node_sound_stone_defaults() @@ -143,70 +136,8 @@ minetest.register_node(":technic:stainless_steel_block", { minetest.register_node(":technic:sulfur_block", { description = S("Sulfur Block"), - tiles = { "technic_sulfur_block.png" }, + tiles = {"technic_sulfur_block.png"}, is_ground_content = true, groups = {cracky = 3}, sounds = default.node_sound_stone_defaults() }) - -minetest.register_craft({ - output = 'technic:marble_bricks 4', - recipe = { - {'technic:marble','technic:marble'}, - {'technic:marble','technic:marble'} - } -}) - -minetest.register_craft({ - output = 'technic:granite_bricks 4', - recipe = { - {'technic:granite','technic:granite'}, - {'technic:granite','technic:granite'} - } -}) - -minetest.register_alias("technic:diamond_block", "default:diamondblock") -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 really_register_node = minetest.register_node - minetest.register_node = function(name, def) - really_register_node(name, def) - action(name:gsub("^:", ""), def) - end - for name, def in pairs(minetest.registered_nodes) do - action(name, def) - end -end - -for_each_registered_node(function(node_name, node_def) - if node_name ~= "default:steelblock" and - node_name:find("steelblock", 1, true) and - node_def.description:find("Steel", 1, true) then - minetest.override_item(node_name, { - description = node_def.description:gsub("Steel", S("Wrought Iron")), - }) - end - local tiles = node_def.tiles or node_def.tile_images - if tiles then - local new_tiles = {} - local do_override = false - if type(tiles) == "string" then - tiles = {tiles} - end - for i, t in ipairs(tiles) do - if type(t) == "string" and t == "default_steel_block.png" then - do_override = true - t = "technic_wrought_iron_block.png" - end - table.insert(new_tiles, t) - end - if do_override then - minetest.override_item(node_name, { - tiles = new_tiles - }) - end - end -end) - diff --git a/technic_worldgen/overrides.lua b/technic_worldgen/overrides.lua new file mode 100644 index 00000000..4d380083 --- /dev/null +++ b/technic_worldgen/overrides.lua @@ -0,0 +1,83 @@ + +local S = technic.worldgen.gettext + +minetest.override_item("default:steel_ingot", { + description = S("Wrought Iron Ingot"), + -- Make the color of the ingot a bit darker to separate it better from tin + inventory_image = "technic_wrought_iron_ingot.png^[multiply:#bbbbbbff", +}) + +-- Override description and textures of "steel" items + +local excluded_words = { + "[Cc]arbon", + "[Ss]tainless", + "[Ff]lint", +} + +local function is_steel(name, desc) + name = name:gsub(".+:(.+)", "%1") -- Ignore mod name + if name:match("[Ss]teel") or desc:match("[Ss]teel") then + for _, word in pairs(excluded_words) do + if name:match(word) or desc:match(word) then + return false + end + end + return true + end +end + +local function edit_desc(desc, old, new) + desc = desc:gsub(old, S(new)) + desc = desc:gsub(old:lower(), S(new:lower())) + return desc +end + +local function replace_texture(tile) + local new_tile + if type(tile) == "string" then + new_tile = tile:gsub("default_steel_block.png", "technic_wrought_iron_block.png") + else + new_tile = {} + for k, v in pairs(tile) do + if k == "name" then + new_tile[k] = v:gsub("default_steel_block.png", "technic_wrought_iron_block.png") + else + new_tile[k] = v + end + end + end + return new_tile +end + +local function do_override(name, def) + local desc = def.description + if not is_steel(name, desc) then + return + end + local override = {} + if name:find("steelblock") then + override.description = edit_desc(desc, "Steel", "Wrought Iron") + else + override.description = edit_desc(desc, "Steel", "Iron") + end + if def.tiles then + override.tiles = {} + for _, tile in ipairs(def.tiles) do + table.insert(override.tiles, replace_texture(tile)) + end + end + if def.inventory_image then + override.inventory_image = replace_texture(def.inventory_image) + end + if def.wield_image then + override.wield_image = replace_texture(def.wield_image) + end + minetest.override_item(name, override) +end + +minetest.register_on_mods_loaded(function() + for name, def in pairs(minetest.registered_items) do + do_override(name, def) + end +end)