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