-- Quarry Mechanics [quarry] -- by David_G [kestral246@gmail.com] -- 2020-09-12 -- Other overrides. dofile(minetest.get_modpath("quarry").."/falling_nodes.lua") -- Utility functions. -- Override stone_with_* nodes to leave cobble in ground. local override_with = function(node_name) minetest.override_item(node_name, { after_dig_node = function(pos, oldnode, oldmetadata, digger) minetest.set_node(pos, {name="default:cobble"}) minetest.check_single_for_falling(pos) end }) end -- Add wear to tool, based on builtin/game/item.lua. local add_wear = function(pos, digger, caps) local wielded = digger:get_wielded_item() local wdef = wielded:get_definition() local tp = wielded:get_tool_capabilities() local dp = minetest.get_dig_params(caps, tp) if not minetest.settings:get_bool("creative_mode") then wielded:add_wear(dp.wear) if wielded:get_count() == 0 and wdef.sound and wdef.sound.breaks then minetest.sound_play(wdef.sound.breaks, {pos = pos, gain = 0.5}) end end digger:set_wielded_item(wielded) end -- Node needs two faces to air to be able to quarry. local valid_quarry_config = function(pos) local sum = 0 if minetest.get_node(vector.add(pos, {x=1,y=0,z=0})).name == "air" then sum = sum + 1 end if minetest.get_node(vector.add(pos, {x=0,y=1,z=0})).name == "air" then sum = sum + 1 end if minetest.get_node(vector.add(pos, {x=0,y=0,z=1})).name == "air" then sum = sum + 1 end if minetest.get_node(vector.add(pos, {x=-1,y=0,z=0})).name == "air" then sum = sum + 1 end if minetest.get_node(vector.add(pos, {x=0,y=-1,z=0})).name == "air" then sum = sum + 1 end if minetest.get_node(vector.add(pos, {x=0,y=0,z=-1})).name == "air" then sum = sum + 1 end return sum >= 2 end -- For nodes that can be mortared (e.g., cobble, cut_stone, cut_stone_block). local mortar_on_dig = function(dest_name, group_wear) return function(pos, node, digger) if not minetest.is_protected(pos, digger) then local tool = digger:get_wielded_item():get_name() if tool == "quarry:trowel_and_mortar" then local oldnode = minetest.get_node(pos) minetest.swap_node(pos, {name = dest_name, param2 = oldnode.param2}) add_wear(pos, digger, group_wear) else minetest.node_dig(pos, node, digger) end end end end local override_mortar = function(init_name, dest_name, group_over, group_wear) minetest.override_item(init_name, { groups = group_over, on_dig = mortar_on_dig(dest_name, group_wear) }) end -- For nodes that can only be pickaxed (e.g., stonebrick) local pick_on_dig = function(dest_name, group_wear) return function(pos, node, digger) if not minetest.is_protected(pos, digger) then local oldnode = minetest.get_node(pos) minetest.swap_node(pos, {name = dest_name, param2 = oldnode.param2}) add_wear(pos, digger, group_wear) minetest.check_single_for_falling(pos) end end end local override_pick = function(init_name, dest_name, group_wear) minetest.override_item(init_name, { on_dig = pick_on_dig(dest_name, group_wear) }) end -- For nodes that can be quarry hammered or pickaxed (e.g., stone, stone_block) local hammer_on_dig = function(dest_name, break_name, group_wear) return function(pos, node, digger) if not minetest.is_protected(pos, digger) then local tool = digger:get_wielded_item():get_name() local oldnode = minetest.get_node(pos) if tool == "quarry:stone_quarry_hammer" and valid_quarry_config(pos) then minetest.swap_node(pos, {name = dest_name, param2 = oldnode.param2}) else -- pickaxe node minetest.swap_node(pos, {name = break_name, param2 = oldnode.param2}) end add_wear(pos, digger, group_wear) minetest.check_single_for_falling(pos) end end end local override_hammer = function(init_name, dest_name, break_name, group_wear) minetest.override_item(init_name, { on_dig = hammer_on_dig(dest_name, break_name, group_wear) }) end -- Node overrides -- Stone (h) override_hammer("default:stone", "quarry:cut_stone", "default:cobble", {cracky = 3}) override_hammer("stairs:slab_stone", "stairs:slab_cut_stone", "stairs:slab_cobble", {cracky = 3}) override_hammer("stairs:stair_stone", "stairs:stair_cut_stone", "stairs:stair_cobble", {cracky = 3}) override_hammer("stairs:stair_inner_stone", "stairs:stair_inner_cut_stone", "stairs:stair_inner_cobble", {cracky = 3}) override_hammer("stairs:stair_outer_stone", "stairs:stair_outer_cut_stone", "stairs:stair_outer_cobble", {cracky = 3}) -- Cut Stone (m) minetest.register_node("quarry:cut_stone", { description = "Cut Stone", tiles = {"default_stone.png^quarry_cut_stone.png"}, groups = {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, drop = "quarry:cut_stone", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), on_dig = mortar_on_dig("default:stone", {sticky = 2}), }) stairs.register_stair_and_slab("cut_stone","quarry:cut_stone",{cracky = 3},{"default_stone.png^quarry_cut_stone.png"},"Cut Stone Stair","Cut Stone Slab",default.node_sound_stone_defaults(),true) override_mortar("stairs:slab_cut_stone", "stairs:slab_stone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_cut_stone", "stairs:stair_stone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_inner_cut_stone", "stairs:stair_inner_stone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_outer_cut_stone", "stairs:stair_outer_stone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) -- Stone Block (h) override_hammer("default:stone_block", "quarry:cut_stone_block", "default:cobble", {cracky = 2}) override_hammer("stairs:slab_stone_block", "stairs:slab_cut_stone_block", "stairs:slab_cobble", {cracky = 2}) override_hammer("stairs:stair_stone_block", "stairs:stair_cut_stone_block", "stairs:stair_cobble", {cracky = 2}) override_hammer("stairs:stair_inner_stone_block", "stairs:stair_inner_cut_stone_block", "stairs:stair_inner_cobble", {cracky = 2}) override_hammer("stairs:stair_outer_stone_block", "stairs:stair_outer_cut_stone_block", "stairs:stair_outer_cobble", {cracky = 2}) -- Cut Stone Block (m) minetest.register_node("quarry:cut_stone_block", { description = "Cut Stone Block", tiles = {"default_stone_block.png^quarry_cut_stone_block.png"}, groups = {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, drop = "quarry:cut_stone_block", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), on_dig = mortar_on_dig("default:stone_block", {sticky = 2}), }) stairs.register_stair_and_slab("cut_stone_block","quarry:cut_stone_block",{cracky = 2},{"default_stone_block.png^quarry_cut_stone_block.png"},"Cut Stone Block Stair","Cut Stone Block Slab",default.node_sound_stone_defaults(),true) override_mortar("stairs:slab_cut_stone_block", "stairs:slab_stone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_cut_stone_block", "stairs:stair_stone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_inner_cut_stone_block", "stairs:stair_inner_stone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_outer_cut_stone_block", "stairs:stair_outer_stone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) -- Cobble (m) override_mortar("default:cobble", "default:stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:slab_cobble", "stairs:slab_stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_cobble", "stairs:stair_stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_inner_cobble", "stairs:stair_inner_stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_outer_cobble", "stairs:stair_outer_stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) -- Mossy Cobble (m) override_mortar("default:mossycobble", "default:stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:slab_mossycobble", "stairs:slab_stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_mossycobble", "stairs:stair_stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_inner_mossycobble", "stairs:stair_inner_stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_outer_mossycobble", "stairs:stair_outer_stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) -- Stone Brick (p) override_pick("default:stonebrick", "default:cobble", {cracky = 2}) override_pick("stairs:slab_stonebrick", "stairs:slab_cobble", {cracky = 2}) override_pick("stairs:stair_stonebrick", "stairs:stair_cobble", {cracky = 2}) override_pick("stairs:stair_inner_stonebrick", "stairs:stair_inner_cobble", {cracky = 2}) override_pick("stairs:stair_outer_stonebrick", "stairs:stair_outer_cobble", {cracky = 2}) -- Desert Stone (h) override_hammer("default:desert_stone", "quarry:cut_desert_stone", "default:desert_cobble", {cracky = 3}) override_hammer("stairs:slab_desert_stone", "stairs:slab_cut_desert_stone", "stairs:slab_desert_cobble", {cracky = 3}) override_hammer("stairs:stair_desert_stone", "stairs:stair_cut_desert_stone", "stairs:stair_desert_cobble", {cracky = 3}) override_hammer("stairs:stair_inner_desert_stone", "stairs:stair_inner_cut_desert_stone", "stairs:stair_inner_desert_cobble", {cracky = 3}) override_hammer("stairs:stair_outer_desert_stone", "stairs:stair_outer_cut_desert_stone", "stairs:stair_outer_desert_cobble", {cracky = 3}) -- Cut Desert Stone (m) minetest.register_node("quarry:cut_desert_stone", { description = "Cut Stone", tiles = {"default_desert_stone.png^quarry_cut_stone.png"}, groups = {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, drop = "quarry:cut_desert_stone", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), on_dig = mortar_on_dig("default:desert_stone", {sticky = 2}), }) stairs.register_stair_and_slab("cut_desert_stone","quarry:cut_desert_stone",{cracky = 3},{"default_desert_stone.png^quarry_cut_stone.png"},"Cut Stone Stair","Cut Stone Slab",default.node_sound_stone_defaults(),true) override_mortar("stairs:slab_cut_desert_stone", "stairs:slab_desert_stone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_cut_desert_stone", "stairs:stair_desert_stone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_inner_cut_desert_stone", "stairs:stair_inner_desert_stone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_outer_cut_desert_stone", "stairs:stair_outer_desert_stone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) -- Desert Stone Block (h) override_hammer("default:desert_stone_block", "quarry:cut_desert_stone_block", "default:desert_cobble", {cracky = 2}) override_hammer("stairs:slab_desert_stone_block", "stairs:slab_cut_desert_stone_block", "stairs:slab_desert_cobble", {cracky = 2}) override_hammer("stairs:stair_desert_stone_block", "stairs:stair_cut_desert_stone_block", "stairs:stair_desert_cobble", {cracky = 2}) override_hammer("stairs:stair_inner_desert_stone_block", "stairs:stair_inner_cut_desert_stone_block", "stairs:stair_inner_desert_cobble", {cracky = 2}) override_hammer("stairs:stair_outer_desert_stone_block", "stairs:stair_outer_cut_desert_stone_block", "stairs:stair_outer_desert_cobble", {cracky = 2}) -- Cut Desert Stone Block (m) minetest.register_node("quarry:cut_desert_stone_block", { description = "Cut Stone Block", tiles = {"default_desert_stone_block.png^quarry_cut_stone_block.png"}, groups = {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, drop = "quarry:cut_desert_stone_block", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), on_dig = mortar_on_dig("default:desert_stone_block", {sticky = 2}), }) stairs.register_stair_and_slab("cut_desert_stone_block","quarry:cut_stone_block",{cracky = 2},{"default_desert_stone_block.png^quarry_cut_stone_block.png"},"Cut Stone Block Stair","Cut Stone Block Slab",default.node_sound_stone_defaults(),true) override_mortar("stairs:slab_cut_desert_stone_block", "stairs:slab_desert_stone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_cut_desert_stone_block", "stairs:stair_desert_stone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_inner_cut_desert_stone_block", "stairs:stair_inner_desert_stone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_outer_cut_desert_stone_block", "stairs:stair_outer_desert_stone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) -- Desert Cobble (m) override_mortar("default:desert_cobble", "default:desert_stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:slab_desert_cobble", "stairs:slab_desert_stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_desert_cobble", "stairs:stair_desert_stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_inner_desert_cobble", "stairs:stair_inner_desert_stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_outer_desert_cobble", "stairs:stair_outer_desert_stonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) -- Desert Stone Brick (p) override_pick("default:desert_stonebrick", "default:desert_cobble", {cracky = 2}) override_pick("stairs:slab_desert_stonebrick", "stairs:slab_desert_cobble", {cracky = 2}) override_pick("stairs:stair_desert_stonebrick", "stairs:stair_desert_cobble", {cracky = 2}) override_pick("stairs:stair_inner_desert_stonebrick", "stairs:stair_inner_desert_cobble", {cracky = 2}) override_pick("stairs:stair_outer_desert_stonebrick", "stairs:stair_outer_desert_cobble", {cracky = 2}) -- Sandstone (h) override_hammer("default:sandstone", "quarry:cut_sandstone", "quarry:sandstone_rubble", {cracky = 3}) override_hammer("stairs:slab_sandstone", "stairs:slab_cut_sandstone", "stairs:slab_sandstone_rubble", {cracky = 3}) override_hammer("stairs:stair_sandstone", "stairs:stair_cut_sandstone", "stairs:stair_sandstone_rubble", {cracky = 3}) override_hammer("stairs:stair_inner_sandstone", "stairs:stair_inner_cut_sandstone", "stairs:stair_inner_sandstone_rubble", {cracky = 3}) override_hammer("stairs:stair_outer_sandstone", "stairs:stair_outer_cut_sandstone", "stairs:stair_outer_sandstone_rubble", {cracky = 3}) -- Cut Sandstone (m) minetest.register_node("quarry:cut_sandstone", { description = "Cut Sandstone", tiles = {"default_sandstone.png^quarry_cut_stone.png"}, groups = {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, drop = "quarry:cut_sandstone", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), on_dig = mortar_on_dig("default:sandstone", {sticky = 2}), }) stairs.register_stair_and_slab("cut_sandstone","quarry:cut_sandstone",{cracky = 3},{"default_sandstone.png^quarry_cut_stone.png"},"Cut Sandstone Stair","Cut Sandstone Slab",default.node_sound_stone_defaults(),true) override_mortar("stairs:slab_cut_sandstone", "stairs:slab_sandstone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_cut_sandstone", "stairs:stair_sandstone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_inner_cut_sandstone", "stairs:stair_inner_sandstone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_outer_cut_sandstone", "stairs:stair_outer_sandstone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) -- Sandstone Block (h) override_hammer("default:sandstone_block", "quarry:cut_sandstone_block", "quarry:sandstone_rubble", {cracky = 2}) override_hammer("stairs:slab_sandstone_block", "stairs:slab_cut_sandstone_block", "stairs:slab_sandstone_rubble", {cracky = 2}) override_hammer("stairs:stair_sandstone_block", "stairs:stair_cut_sandstone_block", "stairs:stair_sandstone_rubble", {cracky = 2}) override_hammer("stairs:stair_inner_sandstone_block", "stairs:stair_inner_cut_sandstone_block", "stairs:stair_inner_sandstone_rubble", {cracky = 2}) override_hammer("stairs:stair_outer_sandstone_block", "stairs:stair_outer_cut_sandstone_block", "stairs:stair_outer_sandstone_rubble", {cracky = 2}) -- Cut Sandstone Block (m) minetest.register_node("quarry:cut_sandstone_block", { description = "Cut Sandstone Block", tiles = {"default_sandstone_block.png^quarry_cut_stone_block.png"}, groups = {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, drop = "quarry:cut_sandstone_block", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), on_dig = mortar_on_dig("default:sandstone_block", {sticky = 2}), }) stairs.register_stair_and_slab("cut_sandstone_block","quarry:cut_sandstone_block",{cracky = 2},{"default_sandstone_block.png^quarry_cut_stone_block.png"},"Cut Sandstone Block Stair","Cut Sandstone Block Slab",default.node_sound_stone_defaults(),true) override_mortar("stairs:slab_cut_sandstone_block", "stairs:slab_sandstone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_cut_sandstone_block", "stairs:stair_sandstone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_inner_cut_sandstone_block", "stairs:stair_inner_sandstone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_outer_cut_sandstone_block", "stairs:stair_outer_sandstone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) -- Sandstone Rubble (m) minetest.register_node("quarry:sandstone_rubble", { description = "Sandstone Rubble", tiles = {"default_sandstone.png^quarry_rubble_overlay.png"}, is_ground_content = false, groups = {crumbly = 3, stone = 2, falling_node = 1}, sounds = default.node_sound_stone_defaults(), on_dig = mortar_on_dig("default:sandstonebrick", {sticky = 3}), }) stairs.register_stair_and_slab("sandstone_rubble","quarry:sandstone_rubble",{cracky = 2},{"default_sandstone.png^quarry_rubble_overlay.png^quarry_cut_stone.png"},"Sandstone Rubble Stair","Sandstone Rubble Slab",default.node_sound_stone_defaults(),true) override_mortar("stairs:slab_sandstone_rubble", "stairs:slab_sandstonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_sandstone_rubble", "stairs:stair_sandstonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_inner_sandstone_rubble", "stairs:stair_inner_sandstonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_outer_sandstone_rubble", "stairs:stair_outer_sandstonebrick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) -- Sandstone Brick (p) override_pick("default:sandstonebrick", "quarry:sandstone_rubble", {cracky = 2}) override_pick("stairs:slab_sandstonebrick", "stairs:slab_sandstone_rubble", {cracky = 2}) override_pick("stairs:stair_sandstonebrick", "stairs:stair_sandstone_rubble", {cracky = 2}) override_pick("stairs:stair_inner_sandstonebrick", "stairs:stair_inner_sandstone_rubble", {cracky = 2}) override_pick("stairs:stair_outer_sandstonebrick", "stairs:stair_outer_sandstone_rubble", {cracky = 2}) -- Desert Sandstone (h) override_hammer("default:desert_sandstone", "quarry:cut_desert_sandstone", "quarry:desert_sandstone_rubble", {cracky = 3}) override_hammer("stairs:slab_desert_sandstone", "stairs:slab_cut_desert_sandstone", "stairs:slab_desert_sandstone_rubble", {cracky = 3}) override_hammer("stairs:stair_desert_sandstone", "stairs:stair_cut_desert_sandstone", "stairs:stair_desert_sandstone_rubble", {cracky = 3}) override_hammer("stairs:stair_inner_desert_sandstone", "stairs:stair_inner_cut_desert_sandstone", "stairs:stair_inner_desert_sandstone_rubble", {cracky = 3}) override_hammer("stairs:stair_outer_desert_sandstone", "stairs:stair_outer_cut_desert_sandstone", "stairs:stair_outer_desert_sandstone_rubble", {cracky = 3}) -- Cut Desert Sandstone (m) minetest.register_node("quarry:cut_desert_sandstone", { description = "Cut Desert Sandstone", tiles = {"default_desert_sandstone.png^quarry_cut_stone.png"}, groups = {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, drop = "quarry:cut_desert_sandstone", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), on_dig = mortar_on_dig("default:desert_sandstone", {sticky = 2}), }) stairs.register_stair_and_slab("cut_desert_sandstone","quarry:cut_desert_sandstone",{cracky = 3},{"default_desert_sandstone.png^quarry_cut_stone.png"},"Cut Desert Sandstone Stair","Cut Desert Sandstone Slab",default.node_sound_stone_defaults(),true) override_mortar("stairs:slab_cut_desert_sandstone", "stairs:slab_desert_sandstone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_cut_desert_sandstone", "stairs:stair_desert_sandstone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_inner_cut_desert_sandstone", "stairs:stair_inner_desert_sandstone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_outer_cut_desert_sandstone", "stairs:stair_outer_desert_sandstone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) -- Desert Sandstone Block (h) override_hammer("default:desert_sandstone_block", "quarry:cut_desert_sandstone_block", "quarry:desert_sandstone_rubble", {cracky = 2}) override_hammer("stairs:slab_desert_sandstone_block", "stairs:slab_cut_desert_sandstone_block", "stairs:slab_desert_sandstone_rubble", {cracky = 2}) override_hammer("stairs:stair_desert_sandstone_block", "stairs:stair_cut_desert_sandstone_block", "stairs:stair_desert_sandstone_rubble", {cracky = 2}) override_hammer("stairs:stair_inner_desert_sandstone_block", "stairs:stair_inner_cut_desert_sandstone_block", "stairs:stair_inner_desert_sandstone_rubble", {cracky = 2}) override_hammer("stairs:stair_outer_desert_sandstone_block", "stairs:stair_outer_cut_desert_sandstone_block", "stairs:stair_outer_desert_sandstone_rubble", {cracky = 2}) -- Cut Desert Sandstone Block (m) minetest.register_node("quarry:cut_desert_sandstone_block", { description = "Cut Desert Sandstone Block", tiles = {"default_desert_sandstone_block.png^quarry_cut_stone_block.png"}, groups = {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, drop = "quarry:cut_desert_sandstone_block", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), on_dig = mortar_on_dig("default:desert_sandstone_block", {sticky = 2}), }) stairs.register_stair_and_slab("cut_desert_sandstone_block","quarry:cut_desert_sandstone_block",{cracky = 2},{"default_desert_sandstone_block.png^quarry_cut_stone_block.png"},"Cut Desert Sandstone Block Stair","Cut Desert Sandstone Block Slab",default.node_sound_stone_defaults(),true) override_mortar("stairs:slab_cut_desert_sandstone_block", "stairs:slab_desert_sandstone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_cut_desert_sandstone_block", "stairs:stair_desert_sandstone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_inner_cut_desert_sandstone_block", "stairs:stair_inner_desert_sandstone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_outer_cut_desert_sandstone_block", "stairs:stair_outer_desert_sandstone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) -- Desert Sandstone Rubble (m) minetest.register_node("quarry:desert_sandstone_rubble", { description = "Desert Sandstone Rubble", tiles = {"default_desert_sandstone.png^quarry_rubble_overlay.png"}, is_ground_content = false, groups = {crumbly = 3, stone = 2, falling_node = 1}, sounds = default.node_sound_stone_defaults(), on_dig = mortar_on_dig("default:desert_sandstone_brick", {sticky = 3}), }) stairs.register_stair_and_slab("desert_sandstone_rubble","quarry:desert_sandstone_rubble",{cracky = 2},{"default_desert_sandstone.png^quarry_rubble_overlay.png^quarry_cut_stone.png"},"Desert Sandstone Rubble Stair","Desert Sandstone Rubble Slab",default.node_sound_stone_defaults(),true) override_mortar("stairs:slab_desert_sandstone_rubble", "stairs:slab_desert_sandstone_brick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_desert_sandstone_rubble", "stairs:stair_desert_sandstone_brick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_inner_desert_sandstone_rubble", "stairs:stair_inner_desert_sandstone_brick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_outer_desert_sandstone_rubble", "stairs:stair_outer_desert_sandstone_brick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) -- Desert Sandstone Brick (p) override_pick("default:desert_sandstone_brick", "quarry:desert_sandstone_rubble", {cracky = 2}) override_pick("stairs:slab_desert_sandstone_brick", "stairs:slab_desert_sandstone_rubble", {cracky = 2}) override_pick("stairs:stair_desert_sandstone_brick", "stairs:stair_desert_sandstone_rubble", {cracky = 2}) override_pick("stairs:stair_inner_desert_sandstone_brick", "stairs:stair_inner_desert_sandstone_rubble", {cracky = 2}) override_pick("stairs:stair_outer_desert_sandstone_brick", "stairs:stair_outer_desert_sandstone_rubble", {cracky = 2}) -- Silver Sandstone (h) override_hammer("default:silver_sandstone", "quarry:cut_silver_sandstone", "quarry:silver_sandstone_rubble", {cracky = 3}) override_hammer("stairs:slab_silver_sandstone", "stairs:slab_cut_silver_sandstone", "stairs:slab_silver_sandstone_rubble", {cracky = 3}) override_hammer("stairs:stair_silver_sandstone", "stairs:stair_cut_silver_sandstone", "stairs:stair_silver_sandstone_rubble", {cracky = 3}) override_hammer("stairs:stair_inner_silver_sandstone", "stairs:stair_inner_cut_silver_sandstone", "stairs:stair_inner_silver_sandstone_rubble", {cracky = 3}) override_hammer("stairs:stair_outer_silver_sandstone", "stairs:stair_outer_cut_silver_sandstone", "stairs:stair_outer_silver_sandstone_rubble", {cracky = 3}) -- Cut Silver Sandstone (m) minetest.register_node("quarry:cut_silver_sandstone", { description = "Cut Silver Sandstone", tiles = {"default_silver_sandstone.png^quarry_cut_stone.png"}, groups = {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, drop = "quarry:cut_silver_sandstone", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), on_dig = mortar_on_dig("default:silver_sandstone", {sticky = 2}), }) stairs.register_stair_and_slab("cut_silver_sandstone","quarry:cut_silver_sandstone",{cracky = 3},{"default_silver_sandstone.png^quarry_cut_stone.png"},"Cut Silver Sandstone Stair","Cut Silver Sandstone Slab",default.node_sound_stone_defaults(),true) override_mortar("stairs:slab_cut_silver_sandstone", "stairs:slab_silver_sandstone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_cut_silver_sandstone", "stairs:stair_silver_sandstone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_inner_cut_silver_sandstone", "stairs:stair_inner_silver_sandstone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_outer_cut_silver_sandstone", "stairs:stair_outer_silver_sandstone", {cracky = 3, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) -- Silver Sandstone Block (h) override_hammer("default:silver_sandstone_block", "quarry:cut_silver_sandstone_block", "quarry:silver_sandstone_rubble", {cracky = 2}) override_hammer("stairs:slab_silver_sandstone_block", "stairs:slab_cut_silver_sandstone_block", "stairs:slab_silver_sandstone_rubble", {cracky = 2}) override_hammer("stairs:stair_silver_sandstone_block", "stairs:stair_cut_silver_sandstone_block", "stairs:stair_silver_sandstone_rubble", {cracky = 2}) override_hammer("stairs:stair_inner_silver_sandstone_block", "stairs:stair_inner_cut_silver_sandstone_block", "stairs:stair_inner_silver_sandstone_rubble", {cracky = 2}) override_hammer("stairs:stair_outer_silver_sandstone_block", "stairs:stair_outer_cut_silver_sandstone_block", "stairs:stair_outer_silver_sandstone_rubble", {cracky = 2}) -- Cut Silver Sandstone Block (m) minetest.register_node("quarry:cut_silver_sandstone_block", { description = "Cut Silver Sandstone Block", tiles = {"default_silver_sandstone_block.png^quarry_cut_stone_block.png"}, groups = {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, drop = "quarry:cut_silver_sandstone_block", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), on_dig = mortar_on_dig("default:silver_sandstone_block", {sticky = 2}), }) stairs.register_stair_and_slab("cut_silver_sandstone_block","quarry:cut_silver_sandstone_block",{cracky = 2},{"default_silver_sandstone_block.png^quarry_cut_stone_block.png"},"Cut Silver Sandstone Block Stair","Cut Silver Sandstone Block Slab",default.node_sound_stone_defaults(),true) override_mortar("stairs:slab_cut_silver_sandstone_block", "stairs:slab_silver_sandstone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_cut_silver_sandstone_block", "stairs:stair_silver_sandstone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_inner_cut_silver_sandstone_block", "stairs:stair_inner_silver_sandstone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) override_mortar("stairs:stair_outer_cut_silver_sandstone_block", "stairs:stair_outer_silver_sandstone_block", {cracky = 2, stone = 1, falling_node = 1, dig_immediate = 2}, {sticky = 2}) -- Silver Sandstone Rubble (m) minetest.register_node("quarry:silver_sandstone_rubble", { description = "Silver Sandstone Rubble", tiles = {"default_silver_sandstone.png^quarry_rubble_overlay.png"}, is_ground_content = false, groups = {crumbly = 3, stone = 2, falling_node = 1}, sounds = default.node_sound_stone_defaults(), on_dig = mortar_on_dig("default:silver_sandstone_brick", {sticky = 3}), }) stairs.register_stair_and_slab("silver_sandstone_rubble","quarry:silver_sandstone_rubble",{cracky = 2},{"default_silver_sandstone.png^quarry_rubble_overlay.png^quarry_cut_stone.png"},"Silver Sandstone Rubble Stair","Silver Sandstone Rubble Slab",default.node_sound_stone_defaults(),true) override_mortar("stairs:slab_silver_sandstone_rubble", "stairs:slab_silver_sandstone_brick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_silver_sandstone_rubble", "stairs:stair_silver_sandstone_brick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_inner_silver_sandstone_rubble", "stairs:stair_inner_silver_sandstone_brick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) override_mortar("stairs:stair_outer_silver_sandstone_rubble", "stairs:stair_outer_silver_sandstone_brick", {crumbly = 3, stone = 1, falling_node = 1}, {sticky = 3}) -- Silver Sandstone Brick (p) override_pick("default:silver_sandstone_brick", "quarry:silver_sandstone_rubble", {cracky = 2}) override_pick("stairs:slab_silver_sandstone_brick", "stairs:slab_silver_sandstone_rubble", {cracky = 2}) override_pick("stairs:stair_silver_sandstone_brick", "stairs:stair_silver_sandstone_rubble", {cracky = 2}) override_pick("stairs:stair_inner_silver_sandstone_brick", "stairs:stair_inner_silver_sandstone_rubble", {cracky = 2}) override_pick("stairs:stair_outer_silver_sandstone_brick", "stairs:stair_outer_silver_sandstone_rubble", {cracky = 2}) -- Override stone_with_* nodes to leave cobble in ground. -- Lumps still go into player's inventory. override_with("default:stone_with_coal") override_with("default:stone_with_iron") override_with("default:stone_with_copper") override_with("default:stone_with_tin") override_with("default:stone_with_gold") override_with("default:stone_with_mese") override_with("default:stone_with_diamond") -- Scaffolding to support falling stone nodes. minetest.register_node("quarry:scaffold", { description = "Scaffold", tiles = {"quarry_scaffold_frame.png"}, drawtype = "glasslike", groups = {dig_immediate = 2}, paramtype = "light", sunlight_propagates = true, }) -- Tools. minetest.register_tool("quarry:stone_quarry_hammer", { description = "Stone Quarry Hammer", inventory_image = "quarry_stone_hammer.png", tool_capabilities = { full_punch_interval = 1.3, max_drop_level=0, groupcaps={ cracky = {times={[2]=2.0, [3]=1.00}, uses=30, maxlevel=1}, }, damage_groups = {fleshy=3}, }, sound = {breaks = "default_tool_breaks"}, groups = {pickaxe = 1} }) minetest.register_tool("quarry:trowel_and_mortar", { description = "Trowel and Mortar", inventory_image = "quarry_trowel_mortar.png", wield_image = "quarry_trowel_mortar_wield.png", tool_capabilities = { full_punch_interval = 1.4, max_drop_level=0, groupcaps={ sticky = {times={[1]=1.80, [2]=1.20, [3]=0.50}, uses=30, maxlevel=1} }, damage_groups = {fleshy=2}, }, sound = {breaks = "default_tool_breaks"}, }) -- Add flint pickaxe. minetest.register_tool("quarry:pick_flint", { description = "Flint Pickaxe", inventory_image = "quarry_flint_pick.png", tool_capabilities = { full_punch_interval = 1.2, max_drop_level=0, groupcaps={ cracky = {times={[3]=1.6}, uses=4, maxlevel=1}, }, damage_groups = {fleshy=2}, }, sound = {breaks = "default_tool_breaks"}, groups = {pickaxe = 1} }) -- Get rid of wood pickaxe. minetest.unregister_item("default:pick_wood") minetest.clear_craft({output = "default:pick_wood"}) -- These stone nodes can no longer be crafted directly. for _,nodename in pairs({ "default:stone", "stairs:slab_stone", "stairs:stair_stone", "stairs:stair_inner_stone", "stairs:stair_outer_stone", "default:stonebrick", "stairs:slab_stonebrick", "stairs:stair_stonebrick", "stairs:stair_inner_stonebrick", "stairs:stair_outer_stonebrick", "default:stone_block", "stairs:slab_stone_block", "stairs:stair_stone_block", "stairs:stair_inner_stone_block", "stairs:stair_outer_stone_block", "default:desert_stone", "stairs:slab_desert_stone", "stairs:stair_desert_stone", "stairs:stair_inner_desert_stone", "stairs:stair_outer_desert_stone", "default:desert_stonebrick", "stairs:slab_desert_stonebrick", "stairs:stair_desert_stonebrick", "stairs:stair_inner_desert_stonebrick", "stairs:stair_outer_desert_stonebrick", "default:desert_stone_block", "stairs:slab_desert_stone_block", "stairs:stair_desert_stone_block", "stairs:stair_inner_desert_stone_block", "stairs:stair_outer_desert_stone_block", "default:sandstone", "stairs:slab_sandstone", "stairs:stair_sandstone", "stairs:stair_inner_sandstone", "stairs:stair_outer_sandstone", "default:sandstonebrick", "stairs:slab_sandstonebrick", "stairs:stair_sandstonebrick", "stairs:stair_inner_sandstonebrick", "stairs:stair_outer_sandstonebrick", "default:sandstone_block", "stairs:slab_sandstone_block", "stairs:stair_sandstone_block", "stairs:stair_inner_sandstone_block", "stairs:stair_outer_sandstone_block", "default:desert_sandstone", "stairs:slab_desert_sandstone", "stairs:stair_desert_sandstone", "stairs:stair_inner_desert_sandstone", "stairs:stair_outer_desert_sandstone", "default:desert_sandstone_brick", "stairs:slab_desert_sandstone_brick", "stairs:stair_desert_sandstone_brick", "stairs:stair_inner_desert_sandstone_brick", "stairs:stair_outer_desert_sandstone_brick", "default:desert_sandstone_block", "stairs:slab_desert_sandstone_block", "stairs:stair_desert_sandstone_block", "stairs:stair_inner_desert_sandstone_block", "stairs:stair_outer_desert_sandstone_block", "default:silver_sandstone", "stairs:slab_silver_sandstone", "stairs:stair_silver_sandstone", "stairs:stair_inner_silver_sandstone", "stairs:stair_outer_silver_sandstone", "default:silver_sandstone_brick", "stairs:slab_silver_sandstone_brick", "stairs:stair_silver_sandstone_brick", "stairs:stair_inner_silver_sandstone_brick", "stairs:stair_outer_silver_sandstone_brick", "default:silver_sandstone_block", "stairs:slab_silver_sandstone_block", "stairs:stair_silver_sandstone_block", "stairs:stair_inner_silver_sandstone_block", "stairs:stair_outer_silver_sandstone_block" }) do minetest.clear_craft({output = nodename}) end -- New craft recipes. -- For cut_stone_block nodes. for _,nodename in pairs({"quarry:cut_stone", "quarry:cut_desert_stone", "quarry:cut_sandstone", "quarry:cut_desert_sandstone", "quarry:cut_silver_sandstone"}) do minetest.register_craft({ output = nodename.."_block 9", recipe = { {nodename, nodename, nodename}, {nodename, nodename, nodename}, {nodename, nodename, nodename} } }) end minetest.register_craft({ output = "quarry:scaffold 4", recipe = { {"group:stick", "group:stick", "group:stick"}, {"group:stick", "", "group:stick"}, {"group:stick", "group:stick", "group:stick"} } }) minetest.register_craft({ output = "quarry:stone_quarry_hammer", recipe = { {"group:stone", "default:steel_ingot", "group:stone"}, {"group:stone", "group:stick", "group:stone"}, {"", "group:stick", ""} } }) minetest.register_craft({ output = "quarry:trowel_and_mortar", type = "shapeless", recipe = { "default:clay", "default:clay", "default:clay", "group:sand", "group:sand", "group:sand", "default:steel_ingot", "bucket:bucket_water" }, replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}}, }) minetest.register_craft({ output = "quarry:pick_flint", recipe = { {"default:flint", "default:flint", "default:flint"}, {"", "group:stick", ""}, {"", "group:stick", ""} } })