From 6d1e9b4d61475b813f61b55425074712de8ecc24 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Wed, 20 Mar 2013 10:50:51 -0400 Subject: [PATCH] Multiple changes, see below: removed concrete, marble, marble brick, granite, obsidian stairs/etc from creative inventory, made them work with circular saw in moreblocks since this mod depends on that one anyway. Removed technic obsidian block entirely and aliased it to the default obsidian block; all stairs/slabs for obsidian are under the default: namespace. This depends on a small fix to the circular saw that was just added by Sokomine. If your copy of circular saw doesn't have this fix, you can still use /giveme to get the blocks you need. Removed custom generate_ore code and made generate-ore calls use default.generate_ore() since that is the same function anyway. This is so that technic can use the C++ version of that function when it is moved back into the engine. --- technic/concrete.lua | 4 +- technic/concrete.lua~ | 94 +++++++++++ technic/ores.lua | 141 ++++++++-------- technic/ores.lua~ | 377 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 544 insertions(+), 72 deletions(-) create mode 100644 technic/concrete.lua~ create mode 100644 technic/ores.lua~ diff --git a/technic/concrete.lua b/technic/concrete.lua index 929f155..d936f5b 100644 --- a/technic/concrete.lua +++ b/technic/concrete.lua @@ -74,7 +74,7 @@ minetest.register_node("technic:concrete_post", { }) if type(register_stair_and_slab_and_panel_and_micro) == "function" then register_stair_and_slab_and_panel_and_micro(":stairsplus", "concrete", "technic:concrete", - {cracky=3}, + {cracky=3, not_in_creative_inventory=1}, {"technic_concrete_block.png"}, "Concrete Stairs", "Concrete Slab", @@ -84,7 +84,7 @@ register_stair_and_slab_and_panel_and_micro(":stairsplus", "concrete", "technic: end if type(register_stair_slab_panel_micro) == "function" then register_stair_slab_panel_micro(":stairsplus", "concrete", "technic:concrete", - {cracky=3}, + {cracky=3, not_in_creative_inventory=1}, {"technic_concrete_block.png"}, "Concrete Stairs", "Concrete Slab", diff --git a/technic/concrete.lua~ b/technic/concrete.lua~ new file mode 100644 index 0000000..929f155 --- /dev/null +++ b/technic/concrete.lua~ @@ -0,0 +1,94 @@ + +minetest.register_craft({ + output = 'technic:rebar 6', + recipe = { + {'','', 'default:steel_ingot'}, + {'','default:steel_ingot',''}, + {'default:steel_ingot', '', ''}, + } +}) + +minetest.register_craft({ + output = 'technic:concrete 5', + recipe = { + {'default:stone','technic:rebar','default:stone'}, + {'technic:rebar','default:stone','technic:rebar'}, + {'default:stone','technic:rebar','default:stone'}, + } +}) + +minetest.register_craft({ + output = 'technic:concrete_post 4', + recipe = { + {'default:stone','technic:rebar','default:stone'}, + {'default:stone','technic:rebar','default:stone'}, + {'default:stone','technic:rebar','default:stone'}, +} +}) + +minetest.register_craftitem("technic:rebar", { + description = "Rebar", + inventory_image = "technic_rebar.png", + stack_max = 99, +}) + +minetest.register_craftitem("technic:concrete", { + description = "Concrete Block", + inventory_image = "technic_concrete_block.png", + stack_max = 99, +}) + +minetest.register_craftitem("technic:concrete_post", { + description = "Concrete Post", + inventory_image = "technic_concrete_post.png", + stack_max = 99, +}) + + + +-- NODES: + +minetest.register_node("technic:concrete", { + description = "Concrete Block", + tile_images = {"technic_concrete_block.png",}, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("technic:concrete_post", { + description = "Concrete Post", + drawtype = "fencelike", + tiles = {"technic_concrete_block.png"}, + inventory_image = "default_fence.png", + wield_image = "default_fence.png", + paramtype = "light", + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, + }, + + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), +}) +if type(register_stair_and_slab_and_panel_and_micro) == "function" then +register_stair_and_slab_and_panel_and_micro(":stairsplus", "concrete", "technic:concrete", + {cracky=3}, + {"technic_concrete_block.png"}, + "Concrete Stairs", + "Concrete Slab", + "Concrete Panel", + "Concrete Microblock", + "concrete") +end +if type(register_stair_slab_panel_micro) == "function" then +register_stair_slab_panel_micro(":stairsplus", "concrete", "technic:concrete", + {cracky=3}, + {"technic_concrete_block.png"}, + "Concrete Stairs", + "Concrete Slab", + "Concrete Panel", + "Concrete Microblock", + "concrete") +end diff --git a/technic/ores.lua b/technic/ores.lua index 92cf50f..c78fb6e 100644 --- a/technic/ores.lua +++ b/technic/ores.lua @@ -30,17 +30,64 @@ minetest.register_node( "technic:granite", { sounds = default.node_sound_stone_defaults(), }) -minetest.register_node( "technic:obsidian", { - description = "Obsidian", - tiles = { "technic_obsidian.png" }, - is_ground_content = true, - groups = {cracky=3}, - sounds = default.node_sound_stone_defaults(), -}) +-- cross-compatibility with default obsidian + +function register_technic_stairs_alias(modname, origname, newmod, newname) + minetest.register_alias(modname .. ":slab_" .. origname, newmod..":slab_" .. newname) + minetest.register_alias(modname .. ":slab_" .. origname .. "_inverted", newmod..":slab_" .. newname .. "_inverted") + minetest.register_alias(modname .. ":slab_" .. origname .. "_wall", newmod..":slab_" .. newname .. "_wall") + minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter", newmod..":slab_" .. newname .. "_quarter") + minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_inverted", newmod..":slab_" .. newname .. "_quarter_inverted") + minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_wall", newmod..":slab_" .. newname .. "_quarter_wall") + minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter", newmod..":slab_" .. newname .. "_three_quarter") + minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_inverted", newmod..":slab_" .. newname .. "_three_quarter_inverted") + minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_wall", newmod..":slab_" .. newname .. "_three_quarter_wall") + minetest.register_alias(modname .. ":stair_" .. origname, newmod..":stair_" .. newname) + minetest.register_alias(modname .. ":stair_" .. origname .. "_inverted", newmod..":stair_" .. newname .. "_inverted") + minetest.register_alias(modname .. ":stair_" .. origname .. "_wall", newmod..":stair_" .. newname .. "_wall") + minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half") + minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted") + minetest.register_alias(modname .. ":stair_" .. origname .. "_half", newmod..":stair_" .. newname .. "_half") + minetest.register_alias(modname .. ":stair_" .. origname .. "_half_inverted", newmod..":stair_" .. newname .. "_half_inverted") + minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half", newmod..":stair_" .. newname .. "_right_half") + minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half_inverted", newmod..":stair_" .. newname .. "_right_half_inverted") + minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half") + minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted") + minetest.register_alias(modname .. ":stair_" .. origname .. "_inner", newmod..":stair_" .. newname .. "_inner") + minetest.register_alias(modname .. ":stair_" .. origname .. "_inner_inverted", newmod..":stair_" .. newname .. "_inner_inverted") + minetest.register_alias(modname .. ":stair_" .. origname .. "_outer", newmod..":stair_" .. newname .. "_outer") + minetest.register_alias(modname .. ":stair_" .. origname .. "_outer_inverted", newmod..":stair_" .. newname .. "_outer_inverted") + minetest.register_alias(modname .. ":panel_" .. origname .. "_bottom", newmod..":panel_" .. newname .. "_bottom") + minetest.register_alias(modname .. ":panel_" .. origname .. "_top", newmod..":panel_" .. newname .. "_top") + minetest.register_alias(modname .. ":panel_" .. origname .. "_vertical", newmod..":panel_" .. newname .. "_vertical") + minetest.register_alias(modname .. ":micro_" .. origname .. "_bottom", newmod..":micro_" .. newname .. "_bottom") + minetest.register_alias(modname .. ":micro_" .. origname .. "_top", newmod..":micro_" .. newname .. "_top") +end + + +minetest.register_alias("technic:obsidian", "default:obsidian") +minetest.register_alias("moreblocks:obsidian", "default:obsidian") + +register_stair_slab_panel_micro( + ":default", + "obsidian", + "default:obsidian", + {cracky=3, not_in_creative_inventory=1}, + {"default_obsidian.png"}, + "Obsidian", + "default:obsidian", + "none", + light +) + +register_technic_stairs_alias("moreblocks", "obsidian", "default", "obsidian") +table.insert(circular_saw.known_stairs, "default:obsidian") + +-- other stairs/slabs if type(register_stair_and_slab_and_panel_and_micro) == "function" then register_stair_and_slab_and_panel_and_micro(":stairsplus", "marble", "technic:marble", - {cracky=3}, + {cracky=3, not_in_creative_inventory=1}, {"technic_marble.png"}, "Marble Stairs", "Marble Slab", @@ -48,7 +95,7 @@ register_stair_and_slab_and_panel_and_micro(":stairsplus", "marble", "technic:ma "Marble Microblock", "marble") register_stair_and_slab_and_panel_and_micro(":stairsplus", "marble_bricks", "technic:marble_bricks", - {cracky=3}, + {cracky=3, not_in_creative_inventory=1}, {"technic_marble_bricks.png"}, "Marble Bricks Stairs", "Marble Bricks Slab", @@ -56,16 +103,16 @@ register_stair_and_slab_and_panel_and_micro(":stairsplus", "marble_bricks", "tec "Marble Bricks Microblock", "marble_bricks") register_stair_and_slab_and_panel_and_micro(":stairsplus", "granite", "technic:granite", - {cracky=3}, + {cracky=3, not_in_creative_inventory=1}, {"technic_granite.png"}, "Granite Stairs", "Granite Slab", "Granite Panel", "Granite Microblock", "granite") -register_stair_and_slab_and_panel_and_micro(":stairsplus", "obsidian", "technic:obsidian", - {cracky=3}, - {"technic_obsidian.png"}, +register_stair_and_slab_and_panel_and_micro(":stairsplus", "obsidian", "default:obsidian", + {cracky=3, not_in_creative_inventory=1}, + {"default_obsidian.png"}, "Obsidian Stairs", "Obsidian Slab", "Obsidian Panel", @@ -75,7 +122,7 @@ end if type(register_stair_slab_panel_micro) == "function" then register_stair_slab_panel_micro(":stairsplus", "marble", "technic:marble", - {cracky=3}, + {cracky=3, not_in_creative_inventory=1}, {"technic_marble.png"}, "Marble Stairs", "Marble Slab", @@ -83,7 +130,7 @@ register_stair_slab_panel_micro(":stairsplus", "marble", "technic:marble", "Marble Microblock", "marble") register_stair_slab_panel_micro(":stairsplus", "marble_bricks", "technic:marble_bricks", - {cracky=3}, + {cracky=3, not_in_creative_inventory=1}, {"technic_marble_bricks.png"}, "Marble Bricks Stairs", "Marble Bricks Slab", @@ -91,7 +138,7 @@ register_stair_slab_panel_micro(":stairsplus", "marble_bricks", "technic:marble_ "Marble Bricks Microblock", "marble_bricks") register_stair_slab_panel_micro(":stairsplus", "granite", "technic:granite", - {cracky=3}, + {cracky=3, not_in_creative_inventory=1}, {"technic_granite.png"}, "Granite Stairs", "Granite Slab", @@ -99,7 +146,7 @@ register_stair_slab_panel_micro(":stairsplus", "granite", "technic:granite", "Granite Microblock", "granite") register_stair_slab_panel_micro(":stairsplus", "obsidian", "technic:obsidian", - {cracky=3}, + {cracky=3, not_in_creative_inventory=1}, {"technic_obsidian.png"}, "Obsidian Stairs", "Obsidian Slab", @@ -201,60 +248,14 @@ minetest.register_craft({ recipe = "technic:zinc_lump" }) - -local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, ore_per_chunk, height_min, height_max) - if maxp.y < height_min or minp.y > height_max then - return - end - local y_min = math.max(minp.y, height_min) - local y_max = math.min(maxp.y, height_max) - local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1) - local pr = PseudoRandom(seed) - local num_chunks = math.floor(chunks_per_volume * volume) - local chunk_size = 3 - if ore_per_chunk <= 4 then - chunk_size = 2 - end - local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk) - --print("generate_ore num_chunks: "..dump(num_chunks)) - for i=1,num_chunks do - if (y_max-chunk_size+1 <= y_min) then return end - local y0 = pr:next(y_min, y_max-chunk_size+1) - if y0 >= height_min and y0 <= height_max then - local x0 = pr:next(minp.x, maxp.x-chunk_size+1) - local z0 = pr:next(minp.z, maxp.z-chunk_size+1) - local p0 = {x=x0, y=y0, z=z0} - for x1=0,chunk_size-1 do - for y1=0,chunk_size-1 do - for z1=0,chunk_size-1 do - if pr:next(1,inverse_chance) == 1 then - local x2 = x0+x1 - local y2 = y0+y1 - local z2 = z0+z1 - local p2 = {x=x2, y=y2, z=z2} - if minetest.env:get_node(p2).name == wherein then - minetest.env:set_node(p2, {name=name}) - end - end - end - end - end - end - end - --print("generate_ore done") -end - minetest.register_on_generated(function(minp, maxp, seed) -generate_ore("technic:mineral_diamond", "default:stone", minp, maxp, seed+21, 1/11/11/11, 4, -31000, -450) -generate_ore("technic:mineral_uranium", "default:stone", minp, maxp, seed+22, 1/10/10/10, 3, -300, -80) -generate_ore("technic:mineral_chromium", "default:stone", minp, maxp, seed+23, 1/10/10/10, 2, -31000, -100) -generate_ore("technic:mineral_zinc", "default:stone", minp, maxp, seed+24, 1/9/9/9, 4, -31000, 2) -generate_ore("technic:marble", "default:stone", minp, maxp, seed+25, 1/128, 20, -100, -32) -generate_ore("technic:granite", "default:stone", minp, maxp, seed+25, 1/128, 15, -190, -90) -generate_stratus("technic:obsidian", - {"default:stone"}, - {"default:lava_source"},{"default:air"}, - minp, maxp, seed+4, 10, 25, 7, -450, -31000, -450) +default.generate_ore("technic:mineral_diamond", "default:stone", minp, maxp, seed+21, 1/11/11/11, 4, -31000, -450) +default.generate_ore("technic:mineral_uranium", "default:stone", minp, maxp, seed+22, 1/10/10/10, 3, -300, -80) +default.generate_ore("technic:mineral_chromium", "default:stone", minp, maxp, seed+23, 1/10/10/10, 2, -31000, -100) +default.generate_ore("technic:mineral_zinc", "default:stone", minp, maxp, seed+24, 1/9/9/9, 4, -31000, 2) +default.generate_ore("technic:marble", "default:stone", minp, maxp, seed+25, 1/128, 20, -100, -32) +default.generate_ore("technic:granite", "default:stone", minp, maxp, seed+25, 1/128, 15, -190, -90) + end) function generate_stratus(name, wherein, ceilin, ceil, minp, maxp, seed, stratus_chance, radius, radius_y, deep, height_min, height_max) diff --git a/technic/ores.lua~ b/technic/ores.lua~ new file mode 100644 index 0000000..3804460 --- /dev/null +++ b/technic/ores.lua~ @@ -0,0 +1,377 @@ +minetest.register_node( "technic:marble", { + description = "Marble", + tiles = { "technic_marble.png" }, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node( "technic:marble_bricks", { + description = "Marble Bricks", + tiles = { "technic_marble_bricks.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_node( "technic:granite", { + description = "Granite", + tiles = { "technic_granite.png" }, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), +}) + +-- cross-compatibility with default obsidian + +function register_technic_stairs_alias(modname, origname, newmod, newname) + minetest.register_alias(modname .. ":slab_" .. origname, newmod..":slab_" .. newname) + minetest.register_alias(modname .. ":slab_" .. origname .. "_inverted", newmod..":slab_" .. newname .. "_inverted") + minetest.register_alias(modname .. ":slab_" .. origname .. "_wall", newmod..":slab_" .. newname .. "_wall") + minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter", newmod..":slab_" .. newname .. "_quarter") + minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_inverted", newmod..":slab_" .. newname .. "_quarter_inverted") + minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_wall", newmod..":slab_" .. newname .. "_quarter_wall") + minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter", newmod..":slab_" .. newname .. "_three_quarter") + minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_inverted", newmod..":slab_" .. newname .. "_three_quarter_inverted") + minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_wall", newmod..":slab_" .. newname .. "_three_quarter_wall") + minetest.register_alias(modname .. ":stair_" .. origname, newmod..":stair_" .. newname) + minetest.register_alias(modname .. ":stair_" .. origname .. "_inverted", newmod..":stair_" .. newname .. "_inverted") + minetest.register_alias(modname .. ":stair_" .. origname .. "_wall", newmod..":stair_" .. newname .. "_wall") + minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half") + minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted") + minetest.register_alias(modname .. ":stair_" .. origname .. "_half", newmod..":stair_" .. newname .. "_half") + minetest.register_alias(modname .. ":stair_" .. origname .. "_half_inverted", newmod..":stair_" .. newname .. "_half_inverted") + minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half", newmod..":stair_" .. newname .. "_right_half") + minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half_inverted", newmod..":stair_" .. newname .. "_right_half_inverted") + minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half") + minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted") + minetest.register_alias(modname .. ":stair_" .. origname .. "_inner", newmod..":stair_" .. newname .. "_inner") + minetest.register_alias(modname .. ":stair_" .. origname .. "_inner_inverted", newmod..":stair_" .. newname .. "_inner_inverted") + minetest.register_alias(modname .. ":stair_" .. origname .. "_outer", newmod..":stair_" .. newname .. "_outer") + minetest.register_alias(modname .. ":stair_" .. origname .. "_outer_inverted", newmod..":stair_" .. newname .. "_outer_inverted") + minetest.register_alias(modname .. ":panel_" .. origname .. "_bottom", newmod..":panel_" .. newname .. "_bottom") + minetest.register_alias(modname .. ":panel_" .. origname .. "_top", newmod..":panel_" .. newname .. "_top") + minetest.register_alias(modname .. ":panel_" .. origname .. "_vertical", newmod..":panel_" .. newname .. "_vertical") + minetest.register_alias(modname .. ":micro_" .. origname .. "_bottom", newmod..":micro_" .. newname .. "_bottom") + minetest.register_alias(modname .. ":micro_" .. origname .. "_top", newmod..":micro_" .. newname .. "_top") +end + + +minetest.register_alias("technic:obsidian", "default:obsidian") +minetest.register_alias("moreblocks:obsidian", "default:obsidian") + +register_stair_slab_panel_micro( + "moreblocks", + "obsidian", + "moreblocks:obsidian", + {cracky=3, not_in_creative_inventory=1}, + {"default_obsidian.png"}, + "Obsidian", + "moreblocks:obsidian", + "none", + light +) + +register_technic_stairs_alias("default", "obsidian", "moreblocks", "obsidian") +table.insert(circular_saw.known_stairs, "default:obsidian") + +-- other stairs/slabs + +if type(register_stair_and_slab_and_panel_and_micro) == "function" then +register_stair_and_slab_and_panel_and_micro(":stairsplus", "marble", "technic:marble", + {cracky=3, not_in_creative_inventory=1}, + {"technic_marble.png"}, + "Marble Stairs", + "Marble Slab", + "Marble Panel", + "Marble Microblock", + "marble") +register_stair_and_slab_and_panel_and_micro(":stairsplus", "marble_bricks", "technic:marble_bricks", + {cracky=3, not_in_creative_inventory=1}, + {"technic_marble_bricks.png"}, + "Marble Bricks Stairs", + "Marble Bricks Slab", + "Marble Bricks Panel", + "Marble Bricks Microblock", + "marble_bricks") +register_stair_and_slab_and_panel_and_micro(":stairsplus", "granite", "technic:granite", + {cracky=3, not_in_creative_inventory=1}, + {"technic_granite.png"}, + "Granite Stairs", + "Granite Slab", + "Granite Panel", + "Granite Microblock", + "granite") +register_stair_and_slab_and_panel_and_micro(":stairsplus", "obsidian", "default:obsidian", + {cracky=3, not_in_creative_inventory=1}, + {"default_obsidian.png"}, + "Obsidian Stairs", + "Obsidian Slab", + "Obsidian Panel", + "Obsidian Microblock", + "obsidian") +end + +if type(register_stair_slab_panel_micro) == "function" then +register_stair_slab_panel_micro(":stairsplus", "marble", "technic:marble", + {cracky=3, not_in_creative_inventory=1}, + {"technic_marble.png"}, + "Marble Stairs", + "Marble Slab", + "Marble Panel", + "Marble Microblock", + "marble") +register_stair_slab_panel_micro(":stairsplus", "marble_bricks", "technic:marble_bricks", + {cracky=3, not_in_creative_inventory=1}, + {"technic_marble_bricks.png"}, + "Marble Bricks Stairs", + "Marble Bricks Slab", + "Marble Bricks Panel", + "Marble Bricks Microblock", + "marble_bricks") +register_stair_slab_panel_micro(":stairsplus", "granite", "technic:granite", + {cracky=3, not_in_creative_inventory=1}, + {"technic_granite.png"}, + "Granite Stairs", + "Granite Slab", + "Granite Panel", + "Granite Microblock", + "granite") +register_stair_slab_panel_micro(":stairsplus", "obsidian", "technic:obsidian", + {cracky=3, not_in_creative_inventory=1}, + {"technic_obsidian.png"}, + "Obsidian Stairs", + "Obsidian Slab", + "Obsidian Panel", + "Obsidian Microblock", + "obsidian") +end + +minetest.register_node( "technic:mineral_diamond", { + description = "Diamond Ore", + tiles = { "default_stone.png^technic_mineral_diamond.png" }, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), + drop = 'craft "technic:diamond" 1', +}) + +minetest.register_craftitem( "technic:diamond", { + description = "Diamond", + inventory_image = "technic_diamond.png", + on_place_on_ground = minetest.craftitem_place_item, +}) + +minetest.register_node( "technic:mineral_uranium", { + description = "Uranium Ore", + tiles = { "default_stone.png^technic_mineral_uranium.png" }, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), + drop = 'craft "technic:uranium" 1', +}) + +minetest.register_craftitem( "technic:uranium", { + description = "Uranium", + inventory_image = "technic_uranium.png", + on_place_on_ground = minetest.craftitem_place_item, +}) + +minetest.register_node( "technic:mineral_chromium", { + description = "Chromium Ore", + tiles = { "default_stone.png^technic_mineral_chromium.png" }, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), + drop = 'craft "technic:chromium_lump" 1', +}) + +minetest.register_craftitem( "technic:chromium_lump", { + description = "Chromium Lump", + inventory_image = "technic_chromium_lump.png", + on_place_on_ground = minetest.craftitem_place_item, +}) + +minetest.register_craftitem( "technic:chromium_ingot", { + description = "Chromium Ingot", + inventory_image = "technic_chromium_ingot.png", + on_place_on_ground = minetest.craftitem_place_item, +}) + +minetest.register_craft({ + type = 'cooking', + output = "technic:chromium_ingot", + recipe = "technic:chromium_lump" + }) + + +minetest.register_node( "technic:mineral_zinc", { + description = "Zinc Ore", + tile_images = { "default_stone.png^technic_mineral_zinc.png" }, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), + drop = 'craft "technic:zinc_lump" 1', +}) + +minetest.register_craftitem( "technic:zinc_lump", { + description = "Zinc Lump", + inventory_image = "technic_zinc_lump.png", +}) + +minetest.register_craftitem( "technic:zinc_ingot", { + description = "Zinc Ingot", + inventory_image = "technic_zinc_ingot.png", +}) + +minetest.register_craftitem( "technic:stainless_steel_ingot", { + description = "Stainless Steel Ingot", + inventory_image = "technic_stainless_steel_ingot.png", +}) + +minetest.register_craftitem( "technic:brass_ingot", { + description = "Brass Ingot", + inventory_image = "technic_brass_ingot.png", +}) + +minetest.register_craft({ + type = 'cooking', + output = "technic:zinc_ingot", + recipe = "technic:zinc_lump" + }) + +minetest.register_on_generated(function(minp, maxp, seed) +default.generate_ore("technic:mineral_diamond", "default:stone", minp, maxp, seed+21, 1/11/11/11, 4, -31000, -450) +default.generate_ore("technic:mineral_uranium", "default:stone", minp, maxp, seed+22, 1/10/10/10, 3, -300, -80) +default.generate_ore("technic:mineral_chromium", "default:stone", minp, maxp, seed+23, 1/10/10/10, 2, -31000, -100) +default.generate_ore("technic:mineral_zinc", "default:stone", minp, maxp, seed+24, 1/9/9/9, 4, -31000, 2) +default.generate_ore("technic:marble", "default:stone", minp, maxp, seed+25, 1/128, 20, -100, -32) +default.generate_ore("technic:granite", "default:stone", minp, maxp, seed+25, 1/128, 15, -190, -90) + +end) + +function generate_stratus(name, wherein, ceilin, ceil, minp, maxp, seed, stratus_chance, radius, radius_y, deep, height_min, height_max) + if maxp.y < height_min or minp.y > height_max then + return + end + -- it will be only generate a stratus for every 100 m of area + local stratus_per_volume=1 + local area=45 + local y_min = math.max(minp.y, height_min) + local y_max = math.min(maxp.y, height_max) + local volume = ((maxp.x-minp.x+1)/area)*((y_max-y_min+1)/area)*((maxp.z-minp.z+1)/area) + local pr = PseudoRandom(seed) + local blocks = math.floor(stratus_per_volume*volume) + print(" <<"..dump(name)..">>"); + if blocks == 0 then + blocks = 1 + end + print(" blocks: "..dump(blocks).." in vol: "..dump(volume).." ("..dump(maxp.x-minp.x+1)..","..dump(y_max-y_min+1)..","..dump(maxp.z-minp.z+1)..")") + for i=1,blocks do + local x = pr:next(1,stratus_chance) + if x == 1 then + -- TODO deep + local y0=y_max-radius_y+1 + if y0 < y_min then + y0=y_min + else + y0=pr:next(y_min, y0) + end + local x0 = maxp.x-radius+1 + if x0 < minp.x then + x0 = minp.x + else + x0 = pr:next(minp.x, x0) + end + local z0 = maxp.z-radius+1 + if z0 < minp.z then + x0 = minp.z + else + z0 = pr:next(minp.z, z0) + end + local p0 = {x=x0, y=y0, z=z0} + local n = minetest.env:get_node(p0).name + local i = 0 + --print(" upper node "..n) + x = 0 + for k, v in ipairs(ceilin) do + if n == v then + x = 1 + break + end + end + if x == 1 then + -- search for the node to replace + --print(" Searching nodes to replace from "..dump(y0-1).." to "..dump(y_min)) + for y1=y0-1,y_min,-1 do + p0.y=y1 + n = minetest.env:get_node(p0).name + x = 0 + for k, v in ipairs(wherein) do + if n == v then + x = 1 + break + end + end + if x == 1 then + y0=y1-deep + if y0 < y_min then + y0 = y_min + end + break + end + end + local rx=pr:next(radius/2,radius)+1 + local rz=pr:next(radius/2,radius)+1 + local ry=pr:next(radius_y/2,radius_y)+1 + --print(" area of generation ("..dump(rx)..","..dump(rz)..","..dump(ry)..")") + for x1=0,rx do + rz = rz + 3 - pr:next(1,6) + if rz < 1 then + rz = 1 + end + for z1=pr:next(1,3),rz do + local ry0=ry+ pr:next(1,3) + for y1=pr:next(1,3),ry0 do + local x2 = x0+x1 + local y2 = y0+y1 + local z2 = z0+z1 + local p2 = {x=x2, y=y2, z=z2} + n = minetest.env:get_node(p2).name + x = 0 + for k, v in ipairs(wherein) do + if n == v then + x = 1 + break + end + end + if x == 1 then + if ceil == nil then + minetest.env:set_node(p2, {name=name}) + i = i +1 + else + local p3 = {p2.x,p2.y+1,p2} + if minetest.env:get_node(p3).name == ceil then + minetest.env:set_node(p2, {name=name}) + i = i +1 + end + end + end + end + end + end + print(" generated "..dump(i).." blocks in ("..dump(x0)..","..dump(y0)..","..dump(z0)..")") + end + + end + end + --print("generate_ore done") +end