start to rewrite api: register nodes

master
ademant 2019-07-18 22:59:52 +02:00
parent 4ad92ab151
commit f4289fe51c
2 changed files with 276 additions and 176 deletions

View File

@ -120,21 +120,49 @@ end
minerdream.register_ore=function(i,tdef)
minerdream.items[i]={}
minerdream.itemdef[i]=tdef
if minerdream.items[i] == nil then
local ore_name=tdef.name or i
tdef.ore_name=ore_name
tdef.ore_modname=minerdream.modname
if tdef.orig_modname then
tdef.ore_modname=tdef.orig_modname
end
local needs_mapgen=false
local mapgen_name=""
tdef.tier_string=""
tdef.tierd={}
if tdef.tier then
tdef.tierd=tier_definition[tostring(tdef.tier)]
tdef.tier_string=core.colorize("#A0A0A0", "tier: "..tdef.tier.." ("..tdef.tierd.desc..")")
minerdream.items[i].tierdef=table.copy(tier_definition[tostring(tdef.tier)])
tdef.tierdef=table.copy(tier_definition[tostring(tdef.tier)])
end
minerdream.items[ore_name]=tdef
-- register ore
if tdef.ore ~= nil then
tdef.ore.ore_name=ore_name
tdef.ore.lump_name=ore_name
if tdef.lump ~= nil then
tdef.ore.lump_name=tdef.lump.lump_name or ore.."_lump"
tdef.lump.lump_name=tdef.ore.lump_name
end
minerdream.register_node_ore(tdef,tdef.ore)
minerdream.register_node_mapgen(tdef,tdef.ore)
end
-- register ore
if tdef.poorore ~= nil then
tdef.poorore.ore_name=ore_name.."_poor"
tdef.poorore.lump_name=ore_name.."_poor"
if tdef.nugget ~= nil then
tdef.poorore.lump_name=tdef.nugget.lump_name or ore.."_nugget"
tdef.nugget.lump_name=tdef.poorore.lump_name
end
minerdream.register_node_ore(tdef,tdef.poorore)
minerdream.register_node_mapgen(tdef,tdef.poorore)
end
print(dump(tdef))
if tdef.ore.lump_name ~= tdef.ore.ore_name then
end
end
end
local commentfunction=function(i)
if true then
-- local tierd=tier_definition[tostring(tdef.tier)]
-- register ores within stone
if tdef.ore ~= nil and tdef.lump ~= nil then
@ -297,6 +325,52 @@ minerdream.register_ore=function(i,tdef)
end
end
end
end
minerdream.register_node_ore=function(tdef,odef)
if odef.lump_name == nil then
odef.lump_name=tdef.ore_name.."_lump"
end
if odef.wherein == nil then
odef.wherein="stone"
end
if odef.inventory_image == nil then
odef.inventory_image=minerdream.modname.."_"..odef.ore_name.."ore.png"
end
if odef.node_name == nil then
odef.node_name=tdef.ore_modname..":"..odef.ore_name
end
local ore_def={description=S(odef.ore_name:gsub("^%l", string.upper)).." "..S("ore"),
groups={cracky=odef.crack},
sound=default.node_sound_stone_defaults(),
drop=odef.lump_name
}
if tdef.groups.is_metall then
ore_def.groups["metall"..tdef.groups.is_metall]=tdef.groups.is_metall
end
if tdef.groups.is_mineral then
ore_def.groups["mineral"..tdef.groups.is_mineral]=tdef.groups.is_mineral
end
if odef.stackmax then
ore_def.stack_max=odef.stackmax
end
if tdef.tier then
ore_def.description=core.colorize("#00FF00", ore_def.description.."\n")..tdef.tier_string
end
odef.node_name={}
if odef.wherein==nil then
odef.wherein="stone"
end
for _,wi in pairs(odef.wherein) do
local oredef=table.copy(ore_def)
oredef.name=minerdream.modname..":"..wi.."_with_"..odef.ore_name
oredef.tiles={"default_"..wi..".png^"..odef.inventory_image}
odef.node_name[wi]=oredef.name
minetest.register_node(oredef.name,oredef)
end
end
minerdream.register_ore_lump=function(ore_name,tdef)
-- base config of ore found in normal stone
@ -445,6 +519,26 @@ minerdream.register_ore_lump=function(ore_name,tdef)
end
end
minerdream.register_node_mapgen=function(tdef,odef)
local wherein={"default:stone"}
if odef.wherein ~= nil then
wherein={}
for _,wi in pairs(odef.wherein) do
local tscar=odef.scarcity or 13
local map_def={ore_type = "scatter",
ore = odef.node_name[wi],
wherein = wi,
clust_scarcity = tscar * tscar * tscar,
clust_num_ores = odef.num_ores or 1,
clust_size = odef.clust_size or 1,
y_min = odef.y_min or (-31000),
y_max = odef.y_max or 0,
}
minetest.register_ore(map_def)
end
end
end
minerdream.register_mapgen=function(ore_name,tdef,mapgen_name,odef)
local wherein={"default:stone"}
if tdef.groups.in_desert ~= nil then -- check, if ore can be found in desert stone
@ -625,3 +719,5 @@ minerdream.register_dust=function(ore_name,tdef)
end
end
end

View File

@ -1,10 +1,9 @@
{"color":"835749D0",
"groups":{"drop_as_lump":1,
"groups":{
"has_bow":1,
"in_desert":1,
"is_metall":5},
"name":"ruthenium",
"ore_modname":"minerdream",
"block":{
"inventory_image":"minerdream_ruthenium_block.png"
},
@ -12,8 +11,14 @@
"inventory_image":"minerdream_ruthenium_ingot.png"
},
"ore":{
"wherein":["stone","desert_stone"],
"crack":4,
"inventory_image":"minerdream_ruthenium_ore.png"
"inventory_image":"minerdream_ruthenium_ore.png",
"clust_size":3,
"num_ores":3,
"scarcity":15,
"y_max":-500,
"y_min":-31000
},
"lump":{
"crack":4,
@ -27,14 +32,14 @@
"cooking_time":25,
"inventory_image":"minerdream_ruthenium_dust.png"
},
"mapgen":{
"clust_size":3,
"num_ores":3,
"scarcity":15,
"y_max":-500,
"y_min":-31000
},
"nugget":{
"crack":4,
"inventory_image":"minerdream_ruthenium_nugget.png",
"stack_max":99,
"cooking_time":32
},
"poorore":{
"wherein":["stone","desert_stone"],
"inventory_image":"minerdream_ruthenium_poorore.png",
"cracky":3,
"clust_size":3,
@ -43,7 +48,6 @@
"y_max":-250
},
"tier":5,
"tool_cotton":"steel_wire",
"tools":{"range":6.9,"maxlevel":3,"tool_stick":"minerdream:steelstick",
"axe":{"choppy":[1.5,0.5,0.3],"fleshy":11},
"shovel":{"crumbly":[0.8,0.3,0.15],"fleshy":9},
@ -51,7 +55,7 @@
"sword":{"fleshy":11,"snappy":[1.5,0.7,0.1]},
"pick":{"cracky":[1.5,0.7,0.25,3.5,5],"fleshy":10}
},
"3d_armor":{"cracky":2,"crumbly":1,"heal":8,"use":80,"snappy":3,"level":2,"choppy":2,
"3d_armor":{"cracky":2,"crumbly":1,"heal":8,"use":80,"snappy":3,"level":2,"choppy":2,"tool_cotton":"steel_wire",
"boots":{"fleshy":13.75,"gravity":-0.075,"jump":0.075,"speed":0.075},
"chestplate":{"fleshy":18.75,"gravity":-0.08,"jump":0.08,"speed":0.08},
"helmet":{"fleshy":13.75,"gravity":-0.08,"jump":0.08,"speed":0.08},