summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2017-01-26 11:06:06 -0500
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2017-01-26 11:06:31 -0500
commit3f7fb1af74ffc9908a8ac8607de1f3323d8494df (patch)
tree7d041e49c273acb6b61e267e15576e67d3e44833
parent4f1303aac16696097776b3e55a0e26f6703d0572 (diff)
downloadunifieddyes-3f7fb1af74ffc9908a8ac8607de1f3323d8494df.tar
unifieddyes-3f7fb1af74ffc9908a8ac8607de1f3323d8494df.tar.gz
unifieddyes-3f7fb1af74ffc9908a8ac8607de1f3323d8494df.tar.bz2
unifieddyes-3f7fb1af74ffc9908a8ac8607de1f3323d8494df.tar.xz
unifieddyes-3f7fb1af74ffc9908a8ac8607de1f3323d8494df.zip
Just do the node's color search manually
(to handle cases where the node has more than just the standard-format nodename:[shade_]hue[_s50] naming, e.g. stairsplus nodes like: nodename:stair_[shade_]hue[_s50][_some_extra_details]
-rw-r--r--init.lua43
1 files changed, 28 insertions, 15 deletions
diff --git a/init.lua b/init.lua
index d2ff67a..9b14739 100644
--- a/init.lua
+++ b/init.lua
@@ -217,47 +217,60 @@ function unifieddyes.on_rightclick(pos, node, player, stack, pointed_thing, newn
stack:take_item()
node.param2 = paletteidx
- local oldpaletteidx, oldhue = unifieddyes.getpaletteidx(prevdye, colorfdir)
+ local oldpaletteidx, oldhuenum = unifieddyes.getpaletteidx(prevdye, colorfdir)
+
+ local oldnode = minetest.get_node(pos)
+
+ local oldhue = nil
+ for _, i in ipairs(HUES) do
+ if string.find(oldnode.name, "_"..i) and not
+ ( string.find(oldnode.name, "_redviolet") and i == "red" ) then
+ oldhue = i
+ break
+ end
+ end
if newnode then
- node.name = newnode
if colorfdir then -- we probably need to change the hue of the node too
if oldhue ~=0 then -- it's colored, not grey
- print("at line 226")
- print("prevdye = "..dump(prevdye))
- print("oldhue = "..dump(oldhue).." "..dump(HUES[oldhue]))
- print("hue = "..dump(hue).." "..dump(HUES[hue]))
- print("node.name = "..dump(node.name))
if oldhue ~= nil then -- it's been painted before
if hue ~= 0 then -- the player's wielding a colored dye
- node.name = string.gsub(node.name, "_"..HUES[oldhue], "_"..HUES[hue])
+ newnode = string.gsub(newnode, "_"..oldhue, "_"..HUES[hue])
else -- it's a greyscale dye
- node.name = string.gsub(node.name, "_"..HUES[oldhue], "_grey")
+ newnode = string.gsub(newnode, "_"..oldhue, "_grey")
end
else -- it's never had a color at all
if hue ~= 0 then -- and if the wield is greyscale, don't change the node name
- node.name = string.gsub(node.name, "_grey", "_"..HUES[hue])
+ newnode = string.gsub(newnode, "_grey", "_"..HUES[hue])
end
end
else
if hue ~= 0 then -- greyscale dye on greyscale node = no hue change
- node.name = string.gsub(node.name, "_grey", "_"..HUES[hue])
+ newnode = string.gsub(newnode, "_grey", "_"..HUES[hue])
end
end
end
-
+ node.name = newnode
minetest.swap_node(pos, node)
else
- if colorfdir then -- we probably need to change the color of the node too
- node.name = string.gsub(node.name, HUES[oldhue], HUES[hue])
+ newnode = oldnode -- note that here, newnode/oldnode are a full node, not just the name.
+ if colorfdir then
+ print("prevdye = "..dump(prevdye))
+ print("hue = "..dump(hue).." "..dump(HUES[hue]))
+ print("newnode.name = "..newnode.name)
+ if oldhue then
+ newnode.name = string.gsub(newnode.name, "_"..oldhue, "_"..HUES[hue])
+ end
end
- minetest.swap_node(pos, node)
+ newnode.param2 = paletteidx + (minetest.get_node(pos).param2 % 32)
+ minetest.set_node(pos, newnode)
end
else
if unifieddyes.is_buildable_to(player:get_player_name(), pos2) and
minetest.registered_nodes[name] then
local placeable_node = minetest.registered_nodes[stack:get_name()]
minetest.set_node(pos2, placeable_node)
+ print(minetest.get_node(pos).name)
stack:take_item()
return stack
end