forked from mtcontrib/pipeworks
wielder.lua: set default ghost tool for node breaker to the hand, add stub implementation of can_tool_dig_node() to check if set tool can dig node
This commit is contained in:
parent
366dd24e5b
commit
f8cb55a60e
14
wielder.lua
14
wielder.lua
@ -19,6 +19,11 @@ local function set_wielder_formspec(data, meta)
|
|||||||
meta:set_string("infotext", data.description)
|
meta:set_string("infotext", data.description)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local can_tool_dig_node = function(nodename, toolcaps, toolname)
|
||||||
|
pipeworks.logger("can_tool_dig_node() STUB nodename="..tostring(nodename).." toolname="..tostring(toolname).." toolcaps: "..dump(toolcaps))
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
local function wielder_on(data, wielder_pos, wielder_node)
|
local function wielder_on(data, wielder_pos, wielder_node)
|
||||||
data.fixup_node(wielder_pos, wielder_node)
|
data.fixup_node(wielder_pos, wielder_node)
|
||||||
if wielder_node.name ~= data.name_base.."_off" then return end
|
if wielder_node.name ~= data.name_base.."_off" then return end
|
||||||
@ -293,7 +298,7 @@ if pipeworks.enable_node_breaker then
|
|||||||
wield_inv_height = 1,
|
wield_inv_height = 1,
|
||||||
can_dig_nonempty_wield_inv = true,
|
can_dig_nonempty_wield_inv = true,
|
||||||
ghost_inv_name = "ghost_pick",
|
ghost_inv_name = "ghost_pick",
|
||||||
ghost_tool = "default:pick_mese",
|
ghost_tool = ":", -- hand by default
|
||||||
fixup_node = function (pos, node)
|
fixup_node = function (pos, node)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
@ -346,18 +351,25 @@ if pipeworks.enable_node_breaker then
|
|||||||
masquerade_as_owner = true,
|
masquerade_as_owner = true,
|
||||||
sneak = false,
|
sneak = false,
|
||||||
act = function(virtplayer, pointed_thing)
|
act = function(virtplayer, pointed_thing)
|
||||||
|
--local dname = "nodebreaker.act() "
|
||||||
local wieldstack = virtplayer:get_wielded_item()
|
local wieldstack = virtplayer:get_wielded_item()
|
||||||
local oldwieldstack = ItemStack(wieldstack)
|
local oldwieldstack = ItemStack(wieldstack)
|
||||||
local on_use = (minetest.registered_items[wieldstack:get_name()] or {}).on_use
|
local on_use = (minetest.registered_items[wieldstack:get_name()] or {}).on_use
|
||||||
if on_use then
|
if on_use then
|
||||||
|
--pipeworks.logger(dname.."invoking on_use "..tostring(on_use))
|
||||||
wieldstack = on_use(wieldstack, virtplayer, pointed_thing) or wieldstack
|
wieldstack = on_use(wieldstack, virtplayer, pointed_thing) or wieldstack
|
||||||
virtplayer:set_wielded_item(wieldstack)
|
virtplayer:set_wielded_item(wieldstack)
|
||||||
else
|
else
|
||||||
local under_node = minetest.get_node(pointed_thing.under)
|
local under_node = minetest.get_node(pointed_thing.under)
|
||||||
local on_dig = (minetest.registered_nodes[under_node.name] or {on_dig=minetest.node_dig}).on_dig
|
local on_dig = (minetest.registered_nodes[under_node.name] or {on_dig=minetest.node_dig}).on_dig
|
||||||
|
-- check that the current tool is capable of destroying the target node.
|
||||||
|
-- if we can't, don't dig, and leave the wield stack unchanged.
|
||||||
|
-- note that wieldstack:get_tool_capabilities() returns hand properties if the item has none of it's own.
|
||||||
|
if can_tool_dig_node(under_node.name, wieldstack:get_tool_capabilities(), wieldstack:get_name()) then
|
||||||
on_dig(pointed_thing.under, under_node, virtplayer)
|
on_dig(pointed_thing.under, under_node, virtplayer)
|
||||||
wieldstack = virtplayer:get_wielded_item()
|
wieldstack = virtplayer:get_wielded_item()
|
||||||
end
|
end
|
||||||
|
end
|
||||||
local wieldname = wieldstack:get_name()
|
local wieldname = wieldstack:get_name()
|
||||||
if wieldname == oldwieldstack:get_name() then
|
if wieldname == oldwieldstack:get_name() then
|
||||||
-- don't mechanically wear out tool
|
-- don't mechanically wear out tool
|
||||||
|
Loading…
Reference in New Issue
Block a user