summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--init.lua43
1 files changed, 34 insertions, 9 deletions
diff --git a/init.lua b/init.lua
index 9edd87f..e19cbf3 100644
--- a/init.lua
+++ b/init.lua
@@ -630,6 +630,19 @@ function unifieddyes.getpaletteidx(color, palette_type)
end
end
+function unifieddyes.get_color_from_dye_name(name)
+ if name == "dye:black" then
+ return "000000"
+ elseif name == "dye:white" then
+ return "ffffff"
+ end
+ local item = minetest.registered_items[name]
+ if not item then return end
+ local inv_image = item.inventory_image
+ if not inv_image then return end
+ return string.match(inv_image,"colorize:#(......):200")
+end
+
-- punch-to-recolor using the airbrush
function unifieddyes.on_airbrush(itemstack, player, pointed_thing)
@@ -640,8 +653,28 @@ function unifieddyes.on_airbrush(itemstack, player, pointed_thing)
painting_with = unifieddyes.player_current_dye[player_name]
end
+ if not painting_with then
+ minetest.chat_send_player(player_name, "*** You need to set a color first.")
+ minetest.chat_send_player(player_name, "*** Right-click any random node to open the color selector,")
+ minetest.chat_send_player(player_name, "*** or shift+right-click a colorized node to use its color.")
+ minetest.chat_send_player(player_name, "*** Be sure to click \"Accept\", or the color you select will be ignored.")
+ return
+ end
+
local pos = minetest.get_pointed_thing_position(pointed_thing)
- if not pos then return end
+ if not pos then
+ local look_angle = player:get_look_vertical()
+ if look_angle > -1.55 then
+ minetest.chat_send_player(player_name, "*** No node selected")
+ else
+ local hexcolor = unifieddyes.get_color_from_dye_name(painting_with)
+ local r = tonumber(string.sub(hexcolor,1,2),16)
+ local g = tonumber(string.sub(hexcolor,3,4),16)
+ local b = tonumber(string.sub(hexcolor,5,6),16)
+ player:set_sky({r=r,g=g,b=b,a=255},"plain")
+ end
+ return
+ end
local node = minetest.get_node(pos)
local def = minetest.registered_items[node.name]
@@ -652,14 +685,6 @@ function unifieddyes.on_airbrush(itemstack, player, pointed_thing)
return
end
- if not painting_with then
- minetest.chat_send_player(player_name, "*** You need to set a color first.")
- minetest.chat_send_player(player_name, "*** Right-click any random node to open the color selector,")
- minetest.chat_send_player(player_name, "*** or shift+right-click a colorized node to use its color.")
- minetest.chat_send_player(player_name, "*** Be sure to click \"Accept\", or the color you select will be ignored.")
- return
- end
-
if not (def.groups and def.groups.ud_param2_colorable and def.groups.ud_param2_colorable > 0) then
minetest.chat_send_player(player_name, "*** That node can't be colored.")
return