mirror of
https://github.com/mt-mods/unifieddyes.git
synced 2025-06-28 14:26:21 +02:00
Compare commits
5 Commits
2018-09-13
...
2018-11-09
Author | SHA1 | Date | |
---|---|---|---|
334de564fd | |||
545968517b | |||
368205d3b8 | |||
feed6d5aae | |||
4811847655 |
125
init.lua
125
init.lua
@ -99,6 +99,14 @@ unifieddyes.VALS = {
|
|||||||
"dark_"
|
"dark_"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unifieddyes.VALS_SPLIT = {
|
||||||
|
"faint_",
|
||||||
|
"light_",
|
||||||
|
"",
|
||||||
|
"medium_",
|
||||||
|
"dark_"
|
||||||
|
}
|
||||||
|
|
||||||
unifieddyes.VALS_EXTENDED = {
|
unifieddyes.VALS_EXTENDED = {
|
||||||
"faint_",
|
"faint_",
|
||||||
"pastel_",
|
"pastel_",
|
||||||
@ -164,20 +172,25 @@ minetest.register_on_placenode(
|
|||||||
end
|
end
|
||||||
|
|
||||||
if not string.find(itemstack:to_string(), "palette_index") then
|
if not string.find(itemstack:to_string(), "palette_index") then
|
||||||
local param2 = 0
|
local param2
|
||||||
local color = 0
|
local color = 0
|
||||||
|
|
||||||
if def.palette == "unifieddyes_palette_extended.png" then
|
if def.palette == "unifieddyes_palette_extended.png"
|
||||||
|
and def.paramtype2 == "color" then
|
||||||
param2 = 240
|
param2 = 240
|
||||||
color = 240
|
color = 240
|
||||||
elseif def.palette == "unifieddyes_palette_colorwallmounted.png" then
|
elseif def.palette == "unifieddyes_palette_colorwallmounted.png"
|
||||||
|
and def.paramtype2 == "colorwallmounted" then
|
||||||
param2 = newnode.param2 % 8
|
param2 = newnode.param2 % 8
|
||||||
else -- it's a split palette
|
elseif string.find(def.palette, "unifieddyes_palette_")
|
||||||
|
and def.paramtype2 == "colorfacedir" then -- it's a split palette
|
||||||
param2 = newnode.param2 % 32
|
param2 = newnode.param2 % 32
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.swap_node(pos, {name = newnode.name, param2 = param2})
|
if param2 then
|
||||||
minetest.get_meta(pos):set_int("palette_index", color)
|
minetest.swap_node(pos, {name = newnode.name, param2 = param2})
|
||||||
|
minetest.get_meta(pos):set_int("palette_index", color)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
@ -282,7 +295,7 @@ end
|
|||||||
function unifieddyes.register_color_craft(craft)
|
function unifieddyes.register_color_craft(craft)
|
||||||
local hues_table = unifieddyes.HUES_EXTENDED
|
local hues_table = unifieddyes.HUES_EXTENDED
|
||||||
local sats_table = unifieddyes.SATS
|
local sats_table = unifieddyes.SATS
|
||||||
local vals_table = unifieddyes.VALS
|
local vals_table = unifieddyes.VALS_SPLIT
|
||||||
local greys_table = unifieddyes.GREYS
|
local greys_table = unifieddyes.GREYS
|
||||||
|
|
||||||
if craft.palette == "wallmounted" then
|
if craft.palette == "wallmounted" then
|
||||||
@ -654,12 +667,17 @@ function unifieddyes.on_airbrush(itemstack, player, pointed_thing)
|
|||||||
|
|
||||||
local palette = nil
|
local palette = nil
|
||||||
local fdir = 0
|
local fdir = 0
|
||||||
if def.paramtype2 == "color" then
|
if not def or not def.palette then
|
||||||
|
minetest.chat_send_player(player_name, "*** That node can't be colored -- it's either undefined or has no palette.")
|
||||||
|
return
|
||||||
|
elseif def.palette == "unifieddyes_palette_extended.png" then
|
||||||
palette = "extended"
|
palette = "extended"
|
||||||
elseif def.paramtype2 == "colorwallmounted" then
|
elseif def.palette == "unifieddyes_palette_colorwallmounted.png" then
|
||||||
palette = "wallmounted"
|
palette = "wallmounted"
|
||||||
fdir = node.param2 % 8
|
fdir = node.param2 % 8
|
||||||
elseif def.paramtype2 == "colorfacedir" then
|
elseif def.palette ~= "unifieddyes_palette_extended.png"
|
||||||
|
and def.palette ~= "unifieddyes_palette_colorwallmounted.png"
|
||||||
|
and string.find(def.palette, "unifieddyes_palette_") then
|
||||||
palette = "split"
|
palette = "split"
|
||||||
fdir = node.param2 % 32
|
fdir = node.param2 % 32
|
||||||
else
|
else
|
||||||
@ -804,10 +822,17 @@ end
|
|||||||
|
|
||||||
local hps = 0.6 -- horizontal position scale
|
local hps = 0.6 -- horizontal position scale
|
||||||
local vps = 1.3 -- vertical position scale
|
local vps = 1.3 -- vertical position scale
|
||||||
local vs = 0.3 -- vertical shift/offset
|
local vs = 0.1 -- vertical shift/offset
|
||||||
|
|
||||||
local color_button_size = ";0.75,0.75;"
|
local color_button_size = ";0.75,0.75;"
|
||||||
local color_square_size = ";0.69,0.69;"
|
local color_square_size = ";0.69,0.69;"
|
||||||
|
|
||||||
|
function unifieddyes.make_readable_color(color)
|
||||||
|
local s = string.gsub(color, "_", " ")
|
||||||
|
s = string.gsub(s, "s50", "(low saturation)")
|
||||||
|
return s
|
||||||
|
end
|
||||||
|
|
||||||
function unifieddyes.make_colored_square(hexcolor, colorname, showall, creative, painting_with, nodepalette, hp, v2, selindic, inv, explist)
|
function unifieddyes.make_colored_square(hexcolor, colorname, showall, creative, painting_with, nodepalette, hp, v2, selindic, inv, explist)
|
||||||
|
|
||||||
local dye = "dye:"..colorname
|
local dye = "dye:"..colorname
|
||||||
@ -829,26 +854,29 @@ function unifieddyes.make_colored_square(hexcolor, colorname, showall, creative,
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local tooltip = "tooltip["..colorname..";"..
|
||||||
|
unifieddyes.make_readable_color(colorname)..
|
||||||
|
"\n(dye:"..colorname..")]"
|
||||||
|
|
||||||
if dye == painting_with then
|
if dye == painting_with then
|
||||||
overlay = "^unifieddyes_select_overlay.png"
|
overlay = "^unifieddyes_select_overlay.png"
|
||||||
selindic = "unifieddyes_white_square.png"..colorize..overlay..unavail_overlay.."]"..
|
selindic = "unifieddyes_white_square.png"..colorize..overlay..unavail_overlay.."]"..tooltip
|
||||||
"tooltip["..colorname..";"..colorname.."]"
|
|
||||||
end
|
end
|
||||||
local form
|
|
||||||
|
|
||||||
|
local form
|
||||||
if unavail_overlay == "" then
|
if unavail_overlay == "" then
|
||||||
form = "image_button["..
|
form = "image_button["..
|
||||||
(hp*hps)..","..(v2*vps+vs)..
|
(hp*hps)..","..(v2*vps+vs)..
|
||||||
color_button_size..
|
color_button_size..
|
||||||
"unifieddyes_white_square.png"..colorize..overlay..unavail_overlay..";"..
|
"unifieddyes_white_square.png"..colorize..overlay..unavail_overlay..";"..
|
||||||
colorname..";]"..
|
colorname..";]"..
|
||||||
"tooltip["..colorname..";"..colorname.."]"
|
tooltip
|
||||||
else
|
else
|
||||||
form = "image["..
|
form = "image["..
|
||||||
(hp*hps)..","..(v2*vps+vs)..
|
(hp*hps)..","..(v2*vps+vs)..
|
||||||
color_square_size..
|
color_square_size..
|
||||||
"unifieddyes_white_square.png"..colorize..overlay..unavail_overlay.."]"..
|
"unifieddyes_white_square.png"..colorize..overlay..unavail_overlay.."]"..
|
||||||
"tooltip["..colorname.." (unavailable);"..colorname.."]"
|
tooltip
|
||||||
end
|
end
|
||||||
|
|
||||||
return form, selindic
|
return form, selindic
|
||||||
@ -866,24 +894,29 @@ function unifieddyes.show_airbrush_form(player)
|
|||||||
local nodepalette = "extended"
|
local nodepalette = "extended"
|
||||||
local showall = unifieddyes.player_showall[player_name]
|
local showall = unifieddyes.player_showall[player_name]
|
||||||
|
|
||||||
t[1] = "size[15,8.5]label[7,-0.25;Select a color:]"
|
t[1] = "size[14.5,8.5]label[7,-0.3;Select a color:]"
|
||||||
local selindic = "unifieddyes_select_overlay.png^unifieddyes_question.png]"
|
local selindic = "unifieddyes_select_overlay.png^unifieddyes_question.png]"
|
||||||
|
|
||||||
local last_right_click = unifieddyes.player_last_right_clicked[player_name]
|
local last_right_click = unifieddyes.player_last_right_clicked[player_name]
|
||||||
if last_right_click then
|
if last_right_click then
|
||||||
if last_right_click.def and last_right_click.def.paramtype2 then
|
if last_right_click.def and last_right_click.def.palette then
|
||||||
if last_right_click.def.paramtype2 == "colorwallmounted" then
|
if last_right_click.def.palette == "unifieddyes_palette_colorwallmounted.png" then
|
||||||
nodepalette = "wallmounted"
|
nodepalette = "wallmounted"
|
||||||
elseif last_right_click.def.paramtype2 == "color" then
|
elseif last_right_click.def.palette == "unifieddyes_palette_extended.png" then
|
||||||
t[#t+1] = "label[0.5,8.25;(Right-clicked a node that supports all 256 colors, showing them all)]"
|
t[#t+1] = "label[0.5,8.25;(Right-clicked a node that supports all 256 colors, showing them all)]"
|
||||||
showall = true
|
showall = true
|
||||||
elseif last_right_click.def.paramtype2 == "colorfacedir" then
|
elseif last_right_click.def.palette ~= "unifieddyes_palette_extended.png"
|
||||||
|
and last_right_click.def.palette ~= "unifieddyes_palette_colorwallmounted.png"
|
||||||
|
and string.find(last_right_click.def.palette, "unifieddyes_palette_") then
|
||||||
nodepalette = "split"
|
nodepalette = "split"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not last_right_click.def.groups or not last_right_click.def.groups.ud_param2_colorable then
|
if not last_right_click.def.groups
|
||||||
|
or not last_right_click.def.groups.ud_param2_colorable
|
||||||
|
or not last_right_click.def.palette
|
||||||
|
or not string.find(last_right_click.def.palette, "unifieddyes_palette_") then
|
||||||
t[#t+1] = "label[0.5,8.25;(Right-clicked a node not supported by the Airbrush, showing all colors)]"
|
t[#t+1] = "label[0.5,8.25;(Right-clicked a node not supported by the Airbrush, showing all colors)]"
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -897,7 +930,7 @@ function unifieddyes.show_airbrush_form(player)
|
|||||||
|
|
||||||
for hi, h in ipairs(unifieddyes.HUES_EXTENDED) do
|
for hi, h in ipairs(unifieddyes.HUES_EXTENDED) do
|
||||||
local hue = h[1]
|
local hue = h[1]
|
||||||
local hp=hi-0.5
|
local hp=hi-1
|
||||||
|
|
||||||
local r = h[2]
|
local r = h[2]
|
||||||
local g = h[3]
|
local g = h[3]
|
||||||
@ -925,7 +958,7 @@ function unifieddyes.show_airbrush_form(player)
|
|||||||
|
|
||||||
for hi, h in ipairs(unifieddyes.HUES_EXTENDED) do
|
for hi, h in ipairs(unifieddyes.HUES_EXTENDED) do
|
||||||
local hue = h[1]
|
local hue = h[1]
|
||||||
local hp=hi-0.5
|
local hp=hi-1
|
||||||
|
|
||||||
local r = h[2]
|
local r = h[2]
|
||||||
local g = h[3]
|
local g = h[3]
|
||||||
@ -957,7 +990,7 @@ function unifieddyes.show_airbrush_form(player)
|
|||||||
local v2=5
|
local v2=5
|
||||||
for y = 0, 15 do
|
for y = 0, 15 do
|
||||||
|
|
||||||
local hp=(15-y)+0.5
|
local hp=15-y
|
||||||
|
|
||||||
local hexgrey = string.format("%02x", y*17)..string.format("%02x", y*17)..string.format("%02x", y*17)
|
local hexgrey = string.format("%02x", y*17)..string.format("%02x", y*17)..string.format("%02x", y*17)
|
||||||
local grey = "grey_"..y
|
local grey = "grey_"..y
|
||||||
@ -976,48 +1009,52 @@ function unifieddyes.show_airbrush_form(player)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if not creative then
|
if not creative then
|
||||||
t[#t+1] = "image[10.3,"
|
t[#t+1] = "image[10,"
|
||||||
t[#t+1] = (vps*5+vs)
|
t[#t+1] = (vps*5.55+vs)
|
||||||
t[#t+1] = color_button_size
|
t[#t+1] = color_button_size
|
||||||
t[#t+1] = "unifieddyes_onhand_overlay.png]label[11.0,"
|
t[#t+1] = "unifieddyes_onhand_overlay.png]label[10.7,"
|
||||||
t[#t+1] = (vps*5.02+vs)
|
t[#t+1] = (vps*5.51+vs)
|
||||||
t[#t+1] = ";Dyes]"
|
t[#t+1] = ";Dyes]"
|
||||||
t[#t+1] = "label[11.0,"
|
t[#t+1] = "label[10.7,"
|
||||||
t[#t+1] = (vps*5.18+vs)
|
t[#t+1] = (vps*5.67+vs)
|
||||||
t[#t+1] = ";on hand]"
|
t[#t+1] = ";on hand]"
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
t[#t+1] = "image[11.9,"
|
t[#t+1] = "image[10,"
|
||||||
t[#t+1] = (vps*5+vs)
|
t[#t+1] = (vps*5+vs)
|
||||||
t[#t+1] = color_button_size
|
t[#t+1] = color_button_size
|
||||||
t[#t+1] = selindic
|
t[#t+1] = selindic
|
||||||
|
|
||||||
if painting_with then
|
if painting_with then
|
||||||
t[#t+1] = "label[12.6,"
|
t[#t+1] = "label[10.7,"
|
||||||
t[#t+1] = (vps*5.02+vs)
|
t[#t+1] = (vps*4.90+vs)
|
||||||
t[#t+1] = ";Your selection:]"
|
t[#t+1] = ";Your selection:]"
|
||||||
t[#t+1] = "label[12.6,"
|
t[#t+1] = "label[10.7,"
|
||||||
t[#t+1] = (vps*5.18+vs)
|
t[#t+1] = (vps*5.07+vs)
|
||||||
t[#t+1] = ";"
|
t[#t+1] = ";"
|
||||||
|
t[#t+1] = unifieddyes.make_readable_color(string.sub(painting_with, 5))
|
||||||
|
t[#t+1] = "]label[10.7,"
|
||||||
|
t[#t+1] = (vps*5.24+vs)
|
||||||
|
t[#t+1] = ";("
|
||||||
t[#t+1] = painting_with
|
t[#t+1] = painting_with
|
||||||
t[#t+1] = "]"
|
t[#t+1] = ")]"
|
||||||
else
|
else
|
||||||
t[#t+1] = "label[12.6,"
|
t[#t+1] = "label[10.7,"
|
||||||
t[#t+1] = (vps*5.1+vs)
|
t[#t+1] = (vps*5.07+vs)
|
||||||
t[#t+1] = ";Your selection]"
|
t[#t+1] = ";Your selection]"
|
||||||
end
|
end
|
||||||
|
|
||||||
t[#t+1] = "button_exit[11,8;2,1;cancel;Cancel]button_exit[13,8;2,1;accept;Accept]"
|
t[#t+1] = "button_exit[10.5,8;2,1;cancel;Cancel]button_exit[12.5,8;2,1;accept;Accept]"
|
||||||
|
|
||||||
|
|
||||||
if last_right_click and last_right_click.def and nodepalette ~= "extended" then
|
if last_right_click and last_right_click.def and nodepalette ~= "extended" then
|
||||||
if showall then
|
if showall then
|
||||||
t[#t+1] = "button[0.5,8;2,1;show_avail;Show Available]"
|
t[#t+1] = "button[0,8;2,1;show_avail;Show Available]"
|
||||||
t[#t+1] = "label[2.5,8.25;(Currently showing all 256 colors)]"
|
t[#t+1] = "label[2,8.25;(Currently showing all 256 colors)]"
|
||||||
else
|
else
|
||||||
t[#t+1] = "button[0.5,8;2,1;show_all;Show All Colors]"
|
t[#t+1] = "button[0,8;2,1;show_all;Show All Colors]"
|
||||||
t[#t+1] = "label[2.5,8.25;(Currently only showing what the right-clicked node can use)]"
|
t[#t+1] = "label[2,8.25;(Currently only showing what the right-clicked node can use)]"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user