forked from mtcontrib/unifieddyes
API CHANGE: after_dig_node instead of on_destruct
This also fixes the case where digging a block just drops the dye on the ground instead of putting it in the player's inv.
This commit is contained in:
parent
0fbf6baa72
commit
aeb179a129
24
init.lua
24
init.lua
@ -31,6 +31,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
unifieddyes = {}
|
unifieddyes = {}
|
||||||
|
|
||||||
|
local creative_mode = minetest.setting_getbool("creative_mode")
|
||||||
|
|
||||||
-- Boilerplate to support localized strings if intllib mod is installed.
|
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||||
local S
|
local S
|
||||||
if minetest.get_modpath("intllib") then
|
if minetest.get_modpath("intllib") then
|
||||||
@ -214,13 +216,20 @@ function unifieddyes.getpaletteidx(color, colorfdir)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function unifieddyes.on_destruct(pos)
|
function unifieddyes.after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||||
local meta = minetest.get_meta(pos)
|
local prevdye
|
||||||
local prevdye = meta:get_string("dye")
|
if oldmetadata and oldmetadata.fields then
|
||||||
if minetest.registered_items[prevdye] then
|
prevdye = oldmetadata.fields.dye
|
||||||
|
end
|
||||||
|
if not creative_mode and prevdye and minetest.registered_items[prevdye] then
|
||||||
|
local inv = digger:get_inventory()
|
||||||
|
if inv:room_for_item("main", prevdye) then
|
||||||
|
inv:add_item("main", prevdye)
|
||||||
|
else
|
||||||
minetest.add_item(pos, prevdye)
|
minetest.add_item(pos, prevdye)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function unifieddyes.on_rightclick(pos, node, player, stack, pointed_thing, newnode, colorfdir)
|
function unifieddyes.on_rightclick(pos, node, player, stack, pointed_thing, newnode, colorfdir)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
@ -236,7 +245,7 @@ function unifieddyes.on_rightclick(pos, node, player, stack, pointed_thing, newn
|
|||||||
|
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local prevdye = meta:get_string("dye")
|
local prevdye = meta:get_string("dye")
|
||||||
if minetest.registered_items[prevdye] then
|
if not creative_mode and minetest.registered_items[prevdye] then
|
||||||
local inv = player:get_inventory()
|
local inv = player:get_inventory()
|
||||||
if inv:room_for_item("main", prevdye) then
|
if inv:room_for_item("main", prevdye) then
|
||||||
inv:add_item("main", prevdye)
|
inv:add_item("main", prevdye)
|
||||||
@ -244,8 +253,11 @@ function unifieddyes.on_rightclick(pos, node, player, stack, pointed_thing, newn
|
|||||||
minetest.add_item(pos, prevdye)
|
minetest.add_item(pos, prevdye)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
meta:set_string("dye",name)
|
meta:set_string("dye",name)
|
||||||
|
if not creative_mode and prevdye ~= name then
|
||||||
stack:take_item()
|
stack:take_item()
|
||||||
|
end
|
||||||
node.param2 = paletteidx
|
node.param2 = paletteidx
|
||||||
|
|
||||||
local oldpaletteidx, oldhuenum = unifieddyes.getpaletteidx(prevdye, colorfdir)
|
local oldpaletteidx, oldhuenum = unifieddyes.getpaletteidx(prevdye, colorfdir)
|
||||||
@ -310,7 +322,9 @@ function unifieddyes.on_rightclick(pos, node, player, stack, pointed_thing, newn
|
|||||||
local fdir = minetest.dir_to_facedir(dir)
|
local fdir = minetest.dir_to_facedir(dir)
|
||||||
|
|
||||||
minetest.set_node(pos2, { name = placeable_node.name, param2 = fdir })
|
minetest.set_node(pos2, { name = placeable_node.name, param2 = fdir })
|
||||||
|
if not creative_mode then
|
||||||
stack:take_item()
|
stack:take_item()
|
||||||
|
end
|
||||||
return stack
|
return stack
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user