diff options
author | cheapie <no-email-for-you@example.com> | 2018-12-01 17:59:00 -0600 |
---|---|---|
committer | cheapie <no-email-for-you@example.com> | 2018-12-01 17:59:00 -0600 |
commit | 58dd71e561a3831102e9ffcfcf1888299e3569b2 (patch) | |
tree | a320a596adb47cdd33366f41bc4bc14e28b59fa9 /init.lua | |
parent | 1fd850d37c21bec3fffa29aa299c2fefd7f940ad (diff) | |
download | unifieddyes-master.tar unifieddyes-master.tar.gz unifieddyes-master.tar.bz2 unifieddyes-master.tar.xz unifieddyes-master.zip |
(oh, and https://www.youtube.com/watch?v=OEVFbrEv83w too)
Diffstat (limited to 'init.lua')
-rw-r--r-- | init.lua | 43 |
1 files changed, 34 insertions, 9 deletions
@@ -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 |