gems with json

master
ademant 2019-07-21 14:05:32 +02:00
parent cc6c0087a9
commit b89ce3f466
12 changed files with 302 additions and 140 deletions

View File

@ -1,7 +1,8 @@
local S=minerdream.intllib
local agroup={helmet="armor_head",chestplate="armor_torso",leggings="armor_legs",boots="armor_feet",shield="armor_shield"}
local orelump={ore="lump",poorore="nugget"}
--local orelump={ore="lump",poorore="nugget"}
local orelump={lump="ore",nugget="poorore",gem="ore"}
local tier_definition = basic_functions.import_csv(minerdream.path.."/tiers.txt",{col_num={"name"},})
local local_item_insert=function(name,ttype,def)
@ -123,11 +124,15 @@ end
minerdream.register_ore=function(i,tdef)
-- only register, if not already defined
if minerdream.items[i] == nil then
-- generate ore name if not already given
local ore_name=tdef.name or i
tdef.ore_name=ore_name
tdef.ore_modname=minerdream.modname
if tdef.name == nil then tdef.name = i end
-- generate tier description
tdef.tier_string=""
tdef.tierd={}
if tdef.tier then
@ -135,16 +140,9 @@ minerdream.register_ore=function(i,tdef)
tdef.tier_string=core.colorize("#A0A0A0", "tier: "..tdef.tier.." ("..tdef.tierd.desc..")")
tdef.tierdef=table.copy(tier_definition[tostring(tdef.tier)])
end
minerdream.items[ore_name]=tdef
for o,l in pairs(orelump) do
-- register only ore
if tdef[o] ~= nil and tdef[l] == nil then
tdef[o].ore_name=ore_name
tdef[o].lump_name=ore_name
minerdream.register_node_ore(tdef,tdef[o],l)
minerdream.register_node_mapgen(tdef,tdef[o])
end
-- generate ore and lump for pairs given in orelump (e.g. ore <-> lump and poorore <-> nugget)
for l,o in pairs(orelump) do
-- register if ore and lump is defined
if tdef[o] ~= nil and tdef[l] ~= nil then
-- register ore
@ -175,14 +173,17 @@ minerdream.register_ore=function(i,tdef)
end
end
end
-- if lump and nugget defined, register craft recipe between them
if tdef.nugget ~= nil and tdef.lump ~= nil then
local_craft_stack(tdef.nugget.lump_node_name,tdef.lump.lump_node_name)
end
-- define ingot
if tdef.ingot ~= nil then
minerdream.register_ingot(tdef,tdef.ingot)
end
-- register block (9 ingot)
if tdef.block ~= nil then
minerdream.register_block(tdef)
end
@ -192,18 +193,24 @@ minerdream.register_ore=function(i,tdef)
minerdream.register_dust(tdef,tdef.dust)
end
-- register tools like shovel
if tdef.tools ~= nil then
minerdream.register_tools(tdef,tdef.tools)
end
-- register armor
if tdef["3d_armor"] ~= nil then
minerdream.register_3d_armor(tdef,tdef["3d_armor"])
end
-- register additional crafts if given in json file
if tdef.crafts ~= nil then
minerdream.register_crafts(tdef,tdef.crafts)
end
-- print(dump(tdef))
-- save definition to minerdream.items
minerdream.items[ore_name]=tdef
end
end
@ -216,6 +223,26 @@ minerdream.register_node_lump=function(tdef,ldef)
name=node_name,
inventory_image=ldef.inventory_image or node_name:gsub(":","_")..".png"
}
for _,def_item in pairs({"mesh"}) do
if ldef[def_item] ~= nil and lump_def[def_item] == nil then
lump_def[def_item]=ldef[def_item]
end
end
if lump_def.mesh ~= nil then
lump_def.drawtype = "mesh"
end
if ldef.is_lump_gemstone ~= nil then
lump_def.paramtype="light"
lump_def.walkable = "true"
lump_def.tiles = {lump_def.inventory_image}
lump_def.is_ground_content = true
lump_def.groups={snappy=3,dig_immidiate=3}
lump_def.selection_box = {type = "fixed",
fixed = {{-0.2, -0.5, -0.2, 0.2, -0.25, 0.2},},}
lump_def.node_box = {type = "fixed",
fixed = {{-0.2, -0.5, -0.2, 0.2, -0.25, 0.2},},}
end
minetest.register_craftitem(lump_def.name,lump_def)
if ldef.burntime ~= nil then
minetest.register_craft({
@ -268,7 +295,6 @@ minerdream.register_node_ore=function(tdef,odef,ltype)
end
if tdef.groups.is_gemstone ~= nil then
ore_def.description=ore_name:gsub("^%l", string.upper)
ore_def.paramtype="light"
ore_def.drawtype = "mesh"
ore_def.mesh = "gemstone_cubic_pillars.obj"
@ -300,6 +326,7 @@ minerdream.register_crafts=function(tdef,cdef)
print(dump(cdef))
for _,ccdef in pairs(cdef) do
if ccdef.output ~= nil and ccdef.recipe ~= nil then
local bcraft=true
-- analyse, if recipe refers to items in definition
for k,v in pairs(ccdef.recipe) do
if type(v) == "table" then
@ -307,8 +334,28 @@ minerdream.register_crafts=function(tdef,cdef)
if tdef[w] ~= nil then
if tdef[w].node_name ~= nil then
ccdef.recipe[k][l]=tdef[w].node_name
end end end end end
minetest.register_craft(ccdef)
end
end
if string.match(w,"@") then
local sw=string.split(w,"@")
if minerdream.items[sw[1]] ~= nil then
local ti=minerdream.items[sw[1]]
if ti[sw[2]] ~= nil then
local ni=ti[sw[2]].node_name or ti[sw[2]].item_name
if ni ~= nil then
ccdef.recipe[k][l]=ni
end
end
else
bcraft = false
table.insert(minerdream.delayed_crafts,cdef)
end
end end end end
if bcraft then
minetest.register_craft(ccdef)
else
print("craft not yet defined",dump(ccdef))
end
end
end
end

View File

@ -42,64 +42,6 @@ minetest.register_node("minerdream:slimeblock_brown", {
sounds = default.node_sound_sand_defaults(),
})
-------------ores--------------
minetest.register_node("minerdream:stone_with_onyx", {
description = "Onyx ore",
tiles = {"default_stone.png^minerdream_onyx_ore.png"},
groups = {cracky = 5},
drop = 'minerdream:onyx',
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("minerdream:stone_with_aquamarine", {
description = "Aquamarine ore",
tiles = {"minerdream_aquamarine_rock.png"},
groups = {cracky = 5},
drawtype = "mesh",
paramtype = "light",
sunlight_propagates = true,
mesh = "gemstone_cubic_pillars.obj",
drop = 'minerdream:aquamarine',
sounds = default.node_sound_stone_defaults(),
selection_box = {
type = "fixed",
fixed = {
{-0.4, -0.5, -0.4, 0.4, 0.0, 0.4},
},
},
node_box = {
type = "fixed",
fixed = {
{-0.4, -0.5, -0.4, 0.4, 0.0, 0.4},
},
},
})
minetest.register_node("minerdream:stone_with_topaz", {
description = "Topaz ore",
tiles = {"minerdream_topaz_rock.png"},
groups = {cracky = 5},
drawtype = "mesh",
paramtype = "light",
sunlight_propagates = true,
mesh = "gemstone_cubic.obj",
drop = 'minerdream:topaz',
sounds = default.node_sound_stone_defaults(),
selection_box = {
type = "fixed",
fixed = {
{-0.4, -0.5, -0.4, 0.4, 0.0, 0.4},
},
},
node_box = {
type = "fixed",
fixed = {
{-0.4, -0.5, -0.4, 0.4, 0.0, 0.4},
},
},
})
-----------------desert ores-----------------
minetest.register_node("minerdream:desertstone_with_richiron", {
@ -110,14 +52,6 @@ minetest.register_node("minerdream:desertstone_with_richiron", {
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("minerdream:desertstone_with_poorgold", {
description = "Poor desert gold ore",
tiles = {"default_desert_stone.png^minerdream_poorgold_ore.png"},
groups = {cracky = 3},
drop = 'minerdream:gold_nugget 1',
sounds = default.node_sound_stone_defaults(),
})
--------------marble---------------
local function register_marble_intern(color,crack)

View File

@ -5,6 +5,7 @@ minerdream.ingot_stack_max = tonumber(minetest.settings:get("minerdream.ingot_s
minerdream.lump_stack_max = tonumber(minetest.settings:get("minerdream.lump_stack_max")) or 999
minerdream.dust_cooking_time_reduce = tonumber(minetest.settings:get("minerdream.dust_cooking_time_reduce")) or 2
minerdream.tools_to_register = {"spear","pick","axe","sword","shovel","helmet","chestplate","leggings","boots","shield","bow"}
minerdream.delayed_crafts={}
minerdream.steel_wire="minerdream:steel_wire"
if minetest.get_modpath("basic_materials") == nil then

View File

@ -1,6 +1,7 @@
{"groups":{"has_block":1,
"has_brick":3,
"is_lump_gemstone":1,
"is_gemstone":1,
"is_mineral":5},
"name":"amethyst",
"ore_modname":"minerdream",
@ -9,11 +10,26 @@
"ore":{
"wherein":["stone","desert_stone"],
"crack":4,
"inventory_image":"minerdream_amthyst_gem.png",
"inventory_image":"minerdream_amethyst_ore.png",
"clust_size":1,
"num_ores":1,
"scarcity":15,
"y_max":-650,
"y_min":-31000
},
"gem":{
"crack":3,
"inventory_image":"minerdream_amethyst_gem.png",
"stack_max":99,
"mesh":"amethyst.obj"
},
"crafts":{
"staff":{
"output":"minerdream:amethyst_staff",
"recipe":[
["", "gem", "cobalt@ingot"],
["", "cobalt@ingot", "cobalt@ingot"],
["gem", "", ""]]
}
}
}

View File

@ -0,0 +1,35 @@
{"groups":{"has_block":1,
"has_brick":3,
"is_lump_gemstone":1,
"is_gemstone":1,
"is_mineral":5},
"name":"aquamarine",
"ore_modname":"minerdream",
"stackmax":"200",
"tier":6,
"ore":{
"wherein":["stone","desert_stone"],
"crack":5,
"inventory_image":"minerdream_aquamarine_ore.png",
"clust_size":1,
"num_ores":1,
"scarcity":16,
"y_max":-1700,
"y_min":-31000
},
"gem":{
"crack":4,
"inventory_image":"minerdream_aquamarine_gem.png",
"stack_max":200,
"mesh":"aquamarine.obj"
},
"crafts":{
"staff":{
"output":"minerdream:ocean_staff",
"recipe":[
["", "default:gold_ingot", "gem"],
["", "tantalum@ingot", "default:gold_ingot"],
["tantalum@ingot", "", ""]]
}
}
}

View File

@ -0,0 +1,35 @@
{"groups":{"has_block":1,
"has_brick":3,
"is_lump_gemstone":1,
"is_gemstone":1,
"is_mineral":5},
"name":"garnet",
"ore_modname":"minerdream",
"stackmax":"200",
"tier":5,
"ore":{
"wherein":["stone","desert_stone"],
"crack":4,
"inventory_image":"minerdream_garnet_ore.png",
"clust_size":1,
"num_ores":1,
"scarcity":15,
"y_max":-650,
"y_min":-31000
},
"gem":{
"crack":3,
"inventory_image":"minerdream_garnet_gem.png",
"stack_max":99,
"mesh":"garnet.obj"
},
"crafts":{
"staff":{
"output":"minerdream:accessory_protectionring",
"recipe":[
["", "gem", "gem"],
["default:gold_ingot", "", "gem"],
["default:gold_ingot", "default:gold_ingot", ""]]
}
}
}

View File

@ -0,0 +1,35 @@
{"groups":{"has_block":1,
"has_brick":3,
"is_lump_gemstone":1,
"is_gemstone":1,
"is_mineral":5},
"name":"jade",
"ore_modname":"minerdream",
"stackmax":"200",
"tier":5,
"ore":{
"wherein":["stone","desert_stone"],
"crack":4,
"inventory_image":"minerdream_jade_ore.png",
"clust_size":1,
"num_ores":1,
"scarcity":15,
"y_max":-650,
"y_min":-31000
},
"gem":{
"crack":3,
"inventory_image":"minerdream_jade_gem.png",
"stack_max":99,
"mesh":"jade.obj"
},
"crafts":{
"staff":{
"output":"minerdream:accessory_speedring",
"recipe":[
["", "gem", "gem"],
["default:silver_ingot", "", "gem"],
["default:silver_ingot", "default:silver_ingot", ""]]
}
}
}

View File

@ -0,0 +1,26 @@
{"groups":{"has_block":1,
"has_brick":3,
"is_lump_gemstone":1,
"is_gemstone":1,
"is_mineral":5},
"name":"lapislazuli",
"ore_modname":"minerdream",
"stackmax":"200",
"tier":2,
"ore":{
"wherein":["stone","desert_stone"],
"crack":3,
"inventory_image":"minerdream_lapislazuli_ore.png",
"clust_size":1,
"num_ores":1,
"scarcity":15,
"y_max":-50,
"y_min":-31000
},
"gem":{
"crack":3,
"inventory_image":"minerdream_lapislazuli_gem.png",
"stack_max":200,
"mesh":"lapislazuli.obj"
}
}

View File

@ -0,0 +1,26 @@
{"groups":{"has_block":1,
"has_brick":3,
"is_lump_gemstone":1,
"is_gemstone":1,
"is_mineral":5},
"name":"onyx",
"ore_modname":"minerdream",
"stackmax":"200",
"tier":6,
"ore":{
"wherein":["stone"],
"crack":4,
"inventory_image":"minerdream_onyx_ore.png",
"clust_size":1,
"num_ores":1,
"scarcity":16,
"y_max":-1700,
"y_min":-31000
},
"gem":{
"crack":3,
"inventory_image":"minerdream_onyx_gem.png",
"stack_max":200,
"mesh":"onyx.obj"
}
}

View File

@ -0,0 +1,33 @@
{"groups":{"is_lump_gemstone":1,
"is_gemstone":1,
"is_mineral":5},
"name":"spinel",
"ore_modname":"minerdream",
"stackmax":"200",
"tier":6,
"ore":{
"wherein":["stone","desert_stone"],
"crack":5,
"inventory_image":"minerdream_spinel_ore.png",
"clust_size":1,
"num_ores":1,
"scarcity":16,
"y_max":-1750,
"y_min":-31000
},
"gem":{
"crack":4,
"inventory_image":"minerdream_spinel_gem.png",
"stack_max":200,
"mesh":"spinel.obj"
},
"crafts":{
"staff":{
"output":"minerdream:pink_blaster",
"recipe":[
["", "gem", ""],
["gem", "rhodium@ingot", "rhodium@ingot"],
["", "", "rhodium@ingot"]]
}
}
}

View File

@ -0,0 +1,33 @@
{"groups":{"is_lump_gemstone":1,
"is_gemstone":1,
"is_mineral":5},
"name":"topaz",
"ore_modname":"minerdream",
"stackmax":"200",
"tier":6,
"ore":{
"wherein":["desert_stone"],
"crack":4,
"inventory_image":"minerdream_topaz_ore.png",
"clust_size":1,
"num_ores":1,
"scarcity":15,
"y_max":-1750,
"y_min":-31000
},
"gem":{
"crack":3,
"inventory_image":"minerdream_topaz_gem.png",
"stack_max":99,
"mesh":"topaz.obj"
},
"crafts":{
"staff":{
"output":"minerdream:golden_crystal_trisword",
"recipe":[
["", "gem", "gem"],
["rhodium@ingot", "default:mese", "gem"],
["rhodium@ingot", "rhodium@ingot", ""]]
}
}
}

View File

@ -297,16 +297,6 @@ minetest.register_craft({
})
------------unusualweapons and ammo------------
minetest.register_craft({
output = 'minerdream:pink_blaster',
recipe = {
{'', 'minerdream:spinel', ''},
{'minerdream:spinel', 'minerdream:rhodium_bar', 'minerdream:rhodium_bar'},
{'', '', 'minerdream:rhodium_bar'},
}
})
minetest.register_craft({
output = 'minerdream:dark_shuriken 50',
recipe = {
@ -316,24 +306,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = 'minerdream:amethyst_staff',
recipe = {
{'', 'minerdream:amethyst', 'minerdream:cobalt_bar'},
{'', 'minerdream:cobalt_bar', 'minerdream:cobalt_bar'},
{'minerdream:amethyst', '', ''},
}
})
minetest.register_craft({
output = 'minerdream:ocean_staff',
recipe = {
{'', 'default:gold_ingot', 'minerdream:aquamarine'},
{'', 'minerdream:tantalum_bar', 'default:gold_ingot'},
{'minerdream:tantalum_bar', '', ''},
}
})
minetest.register_craft({
output = 'minerdream:arrow 20',
recipe = {
@ -392,34 +364,3 @@ minetest.register_craft({
{'', '', 'minerdream:lead_bar'},
}
})
minetest.register_craft({
output = 'minerdream:golden_crystal_trisword',
recipe = {
{'', 'minerdream:topaz', 'minerdream:topaz'},
{'minerdream:rhodium_bar', 'default:mese', 'minerdream:topaz'},
{'minerdream:rhodium_bar', 'minerdream:rhodium_bar', ''},
}
})
----------------------accessories---------------
minetest.register_craft({
output = 'minerdream:accessory_speedring',
recipe = {
{'', 'minerdream:jade', 'minerdream:jade'},
{'minerdream:silver_bar', '', 'minerdream:jade'},
{'minerdream:silver_bar', 'minerdream:silver_bar', ''},
}
})
minetest.register_craft({
output = 'minerdream:accessory_protectionring',
recipe = {
{'', 'minerdream:garnet', 'minerdream:garnet'},
{'default:gold_ingot', '', 'minerdream:garnet'},
{'default:gold_ingot', 'default:gold_ingot', ''},
}
})