diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua deleted file mode 100644 index c4f353a1..00000000 --- a/mods/default/crafting.lua +++ /dev/null @@ -1,742 +0,0 @@ --- mods/default/crafting.lua - -minetest.register_craft({ - output = 'default:wood 4', - recipe = { - {'default:tree'}, - } -}) - -minetest.register_craft({ - output = 'default:junglewood 4', - recipe = { - {'default:jungletree'}, - } -}) - -minetest.register_craft({ - output = 'default:stick 4', - recipe = { - {'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:fence_wood 2', - recipe = { - {'group:stick', 'group:stick', 'group:stick'}, - {'group:stick', 'group:stick', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:sign_wall', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:torch 4', - recipe = { - {'default:coal_lump'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:pick_wood', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_stone', - recipe = { - {'group:stone', 'group:stone', 'group:stone'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_steel', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_bronze', - recipe = { - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_mese', - recipe = { - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_diamond', - recipe = { - {'default:diamond', 'default:diamond', 'default:diamond'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_wood', - recipe = { - {'group:wood'}, - {'group:stick'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_stone', - recipe = { - {'group:stone'}, - {'group:stick'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_steel', - recipe = { - {'default:steel_ingot'}, - {'group:stick'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_bronze', - recipe = { - {'default:bronze_ingot'}, - {'group:stick'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_mese', - recipe = { - {'default:mese_crystal'}, - {'group:stick'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_diamond', - recipe = { - {'default:diamond'}, - {'group:stick'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_wood', - recipe = { - {'group:wood', 'group:wood'}, - {'group:wood', 'group:stick'}, - {'', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_stone', - recipe = { - {'group:stone', 'group:stone'}, - {'group:stone', 'group:stick'}, - {'', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_steel', - recipe = { - {'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'group:stick'}, - {'', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_bronze', - recipe = { - {'default:bronze_ingot', 'default:bronze_ingot'}, - {'default:bronze_ingot', 'group:stick'}, - {'', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_mese', - recipe = { - {'default:mese_crystal', 'default:mese_crystal'}, - {'default:mese_crystal', 'group:stick'}, - {'', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_diamond', - recipe = { - {'default:diamond', 'default:diamond'}, - {'default:diamond', 'group:stick'}, - {'', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_wood', - recipe = { - {'group:wood'}, - {'group:wood'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_stone', - recipe = { - {'group:stone'}, - {'group:stone'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_steel', - recipe = { - {'default:steel_ingot'}, - {'default:steel_ingot'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_bronze', - recipe = { - {'default:bronze_ingot'}, - {'default:bronze_ingot'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_mese', - recipe = { - {'default:mese_crystal'}, - {'default:mese_crystal'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_diamond', - recipe = { - {'default:diamond'}, - {'default:diamond'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:rail 15', - recipe = { - {'default:steel_ingot', '', 'default:steel_ingot'}, - {'default:steel_ingot', 'group:stick', 'default:steel_ingot'}, - {'default:steel_ingot', '', 'default:steel_ingot'}, - } -}) - -minetest.register_craft({ - output = 'default:chest', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', '', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:chest_locked', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'default:steel_ingot', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:furnace', - recipe = { - {'group:stone', 'group:stone', 'group:stone'}, - {'group:stone', '', 'group:stone'}, - {'group:stone', 'group:stone', 'group:stone'}, - } -}) - -minetest.register_craft({ - type = "shapeless", - output = "default:bronze_ingot", - recipe = {"default:steel_ingot", "default:copper_ingot"}, -}) - -minetest.register_craft({ - output = 'default:coalblock', - recipe = { - {'default:coal_lump', 'default:coal_lump', 'default:coal_lump'}, - {'default:coal_lump', 'default:coal_lump', 'default:coal_lump'}, - {'default:coal_lump', 'default:coal_lump', 'default:coal_lump'}, - } -}) - -minetest.register_craft({ - output = 'default:coal_lump 9', - recipe = { - {'default:coalblock'}, - } -}) - -minetest.register_craft({ - output = 'default:steelblock', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - } -}) - -minetest.register_craft({ - output = 'default:steel_ingot 9', - recipe = { - {'default:steelblock'}, - } -}) - -minetest.register_craft({ - output = 'default:copperblock', - recipe = { - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, - } -}) - -minetest.register_craft({ - output = 'default:copper_ingot 9', - recipe = { - {'default:copperblock'}, - } -}) - -minetest.register_craft({ - output = 'default:bronzeblock', - recipe = { - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - } -}) - -minetest.register_craft({ - output = 'default:bronze_ingot 9', - recipe = { - {'default:bronzeblock'}, - } -}) - -minetest.register_craft({ - output = 'default:goldblock', - recipe = { - {'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'}, - {'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'}, - {'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'}, - } -}) - -minetest.register_craft({ - output = 'default:gold_ingot 9', - recipe = { - {'default:goldblock'}, - } -}) - -minetest.register_craft({ - output = 'default:diamondblock', - recipe = { - {'default:diamond', 'default:diamond', 'default:diamond'}, - {'default:diamond', 'default:diamond', 'default:diamond'}, - {'default:diamond', 'default:diamond', 'default:diamond'}, - } -}) - -minetest.register_craft({ - output = 'default:diamond 9', - recipe = { - {'default:diamondblock'}, - } -}) - -minetest.register_craft({ - output = 'default:sandstone', - recipe = { - {'group:sand', 'group:sand'}, - {'group:sand', 'group:sand'}, - } -}) - -minetest.register_craft({ - output = 'default:sand 4', - recipe = { - {'default:sandstone'}, - } -}) - -minetest.register_craft({ - output = 'default:sandstonebrick', - recipe = { - {'default:sandstone', 'default:sandstone'}, - {'default:sandstone', 'default:sandstone'}, - } -}) - -minetest.register_craft({ - output = 'default:clay', - recipe = { - {'default:clay_lump', 'default:clay_lump'}, - {'default:clay_lump', 'default:clay_lump'}, - } -}) - -minetest.register_craft({ - output = 'default:brick', - recipe = { - {'default:clay_brick', 'default:clay_brick'}, - {'default:clay_brick', 'default:clay_brick'}, - } -}) - -minetest.register_craft({ - output = 'default:clay_brick 4', - recipe = { - {'default:brick'}, - } -}) - -minetest.register_craft({ - output = 'default:paper', - recipe = { - {'default:papyrus', 'default:papyrus', 'default:papyrus'}, - } -}) - -minetest.register_craft({ - output = 'default:book', - recipe = { - {'default:paper'}, - {'default:paper'}, - {'default:paper'}, - } -}) - -minetest.register_craft({ - output = 'default:bookshelf', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'default:book', 'default:book', 'default:book'}, - {'group:wood', 'group:wood', 'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:ladder', - recipe = { - {'group:stick', '', 'group:stick'}, - {'group:stick', 'group:stick', 'group:stick'}, - {'group:stick', '', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:mese', - recipe = { - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - } -}) - -minetest.register_craft({ - output = 'default:mese_crystal 9', - recipe = { - {'default:mese'}, - } -}) - -minetest.register_craft({ - output = 'default:mese_crystal_fragment 9', - recipe = { - {'default:mese_crystal'}, - } -}) - -minetest.register_craft({ - output = 'default:obsidian_shard 9', - recipe = { - {'default:obsidian'} - } -}) - -minetest.register_craft({ - output = 'default:obsidian', - recipe = { - {'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'}, - {'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'}, - {'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'}, - } -}) - -minetest.register_craft({ - output = 'default:stonebrick', - recipe = { - {'default:stone', 'default:stone'}, - {'default:stone', 'default:stone'}, - } -}) - -minetest.register_craft({ - output = 'default:desert_stonebrick', - recipe = { - {'default:desert_stone', 'default:desert_stone'}, - {'default:desert_stone', 'default:desert_stone'}, - } -}) - -minetest.register_craft({ - output = 'default:snowblock', - recipe = { - {'default:snow', 'default:snow', 'default:snow'}, - {'default:snow', 'default:snow', 'default:snow'}, - {'default:snow', 'default:snow', 'default:snow'}, - } -}) - -minetest.register_craft({ - output = 'default:snow 9', - recipe = { - {'default:snowblock'}, - } -}) - --- --- Crafting (tool repair) --- -minetest.register_craft({ - type = "toolrepair", - additional_wear = -0.02, -}) - --- --- Cooking recipes --- - -minetest.register_craft({ - type = "cooking", - output = "default:glass", - recipe = "group:sand", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:obsidian_glass", - recipe = "default:obsidian_shard", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:stone", - recipe = "default:cobble", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:steel_ingot", - recipe = "default:iron_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:copper_ingot", - recipe = "default:copper_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:gold_ingot", - recipe = "default:gold_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:clay_brick", - recipe = "default:clay_lump", -}) - --- --- Fuels --- - -minetest.register_craft({ - type = "fuel", - recipe = "group:tree", - burntime = 30, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:junglegrass", - burntime = 2, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "group:leaves", - burntime = 1, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:cactus", - burntime = 15, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:papyrus", - burntime = 1, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:bookshelf", - burntime = 30, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:fence_wood", - burntime = 15, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:ladder", - burntime = 5, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "group:wood", - burntime = 7, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:lava_source", - burntime = 60, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:torch", - burntime = 4, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:sign_wall", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:chest", - burntime = 30, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:chest_locked", - burntime = 30, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:nyancat", - burntime = 1, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:nyancat_rainbow", - burntime = 1, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:sapling", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:apple", - burntime = 3, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:coal_lump", - burntime = 40, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:coalblock", - burntime = 370, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:junglesapling", - burntime = 10, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:grass_1", - burntime = 2, -}) diff --git a/mods/default/functions.lua b/mods/default/functions.lua deleted file mode 100644 index 4f5f85d4..00000000 --- a/mods/default/functions.lua +++ /dev/null @@ -1,367 +0,0 @@ --- mods/default/functions.lua - --- --- Sounds --- - -function default.node_sound_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name="", gain=1.0} - table.dug = table.dug or - {name="default_dug_node", gain=0.25} - table.place = table.place or - {name="default_place_node_hard", gain=1.0} - return table -end - -function default.node_sound_stone_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name="default_hard_footstep", gain=0.5} - table.dug = table.dug or - {name="default_hard_footstep", gain=1.0} - default.node_sound_defaults(table) - return table -end - -function default.node_sound_dirt_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name="default_dirt_footstep", gain=1.0} - table.dug = table.dug or - {name="default_dirt_footstep", gain=1.5} - table.place = table.place or - {name="default_place_node", gain=1.0} - default.node_sound_defaults(table) - return table -end - -function default.node_sound_sand_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name="default_sand_footstep", gain=0.5} - table.dug = table.dug or - {name="default_sand_footstep", gain=1.0} - table.place = table.place or - {name="default_place_node", gain=1.0} - default.node_sound_defaults(table) - return table -end - -function default.node_sound_wood_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name="default_wood_footstep", gain=0.5} - table.dug = table.dug or - {name="default_wood_footstep", gain=1.0} - default.node_sound_defaults(table) - return table -end - -function default.node_sound_leaves_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name="default_grass_footstep", gain=0.35} - table.dug = table.dug or - {name="default_grass_footstep", gain=0.85} - table.dig = table.dig or - {name="default_dig_crumbly", gain=0.4} - table.place = table.place or - {name="default_place_node", gain=1.0} - default.node_sound_defaults(table) - return table -end - -function default.node_sound_glass_defaults(table) - table = table or {} - table.footstep = table.footstep or - {name="default_glass_footstep", gain=0.5} - table.dug = table.dug or - {name="default_break_glass", gain=1.0} - default.node_sound_defaults(table) - return table -end - --- --- Legacy --- - -function default.spawn_falling_node(p, nodename) - spawn_falling_node(p, nodename) -end - --- Horrible crap to support old code --- Don't use this and never do what this does, it's completely wrong! --- (More specifically, the client and the C++ code doesn't get the group) -function default.register_falling_node(nodename, texture) - minetest.log("error", debug.traceback()) - minetest.log('error', "WARNING: default.register_falling_node is deprecated") - if minetest.registered_nodes[nodename] then - minetest.registered_nodes[nodename].groups.falling_node = 1 - end -end - --- --- Global callbacks --- - --- Global environment step function -function on_step(dtime) - -- print("on_step") -end -minetest.register_globalstep(on_step) - -function on_placenode(p, node) - --print("on_placenode") -end -minetest.register_on_placenode(on_placenode) - -function on_dignode(p, node) - --print("on_dignode") -end -minetest.register_on_dignode(on_dignode) - -function on_punchnode(p, node) -end -minetest.register_on_punchnode(on_punchnode) - - --- --- Grow trees --- - -minetest.register_abm({ - nodenames = {"default:sapling"}, - interval = 10, - chance = 50, - action = function(pos, node) - local nu = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name - local is_soil = minetest.get_item_group(nu, "soil") - if is_soil == 0 then - return - end - - minetest.log("action", "A sapling grows into a tree at "..minetest.pos_to_string(pos)) - local vm = minetest.get_voxel_manip() - local minp, maxp = vm:read_from_map({x=pos.x-16, y=pos.y, z=pos.z-16}, {x=pos.x+16, y=pos.y+16, z=pos.z+16}) - local a = VoxelArea:new{MinEdge=minp, MaxEdge=maxp} - local data = vm:get_data() - default.grow_tree(data, a, pos, math.random(1, 4) == 1, math.random(1,100000)) - vm:set_data(data) - vm:write_to_map(data) - vm:update_map() - end -}) - -minetest.register_abm({ - nodenames = {"default:junglesapling"}, - interval = 10, - chance = 50, - action = function(pos, node) - local nu = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name - local is_soil = minetest.get_item_group(nu, "soil") - if is_soil == 0 then - return - end - - minetest.log("action", "A jungle sapling grows into a tree at "..minetest.pos_to_string(pos)) - local vm = minetest.get_voxel_manip() - local minp, maxp = vm:read_from_map({x=pos.x-16, y=pos.y-1, z=pos.z-16}, {x=pos.x+16, y=pos.y+16, z=pos.z+16}) - local a = VoxelArea:new{MinEdge=minp, MaxEdge=maxp} - local data = vm:get_data() - default.grow_jungletree(data, a, pos, math.random(1,100000)) - vm:set_data(data) - vm:write_to_map(data) - vm:update_map() - end -}) - --- --- Lavacooling --- - -default.cool_lava_source = function(pos) - minetest.set_node(pos, {name="default:obsidian"}) - minetest.sound_play("default_cool_lava", {pos = pos, gain = 0.25}) -end - -default.cool_lava_flowing = function(pos) - minetest.set_node(pos, {name="default:stone"}) - minetest.sound_play("default_cool_lava", {pos = pos, gain = 0.25}) -end - -minetest.register_abm({ - nodenames = {"default:lava_flowing"}, - neighbors = {"group:water"}, - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - default.cool_lava_flowing(pos, node, active_object_count, active_object_count_wider) - end, -}) - -minetest.register_abm({ - nodenames = {"default:lava_source"}, - neighbors = {"group:water"}, - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - default.cool_lava_source(pos, node, active_object_count, active_object_count_wider) - end, -}) - --- --- Papyrus and cactus growing --- - -minetest.register_abm({ - nodenames = {"default:cactus"}, - neighbors = {"group:sand"}, - interval = 50, - chance = 20, - action = function(pos, node) - pos.y = pos.y-1 - local name = minetest.get_node(pos).name - if minetest.get_item_group(name, "sand") ~= 0 then - pos.y = pos.y+1 - local height = 0 - while minetest.get_node(pos).name == "default:cactus" and height < 4 do - height = height+1 - pos.y = pos.y+1 - end - if height < 4 then - if minetest.get_node(pos).name == "air" then - minetest.set_node(pos, {name="default:cactus"}) - end - end - end - end, -}) - -minetest.register_abm({ - nodenames = {"default:papyrus"}, - neighbors = {"default:dirt", "default:dirt_with_grass"}, - interval = 50, - chance = 20, - action = function(pos, node) - pos.y = pos.y-1 - local name = minetest.get_node(pos).name - if name == "default:dirt" or name == "default:dirt_with_grass" then - if minetest.find_node_near(pos, 3, {"group:water"}) == nil then - return - end - pos.y = pos.y+1 - local height = 0 - while minetest.get_node(pos).name == "default:papyrus" and height < 4 do - height = height+1 - pos.y = pos.y+1 - end - if height < 4 then - if minetest.get_node(pos).name == "air" then - minetest.set_node(pos, {name="default:papyrus"}) - end - end - end - end, -}) - --- --- Leafdecay --- - --- To enable leaf decay for a node, add it to the "leafdecay" group. --- --- The rating of the group determines how far from a node in the group "tree" --- the node can be without decaying. --- --- If param2 of the node is ~= 0, the node will always be preserved. Thus, if --- the player places a node of that kind, you will want to set param2=1 or so. --- --- If the node is in the leafdecay_drop group then the it will always be dropped --- as an item - -default.leafdecay_trunk_cache = {} -default.leafdecay_enable_cache = true --- Spread the load of finding trunks -default.leafdecay_trunk_find_allow_accumulator = 0 - -minetest.register_globalstep(function(dtime) - local finds_per_second = 5000 - default.leafdecay_trunk_find_allow_accumulator = - math.floor(dtime * finds_per_second) -end) - -minetest.register_abm({ - nodenames = {"group:leafdecay"}, - neighbors = {"air", "group:liquid"}, - -- A low interval and a high inverse chance spreads the load - interval = 2, - chance = 5, - - action = function(p0, node, _, _) - --print("leafdecay ABM at "..p0.x..", "..p0.y..", "..p0.z..")") - local do_preserve = false - local d = minetest.registered_nodes[node.name].groups.leafdecay - if not d or d == 0 then - --print("not groups.leafdecay") - return - end - local n0 = minetest.get_node(p0) - if n0.param2 ~= 0 then - --print("param2 ~= 0") - return - end - local p0_hash = nil - if default.leafdecay_enable_cache then - p0_hash = minetest.hash_node_position(p0) - local trunkp = default.leafdecay_trunk_cache[p0_hash] - if trunkp then - local n = minetest.get_node(trunkp) - local reg = minetest.registered_nodes[n.name] - -- Assume ignore is a trunk, to make the thing work at the border of the active area - if n.name == "ignore" or (reg and reg.groups.tree and reg.groups.tree ~= 0) then - --print("cached trunk still exists") - return - end - --print("cached trunk is invalid") - -- Cache is invalid - table.remove(default.leafdecay_trunk_cache, p0_hash) - end - end - if default.leafdecay_trunk_find_allow_accumulator <= 0 then - return - end - default.leafdecay_trunk_find_allow_accumulator = - default.leafdecay_trunk_find_allow_accumulator - 1 - -- Assume ignore is a trunk, to make the thing work at the border of the active area - local p1 = minetest.find_node_near(p0, d, {"ignore", "group:tree"}) - if p1 then - do_preserve = true - if default.leafdecay_enable_cache then - --print("caching trunk") - -- Cache the trunk - default.leafdecay_trunk_cache[p0_hash] = p1 - end - end - if not do_preserve then - -- Drop stuff other than the node itself - itemstacks = minetest.get_node_drops(n0.name) - for _, itemname in ipairs(itemstacks) do - if minetest.get_item_group(n0.name, "leafdecay_drop") ~= 0 or - itemname ~= n0.name then - local p_drop = { - x = p0.x - 0.5 + math.random(), - y = p0.y - 0.5 + math.random(), - z = p0.z - 0.5 + math.random(), - } - minetest.add_item(p_drop, itemname) - end - end - -- Remove node - minetest.remove_node(p0) - nodeupdate(p0) - end - end -}) - diff --git a/mods/default/init.lua b/mods/default/init.lua index d485150d..e987cdd7 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -1,21 +1,111 @@ -- Minetest 0.4 mod: default -- See README.txt for licensing and other information. --- The API documentation in here was moved into doc/lua_api.txt - WATER_ALPHA = 160 WATER_VISC = 1 LAVA_VISC = 7 LIGHT_MAX = 14 --- Definitions made by this mod that other mods can use too default = {} +-- Hand +minetest.register_item(":", { + type = "none", + wield_image = "wieldhand.png", + wield_scale = {x=1,y=1,z=2.5}, + tool_capabilities = { + full_punch_interval = 0.9, + max_drop_level = 0, + groupcaps = { + crumbly = {times={[2]=3.00, [3]=0.70}, uses=0, maxlevel=1}, + snappy = {times={[3]=0.40}, uses=0, maxlevel=1}, + oddly_breakable_by_hand = {times={[1]=3.50,[2]=2.00,[3]=0.70}, uses=0} + }, + damage_groups = {fleshy=1}, + } +}) + +-- Sounds +function default.node_sound_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="", gain=1.0} + table.dug = table.dug or + {name="default_dug_node", gain=0.25} + table.place = table.place or + {name="default_place_node_hard", gain=1.0} + return table +end + +function default.node_sound_stone_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_hard_footstep", gain=0.5} + table.dug = table.dug or + {name="default_hard_footstep", gain=1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_dirt_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_dirt_footstep", gain=1.0} + table.dug = table.dug or + {name="default_dirt_footstep", gain=1.5} + table.place = table.place or + {name="default_place_node", gain=1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_sand_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_sand_footstep", gain=0.5} + table.dug = table.dug or + {name="default_sand_footstep", gain=1.0} + table.place = table.place or + {name="default_place_node", gain=1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_wood_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_wood_footstep", gain=0.5} + table.dug = table.dug or + {name="default_wood_footstep", gain=1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_leaves_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_grass_footstep", gain=0.35} + table.dug = table.dug or + {name="default_grass_footstep", gain=0.85} + table.dig = table.dig or + {name="default_dig_crumbly", gain=0.4} + table.place = table.place or + {name="default_place_node", gain=1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_glass_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_glass_footstep", gain=0.5} + table.dug = table.dug or + {name="default_break_glass", gain=1.0} + default.node_sound_defaults(table) + return table +end + -- Load files -dofile(minetest.get_modpath("default").."/functions.lua") dofile(minetest.get_modpath("default").."/nodes.lua") -dofile(minetest.get_modpath("default").."/tools.lua") dofile(minetest.get_modpath("default").."/craftitems.lua") -dofile(minetest.get_modpath("default").."/crafting.lua") dofile(minetest.get_modpath("default").."/player.lua") -dofile(minetest.get_modpath("default").."/trees.lua") diff --git a/mods/default/tools.lua b/mods/default/tools.lua deleted file mode 100644 index 25cf81b1..00000000 --- a/mods/default/tools.lua +++ /dev/null @@ -1,332 +0,0 @@ --- mods/default/tools.lua - --- The hand -minetest.register_item(":", { - type = "none", - wield_image = "wieldhand.png", - wield_scale = {x=1,y=1,z=2.5}, - tool_capabilities = { - full_punch_interval = 0.9, - max_drop_level = 0, - groupcaps = { - crumbly = {times={[2]=3.00, [3]=0.70}, uses=0, maxlevel=1}, - snappy = {times={[3]=0.40}, uses=0, maxlevel=1}, - oddly_breakable_by_hand = {times={[1]=3.50,[2]=2.00,[3]=0.70}, uses=0} - }, - damage_groups = {fleshy=1}, - } -}) - --- --- Picks --- - -minetest.register_tool("default:pick_wood", { - description = "Wooden Pickaxe", - inventory_image = "default_tool_woodpick.png", - tool_capabilities = { - full_punch_interval = 1.2, - max_drop_level=0, - groupcaps={ - cracky = {times={[3]=1.60}, uses=10, maxlevel=1}, - }, - damage_groups = {fleshy=2}, - }, -}) -minetest.register_tool("default:pick_stone", { - description = "Stone Pickaxe", - inventory_image = "default_tool_stonepick.png", - tool_capabilities = { - full_punch_interval = 1.3, - max_drop_level=0, - groupcaps={ - cracky = {times={[2]=2.0, [3]=1.20}, uses=20, maxlevel=1}, - }, - damage_groups = {fleshy=3}, - }, -}) -minetest.register_tool("default:pick_steel", { - description = "Steel Pickaxe", - inventory_image = "default_tool_steelpick.png", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=1, - groupcaps={ - cracky = {times={[1]=4.00, [2]=1.60, [3]=0.80}, uses=20, maxlevel=2}, - }, - damage_groups = {fleshy=4}, - }, -}) -minetest.register_tool("default:pick_bronze", { - description = "Bronze Pickaxe", - inventory_image = "default_tool_bronzepick.png", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=1, - groupcaps={ - cracky = {times={[1]=4.00, [2]=1.60, [3]=0.80}, uses=30, maxlevel=2}, - }, - damage_groups = {fleshy=4}, - }, -}) -minetest.register_tool("default:pick_mese", { - description = "Mese Pickaxe", - inventory_image = "default_tool_mesepick.png", - tool_capabilities = { - full_punch_interval = 0.9, - max_drop_level=3, - groupcaps={ - cracky = {times={[1]=2.4, [2]=1.2, [3]=0.60}, uses=20, maxlevel=3}, - }, - damage_groups = {fleshy=5}, - }, -}) -minetest.register_tool("default:pick_diamond", { - description = "Diamond Pickaxe", - inventory_image = "default_tool_diamondpick.png", - tool_capabilities = { - full_punch_interval = 0.9, - max_drop_level=3, - groupcaps={ - cracky = {times={[1]=2.0, [2]=1.0, [3]=0.50}, uses=30, maxlevel=3}, - }, - damage_groups = {fleshy=5}, - }, -}) - --- --- Shovels --- - -minetest.register_tool("default:shovel_wood", { - description = "Wooden Shovel", - inventory_image = "default_tool_woodshovel.png", - wield_image = "default_tool_woodshovel.png^[transformR90", - tool_capabilities = { - full_punch_interval = 1.2, - max_drop_level=0, - groupcaps={ - crumbly = {times={[1]=3.00, [2]=1.60, [3]=0.60}, uses=10, maxlevel=1}, - }, - damage_groups = {fleshy=2}, - }, -}) -minetest.register_tool("default:shovel_stone", { - description = "Stone Shovel", - inventory_image = "default_tool_stoneshovel.png", - wield_image = "default_tool_stoneshovel.png^[transformR90", - tool_capabilities = { - full_punch_interval = 1.4, - max_drop_level=0, - groupcaps={ - crumbly = {times={[1]=1.80, [2]=1.20, [3]=0.50}, uses=20, maxlevel=1}, - }, - damage_groups = {fleshy=2}, - }, -}) -minetest.register_tool("default:shovel_steel", { - description = "Steel Shovel", - inventory_image = "default_tool_steelshovel.png", - wield_image = "default_tool_steelshovel.png^[transformR90", - tool_capabilities = { - full_punch_interval = 1.1, - max_drop_level=1, - groupcaps={ - crumbly = {times={[1]=1.50, [2]=0.90, [3]=0.40}, uses=30, maxlevel=2}, - }, - damage_groups = {fleshy=3}, - }, -}) -minetest.register_tool("default:shovel_bronze", { - description = "Bronze Shovel", - inventory_image = "default_tool_bronzeshovel.png", - wield_image = "default_tool_bronzeshovel.png^[transformR90", - tool_capabilities = { - full_punch_interval = 1.1, - max_drop_level=1, - groupcaps={ - crumbly = {times={[1]=1.50, [2]=0.90, [3]=0.40}, uses=40, maxlevel=2}, - }, - damage_groups = {fleshy=3}, - }, -}) -minetest.register_tool("default:shovel_mese", { - description = "Mese Shovel", - inventory_image = "default_tool_meseshovel.png", - wield_image = "default_tool_meseshovel.png^[transformR90", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=3, - groupcaps={ - crumbly = {times={[1]=1.20, [2]=0.60, [3]=0.30}, uses=20, maxlevel=3}, - }, - damage_groups = {fleshy=4}, - }, -}) -minetest.register_tool("default:shovel_diamond", { - description = "Diamond Shovel", - inventory_image = "default_tool_diamondshovel.png", - wield_image = "default_tool_diamondshovel.png^[transformR90", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=1, - groupcaps={ - crumbly = {times={[1]=1.10, [2]=0.50, [3]=0.30}, uses=30, maxlevel=3}, - }, - damage_groups = {fleshy=4}, - }, -}) - --- --- Axes --- - -minetest.register_tool("default:axe_wood", { - description = "Wooden Axe", - inventory_image = "default_tool_woodaxe.png", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=0, - groupcaps={ - choppy = {times={[2]=3.00, [3]=2.00}, uses=10, maxlevel=1}, - }, - damage_groups = {fleshy=2}, - }, -}) -minetest.register_tool("default:axe_stone", { - description = "Stone Axe", - inventory_image = "default_tool_stoneaxe.png", - tool_capabilities = { - full_punch_interval = 1.2, - max_drop_level=0, - groupcaps={ - choppy={times={[1]=3.00, [2]=2.00, [3]=1.50}, uses=20, maxlevel=1}, - }, - damage_groups = {fleshy=3}, - }, -}) -minetest.register_tool("default:axe_steel", { - description = "Steel Axe", - inventory_image = "default_tool_steelaxe.png", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=1, - groupcaps={ - choppy={times={[1]=2.50, [2]=1.40, [3]=1.00}, uses=20, maxlevel=2}, - }, - damage_groups = {fleshy=4}, - }, -}) -minetest.register_tool("default:axe_bronze", { - description = "Bronze Axe", - inventory_image = "default_tool_bronzeaxe.png", - tool_capabilities = { - full_punch_interval = 1.0, - max_drop_level=1, - groupcaps={ - choppy={times={[1]=2.50, [2]=1.40, [3]=1.00}, uses=30, maxlevel=2}, - }, - damage_groups = {fleshy=4}, - }, -}) -minetest.register_tool("default:axe_mese", { - description = "Mese Axe", - inventory_image = "default_tool_meseaxe.png", - tool_capabilities = { - full_punch_interval = 0.9, - max_drop_level=1, - groupcaps={ - choppy={times={[1]=2.20, [2]=1.00, [3]=0.60}, uses=20, maxlevel=3}, - }, - damage_groups = {fleshy=6}, - }, -}) -minetest.register_tool("default:axe_diamond", { - description = "Diamond Axe", - inventory_image = "default_tool_diamondaxe.png", - tool_capabilities = { - full_punch_interval = 0.9, - max_drop_level=1, - groupcaps={ - choppy={times={[1]=2.10, [2]=0.90, [3]=0.50}, uses=30, maxlevel=2}, - }, - damage_groups = {fleshy=7}, - }, -}) - --- --- Swords --- - -minetest.register_tool("default:sword_wood", { - description = "Wooden Sword", - inventory_image = "default_tool_woodsword.png", - tool_capabilities = { - full_punch_interval = 1, - max_drop_level=0, - groupcaps={ - snappy={times={[2]=1.6, [3]=0.40}, uses=10, maxlevel=1}, - }, - damage_groups = {fleshy=2}, - } -}) -minetest.register_tool("default:sword_stone", { - description = "Stone Sword", - inventory_image = "default_tool_stonesword.png", - tool_capabilities = { - full_punch_interval = 1.2, - max_drop_level=0, - groupcaps={ - snappy={times={[2]=1.4, [3]=0.40}, uses=20, maxlevel=1}, - }, - damage_groups = {fleshy=4}, - } -}) -minetest.register_tool("default:sword_steel", { - description = "Steel Sword", - inventory_image = "default_tool_steelsword.png", - tool_capabilities = { - full_punch_interval = 0.8, - max_drop_level=1, - groupcaps={ - snappy={times={[1]=2.5, [2]=1.20, [3]=0.35}, uses=30, maxlevel=2}, - }, - damage_groups = {fleshy=6}, - } -}) -minetest.register_tool("default:sword_bronze", { - description = "Bronze Sword", - inventory_image = "default_tool_bronzesword.png", - tool_capabilities = { - full_punch_interval = 0.8, - max_drop_level=1, - groupcaps={ - snappy={times={[1]=2.5, [2]=1.20, [3]=0.35}, uses=40, maxlevel=2}, - }, - damage_groups = {fleshy=6}, - } -}) -minetest.register_tool("default:sword_mese", { - description = "Mese Sword", - inventory_image = "default_tool_mesesword.png", - tool_capabilities = { - full_punch_interval = 0.7, - max_drop_level=1, - groupcaps={ - snappy={times={[1]=2.0, [2]=1.00, [3]=0.35}, uses=30, maxlevel=3}, - }, - damage_groups = {fleshy=7}, - } -}) -minetest.register_tool("default:sword_diamond", { - description = "Diamond Sword", - inventory_image = "default_tool_diamondsword.png", - tool_capabilities = { - full_punch_interval = 0.7, - max_drop_level=1, - groupcaps={ - snappy={times={[1]=1.90, [2]=0.90, [3]=0.30}, uses=40, maxlevel=3}, - }, - damage_groups = {fleshy=8}, - } -}) diff --git a/mods/default/trees.lua b/mods/default/trees.lua deleted file mode 100644 index e68c0554..00000000 --- a/mods/default/trees.lua +++ /dev/null @@ -1,150 +0,0 @@ -local c_air = minetest.get_content_id("air") -local c_ignore = minetest.get_content_id("ignore") -local c_tree = minetest.get_content_id("default:tree") -local c_leaves = minetest.get_content_id("default:leaves") -local c_apple = minetest.get_content_id("default:apple") - -function default.grow_tree(data, a, pos, is_apple_tree, seed) - --[[ - NOTE: Tree-placing code is currently duplicated in the engine - and in games that have saplings; both are deprecated but not - replaced yet - ]]-- - local pr = PseudoRandom(seed) - local th = pr:next(4, 5) - local x, y, z = pos.x, pos.y, pos.z - for yy = y, y+th-1 do - local vi = a:index(x, yy, z) - if a:contains(x, yy, z) and (data[vi] == c_air or yy == y) then - data[vi] = c_tree - end - end - y = y+th-1 -- (x, y, z) is now last piece of trunk - local leaves_a = VoxelArea:new{MinEdge={x=-2, y=-1, z=-2}, MaxEdge={x=2, y=2, z=2}} - local leaves_buffer = {} - - -- Force leaves near the trunk - local d = 1 - for xi = -d, d do - for yi = -d, d do - for zi = -d, d do - leaves_buffer[leaves_a:index(xi, yi, zi)] = true - end - end - end - - -- Add leaves randomly - for iii = 1, 8 do - local d = 1 - local xx = pr:next(leaves_a.MinEdge.x, leaves_a.MaxEdge.x - d) - local yy = pr:next(leaves_a.MinEdge.y, leaves_a.MaxEdge.y - d) - local zz = pr:next(leaves_a.MinEdge.z, leaves_a.MaxEdge.z - d) - - for xi = 0, d do - for yi = 0, d do - for zi = 0, d do - leaves_buffer[leaves_a:index(xx+xi, yy+yi, zz+zi)] = true - end - end - end - end - - -- Add the leaves - for xi = leaves_a.MinEdge.x, leaves_a.MaxEdge.x do - for yi = leaves_a.MinEdge.y, leaves_a.MaxEdge.y do - for zi = leaves_a.MinEdge.z, leaves_a.MaxEdge.z do - if a:contains(x+xi, y+yi, z+zi) then - local vi = a:index(x+xi, y+yi, z+zi) - if data[vi] == c_air or data[vi] == c_ignore then - if leaves_buffer[leaves_a:index(xi, yi, zi)] then - if is_apple_tree and pr:next(1, 100) <= 10 then - data[vi] = c_apple - else - data[vi] = c_leaves - end - end - end - end - end - end - end -end - -local c_jungletree = minetest.get_content_id("default:jungletree") -local c_jungleleaves = minetest.get_content_id("default:jungleleaves") - -function default.grow_jungletree(data, a, pos, seed) - --[[ - NOTE: Tree-placing code is currently duplicated in the engine - and in games that have saplings; both are deprecated but not - replaced yet - ]]-- - local pr = PseudoRandom(seed) - local x, y, z = pos.x, pos.y, pos.z - for xi = -1, 1 do - for zi = -1, 1 do - if pr:next(1, 3) >= 2 then - local vi1 = a:index(x+xi, y, z+zi) - local vi2 = a:index(x+xi, y-1, z+zi) - if a:contains(x+xi, y-1, z+zi) and data[vi2] == c_air then - data[vi2] = c_jungletree - elseif a:contains(x+xi, y, z+zi) and data[vi1] == c_air then - data[vi1] = c_jungletree - end - end - end - end - - local th = pr:next(8, 12) - for yy = y, y+th-1 do - local vi = a:index(x, yy, z) - if a:contains(x, yy, z) and (data[vi] == c_air or yy == y) then - data[vi] = c_jungletree - end - end - y = y+th-1 -- (x, y, z) is now last piece of trunk - local leaves_a = VoxelArea:new{MinEdge={x=-3, y=-2, z=-3}, MaxEdge={x=3, y=2, z=3}} - local leaves_buffer = {} - - -- Force leaves near the trunk - local d = 1 - for xi = -d, d do - for yi = -d, d do - for zi = -d, d do - leaves_buffer[leaves_a:index(xi, yi, zi)] = true - end - end - end - - -- Add leaves randomly - for iii = 1, 30 do - local d = 1 - local xx = pr:next(leaves_a.MinEdge.x, leaves_a.MaxEdge.x - d) - local yy = pr:next(leaves_a.MinEdge.y, leaves_a.MaxEdge.y - d) - local zz = pr:next(leaves_a.MinEdge.z, leaves_a.MaxEdge.z - d) - - for xi = 0, d do - for yi = 0, d do - for zi = 0, d do - leaves_buffer[leaves_a:index(xx+xi, yy+yi, zz+zi)] = true - end - end - end - end - - -- Add the leaves - for xi = leaves_a.MinEdge.x, leaves_a.MaxEdge.x do - for yi = leaves_a.MinEdge.y, leaves_a.MaxEdge.y do - for zi = leaves_a.MinEdge.z, leaves_a.MaxEdge.z do - if a:contains(x+xi, y+yi, z+zi) then - local vi = a:index(x+xi, y+yi, z+zi) - if data[vi] == c_air or data[vi] == c_ignore then - if leaves_buffer[leaves_a:index(xi, yi, zi)] then - data[vi] = c_jungleleaves - end - end - end - end - end - end -end