diff --git a/minerdream/api.lua b/minerdream/api.lua index 9a89828..0f86b58 100644 --- a/minerdream/api.lua +++ b/minerdream/api.lua @@ -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 diff --git a/minerdream/blocks.lua b/minerdream/blocks.lua index 6ca42e7..de4d55c 100644 --- a/minerdream/blocks.lua +++ b/minerdream/blocks.lua @@ -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) diff --git a/minerdream/config.lua b/minerdream/config.lua index 8878b38..7b9c5a2 100644 --- a/minerdream/config.lua +++ b/minerdream/config.lua @@ -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 diff --git a/minerdream/config/amethyst.json b/minerdream/config/amethyst.json index 0f3c95e..424de53 100644 --- a/minerdream/config/amethyst.json +++ b/minerdream/config/amethyst.json @@ -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", "", ""]] +} } } diff --git a/minerdream/config/aquamarine.json b/minerdream/config/aquamarine.json new file mode 100644 index 0000000..f846a48 --- /dev/null +++ b/minerdream/config/aquamarine.json @@ -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", "", ""]] +} +} +} diff --git a/minerdream/config/garnet.json b/minerdream/config/garnet.json new file mode 100644 index 0000000..9f4255f --- /dev/null +++ b/minerdream/config/garnet.json @@ -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", ""]] +} +} +} diff --git a/minerdream/config/jade.json b/minerdream/config/jade.json new file mode 100644 index 0000000..6c6b6f0 --- /dev/null +++ b/minerdream/config/jade.json @@ -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", ""]] +} +} +} diff --git a/minerdream/config/lapislazuli.json b/minerdream/config/lapislazuli.json new file mode 100644 index 0000000..54eb0c3 --- /dev/null +++ b/minerdream/config/lapislazuli.json @@ -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" +} +} diff --git a/minerdream/config/onyx.json b/minerdream/config/onyx.json new file mode 100644 index 0000000..b609f67 --- /dev/null +++ b/minerdream/config/onyx.json @@ -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" +} +} diff --git a/minerdream/config/spinel.json b/minerdream/config/spinel.json new file mode 100644 index 0000000..e103f62 --- /dev/null +++ b/minerdream/config/spinel.json @@ -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"]] +} +} +} diff --git a/minerdream/config/topaz.json b/minerdream/config/topaz.json new file mode 100644 index 0000000..e0dc218 --- /dev/null +++ b/minerdream/config/topaz.json @@ -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", ""]] +} +} +} diff --git a/minerdream/crafting.lua b/minerdream/crafting.lua index 184f9e8..da0f153 100644 --- a/minerdream/crafting.lua +++ b/minerdream/crafting.lua @@ -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', ''}, - - } -})