forked from Wuzzy/realtest_mt5
226 lines
5.8 KiB
Lua
226 lines
5.8 KiB
Lua
realtest.registered_ores = {}
|
|
realtest.registered_ores_list = {}
|
|
local d_seed = 0
|
|
local function copytable(t)
|
|
local t2 = {}
|
|
for k,i in pairs(t) do
|
|
t2[k] = i
|
|
end
|
|
return t2
|
|
end
|
|
|
|
function realtest.register_ore(name, OreDef)
|
|
local ore = {
|
|
name = name,
|
|
description = OreDef.description or "Ore",
|
|
mineral = OreDef.mineral or "minerals:"..name:remove_modname_prefix(),
|
|
wherein = OreDef.wherein or {"default:stone"},
|
|
clust_scarcity = 1/(OreDef.chunks_per_volume or 1/3/3/3/2),
|
|
clust_size = OreDef.chunk_size or 3,
|
|
clust_num_ores = OreDef.ore_per_chunk or 10,
|
|
y_min = OreDef.y_min or -30912,
|
|
y_max = OreDef.y_max or 30912,
|
|
noise_threshold = OreDef.noise_min or 1.2,
|
|
noise_params = {offset=0, scale=1, spread={x=100, y=100, z=100}, octaves=3, persist=0.70, seed = OreDef.delta_seed or d_seed},
|
|
generate = true
|
|
}
|
|
d_seed = d_seed + 1
|
|
if OreDef.generate == false then
|
|
ore.generate = false
|
|
end
|
|
ore.particle_image = OreDef.particle_image or ore.mineral:gsub(":","_")..".png"
|
|
realtest.registered_ores[name] = ore
|
|
table.insert(realtest.registered_ores_list, name)
|
|
local name_ = name:gsub(":","_")
|
|
for i, wherein in ipairs(ore.wherein) do
|
|
local wherein_ = wherein:gsub(":","_")
|
|
local wherein_textures = {}
|
|
if minetest.registered_nodes[wherein].tiles or minetest.registered_nodes[wherein].tiles then
|
|
for _, texture in ipairs(minetest.registered_nodes[wherein].tiles) do
|
|
table.insert(wherein_textures, texture.."^"..name_..".png")
|
|
end
|
|
else
|
|
wherein_textures = {name_..".png"}
|
|
end
|
|
minetest.register_node(":"..name.."_in_"..wherein_, {
|
|
description = ore.description .. " Ore",
|
|
tiles = wherein_textures,
|
|
particle_image = {ore.particle_image},
|
|
groups = {cracky=3,drop_on_dig=1,ore=1,dropping_like_stone=1},
|
|
drop = {
|
|
max_items = 1,
|
|
items = {
|
|
{
|
|
items = {ore.mineral.." 2"},
|
|
rarity = 2
|
|
},
|
|
{
|
|
items = {ore.mineral}
|
|
}
|
|
}
|
|
},
|
|
sounds = default.node_sound_stone_defaults()
|
|
})
|
|
if ore.generate then
|
|
local oredef = copytable(ore)
|
|
oredef.ore = name.."_in_"..wherein_
|
|
oredef.ore_type = "scatter"
|
|
oredef.wherein = wherein
|
|
minetest.register_ore(oredef)
|
|
end
|
|
end
|
|
end
|
|
|
|
ores.list = {
|
|
-- "lignite",
|
|
-- "anthracite",
|
|
-- "bituminous_coal",
|
|
"magnetite",
|
|
"hematite",
|
|
"limonite",
|
|
"bismuthinite",
|
|
"cassiterite",
|
|
"galena",
|
|
"garnierite",
|
|
"malachite",
|
|
-- "native_copper",
|
|
-- "native_gold",
|
|
"native_silver",
|
|
"native_platinum",
|
|
"sphalerite",
|
|
"tetrahedrite",
|
|
"lazurite",
|
|
"bauxite",
|
|
"cinnabar",
|
|
"cryolite",
|
|
-- "graphite",
|
|
"gypsum",
|
|
"jet",
|
|
"kaolinite",
|
|
"kimberlite",
|
|
"olivine",
|
|
"petrified_wood",
|
|
-- "pitchblende",
|
|
"saltpeter",
|
|
"satin_spar",
|
|
"selenite",
|
|
"serpentine",
|
|
"sylvite",
|
|
"tenorite",
|
|
}
|
|
ores.desc_list = {
|
|
-- "Lignite",
|
|
-- "Anthracite",
|
|
-- "Bituminous Coal",
|
|
"Magnetite",
|
|
"Hematite",
|
|
"Limonite",
|
|
"Bismuthinite",
|
|
"Cassiterite",
|
|
"Galena",
|
|
"Garnierite",
|
|
"Malachite",
|
|
-- "Native Copper",
|
|
-- "Native Gold",
|
|
"Native Silver",
|
|
"Native Platinum",
|
|
"Sphalerite",
|
|
"Tetrahedrite",
|
|
"Lazurite",
|
|
"Bauxite",
|
|
'Cinnabar',
|
|
'Cryolite',
|
|
-- 'Graphite',
|
|
'Gypsum',
|
|
'Jet',
|
|
'Kaolinite',
|
|
'Kimberlite',
|
|
'Olivine',
|
|
'Petrified wood',
|
|
-- 'Pitchblende',
|
|
'Saltpeter',
|
|
'Satin Spar',
|
|
'Selenite',
|
|
'Serpentine',
|
|
'Sylvite',
|
|
'Tenorite',
|
|
}
|
|
|
|
for _, ore in ipairs(ores.list) do
|
|
realtest.register_ore("ores:"..ore, {description = ores.desc_list[_]})
|
|
end
|
|
|
|
realtest.register_ore("ores:native_copper", {
|
|
description = "Native Copper",
|
|
wherein = {"default:stone", "default:desert_stone"}
|
|
})
|
|
|
|
realtest.register_ore("ores:native_gold", {
|
|
description = "Native Gold",
|
|
wherein = {"default:stone", "default:desert_stone"}
|
|
})
|
|
|
|
realtest.register_ore("ores:lignite", {
|
|
description = "Lignite",
|
|
y_max = -500,
|
|
y_min = -3000,
|
|
ore_per_chunk = 15,
|
|
chunks_per_volume = 1/3/3/3,
|
|
})
|
|
|
|
realtest.register_ore("ores:bituminous_coal", {
|
|
description = "Bituminous Coal",
|
|
y_max = -3000,
|
|
y_min = -6000,
|
|
ore_per_chunk = 15,
|
|
chunks_per_volume = 1/3/3/3,
|
|
})
|
|
|
|
realtest.register_ore("ores:anthracite", {
|
|
description = "Anthracite",
|
|
y_max = -6000,
|
|
y_min = -8000,
|
|
ore_per_chunk = 15,
|
|
chunks_per_volume = 1/3/3/3,
|
|
})
|
|
|
|
realtest.register_ore("ores:graphite", {
|
|
description = "Graphite",
|
|
y_max = -8000,
|
|
ore_per_chunk = 15,
|
|
})
|
|
|
|
minetest.register_node("ores:sulfur", {
|
|
description = "Sulfur Ore",
|
|
tiles = {"default_stone.png^ores_sulfur.png"},
|
|
particle_image = {"minerals_sulfur.png"},
|
|
paramtype = "light",
|
|
groups = {cracky=3,drop_on_dig=1,dig_immediate=2},
|
|
drop = {
|
|
max_items = 1,
|
|
items = {
|
|
{
|
|
items = {"minerals:sulfur 3"},
|
|
rarity = 15,
|
|
},
|
|
{
|
|
items = {"minerals:sulfur 2"},
|
|
}
|
|
}
|
|
},
|
|
})
|
|
|
|
minetest.register_node("ores:peat", {
|
|
description = "Peat",
|
|
tiles = {"ores_peat.png"},
|
|
particle_image = {"ores_peat.png"},
|
|
groups = {crumbly=3,drop_on_dig=1,falling_node=1},
|
|
sounds = default.node_sound_dirt_defaults(),
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "ores:peat",
|
|
burntime = 15
|
|
})
|