mirror of
https://github.com/mt-mods/unifieddyes.git
synced 2024-12-24 01:30:29 +01:00
Add function to get the hex color from a dye name
(oh, and https://www.youtube.com/watch?v=OEVFbrEv83w too)
This commit is contained in:
parent
1fd850d37c
commit
58dd71e561
43
init.lua
43
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
|
||||
|
Loading…
Reference in New Issue
Block a user