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.
This commit is contained in:
Vanessa Ezekowitz 2013-03-20 10:50:51 -04:00
parent 989b35f365
commit 6d1e9b4d61
4 changed files with 544 additions and 72 deletions

View File

@ -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",

94
technic/concrete.lua~ Normal file
View File

@ -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

View File

@ -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)

377
technic/ores.lua~ Normal file
View File

@ -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