Add can_dig callback
authordarkrose <lisa@ltmnet.com>
Sun, 3 Jun 2012 10:02:10 +0000 (20:02 +1000)
committerPerttu Ahola <celeron55@gmail.com>
Sun, 3 Jun 2012 19:31:02 +0000 (22:31 +0300)
builtin/item.lua
doc/lua_api.txt

index c4bd24204864f1f9277ecb38159b865ae1de6259..3d545eece1efbc5b39c093ce7fe452739a3e5e52 100644 (file)
@@ -229,7 +229,7 @@ function minetest.node_dig(pos, node, digger)
        minetest.debug("node_dig")
 
        local def = ItemStack({name=node.name}):get_definition()
-       if not def.diggable then
+       if not def.diggable or (def.can_dig and not def.can_dig(pos,digger)) then
                minetest.debug("not diggable")
                minetest.log("info", digger:get_player_name() .. " tried to dig "
                        .. node.name .. " which is not diggable "
@@ -345,6 +345,7 @@ minetest.nodedef_default = {
        on_place = redef_wrapper(minetest, 'item_place'), -- minetest.item_place
        on_drop = redef_wrapper(minetest, 'item_drop'), -- minetest.item_drop
        on_use = nil,
+       can_dig = nil,
 
        on_punch = redef_wrapper(minetest, 'node_punch'), -- minetest.node_punch
        on_dig = redef_wrapper(minetest, 'node_dig'), -- minetest.node_dig
index 4321bf76edbfc68068f5908a61690b8e8e448b34..3f640da4c2c53339e02e5aadc4fc30fab57b9b74 100644 (file)
@@ -1149,6 +1149,9 @@ Node definition (register_node)
     ^ Called after destructing node when node was dug using
       minetest.node_dig
     ^ default: nil
+    can_dig = function(pos,player)
+    ^ returns true if node can be dug, or false if not
+    ^ default: nil
        
     on_punch = func(pos, node, puncher),
     ^ default: minetest.node_punch