mirror of
https://github.com/mt-mods/unifieddyes.git
synced 2024-11-29 19:03:50 +01:00
rework how split palettes are handled
This commit is contained in:
parent
1c7f403f29
commit
1773af6868
111
init.lua
111
init.lua
@ -39,24 +39,37 @@ else
|
|||||||
S = function(s) return s end
|
S = function(s) return s end
|
||||||
end
|
end
|
||||||
|
|
||||||
unifieddyes.hue_to_idx = {
|
-- helper functions for other mods that use this one
|
||||||
red = 2,
|
|
||||||
orange = 3,
|
|
||||||
yellow = 4,
|
|
||||||
lime = 5,
|
|
||||||
green = 6,
|
|
||||||
aqua = 7,
|
|
||||||
cyan = 8,
|
|
||||||
skyblue = 9,
|
|
||||||
blue = 10,
|
|
||||||
violet = 11,
|
|
||||||
magenta = 12,
|
|
||||||
redviolet = 13,
|
|
||||||
|
|
||||||
grey = 1
|
local HUES = {
|
||||||
|
"red",
|
||||||
|
"orange",
|
||||||
|
"yellow",
|
||||||
|
"lime",
|
||||||
|
"green",
|
||||||
|
"aqua",
|
||||||
|
"cyan",
|
||||||
|
"skyblue",
|
||||||
|
"blue",
|
||||||
|
"violet",
|
||||||
|
"magenta",
|
||||||
|
"redviolet"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- helper functions for other mods that use this one
|
local HUES2 = {
|
||||||
|
"Red",
|
||||||
|
"Orange",
|
||||||
|
"Yellow",
|
||||||
|
"Lime",
|
||||||
|
"Green",
|
||||||
|
"Aqua",
|
||||||
|
"Cyan",
|
||||||
|
"Sky-blue",
|
||||||
|
"Blue",
|
||||||
|
"Violet",
|
||||||
|
"Magenta",
|
||||||
|
"Red-violet"
|
||||||
|
}
|
||||||
|
|
||||||
-- code borrowed from homedecor
|
-- code borrowed from homedecor
|
||||||
|
|
||||||
@ -86,7 +99,8 @@ end
|
|||||||
|
|
||||||
-- code borrowed from cheapie's plasticbox mod
|
-- code borrowed from cheapie's plasticbox mod
|
||||||
|
|
||||||
function unifieddyes.getpaletteidx(color)
|
function unifieddyes.getpaletteidx(color, colorfdir)
|
||||||
|
local origcolor = color
|
||||||
local aliases = {
|
local aliases = {
|
||||||
["pink"] = "light_red",
|
["pink"] = "light_red",
|
||||||
["brown"] = "dark_orange",
|
["brown"] = "dark_orange",
|
||||||
@ -134,9 +148,14 @@ function unifieddyes.getpaletteidx(color)
|
|||||||
end
|
end
|
||||||
|
|
||||||
color = aliases[color] or color
|
color = aliases[color] or color
|
||||||
|
local idx
|
||||||
|
|
||||||
if grayscale[color] then
|
if grayscale[color] then
|
||||||
return(grayscale[color])
|
if colorfdir then
|
||||||
|
return (grayscale[color] * 32), 0
|
||||||
|
else
|
||||||
|
return grayscale[color], 0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local shade = ""
|
local shade = ""
|
||||||
@ -156,7 +175,11 @@ function unifieddyes.getpaletteidx(color)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if hues[color] and shades[shade] then
|
if hues[color] and shades[shade] then
|
||||||
return(hues[color] * 8 + shades[shade])
|
if not colorfdir then
|
||||||
|
return (hues[color] * 8 + shades[shade]), hues[color]
|
||||||
|
else
|
||||||
|
return (shades[shade] * 32), hues[color]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -169,14 +192,16 @@ function unifieddyes.on_destruct(pos)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function unifieddyes.on_rightclick(pos, node, player, stack, pointed_thing, newnode)
|
function unifieddyes.on_rightclick(pos, node, player, stack, pointed_thing, newnode)
|
||||||
|
local colorfdir = (minetest.registered_nodes[minetest.get_node(pos).name].paramtype2 == "colorfacedir")
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then
|
if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then
|
||||||
minetest.record_protection_violation(pos,name)
|
minetest.record_protection_violation(pos,name)
|
||||||
return stack
|
return stack
|
||||||
end
|
end
|
||||||
local name = stack:get_name()
|
local name = stack:get_name()
|
||||||
|
local pos2 = unifieddyes.select_node(pointed_thing)
|
||||||
|
local paletteidx, hue = unifieddyes.getpaletteidx(name, colorfdir)
|
||||||
|
|
||||||
local paletteidx = unifieddyes.getpaletteidx(name)
|
|
||||||
if paletteidx then
|
if paletteidx then
|
||||||
|
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
@ -192,18 +217,30 @@ function unifieddyes.on_rightclick(pos, node, player, stack, pointed_thing, newn
|
|||||||
meta:set_string("dye",name)
|
meta:set_string("dye",name)
|
||||||
stack:take_item()
|
stack:take_item()
|
||||||
node.param2 = paletteidx
|
node.param2 = paletteidx
|
||||||
|
|
||||||
|
local oldpaletteidx, oldhue = unifieddyes.getpaletteidx(prevdye, colorfdir)
|
||||||
|
|
||||||
if newnode then
|
if newnode then
|
||||||
node.name = newnode
|
node.name = newnode
|
||||||
|
if colorfdir then -- we probably need to change the color of the node too
|
||||||
|
if oldhue ~=0 then -- it's colored, not grey
|
||||||
|
node.name = string.gsub(node.name, "_"..HUES[oldhue], "_"..HUES[hue])
|
||||||
|
else
|
||||||
|
node.name = string.gsub(node.name, "_grey", "_"..HUES[hue])
|
||||||
|
end
|
||||||
|
end
|
||||||
minetest.swap_node(pos, node)
|
minetest.swap_node(pos, node)
|
||||||
else
|
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])
|
||||||
|
end
|
||||||
minetest.swap_node(pos, node)
|
minetest.swap_node(pos, node)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
local pos2 = unifieddyes.select_node(pointed_thing)
|
|
||||||
if unifieddyes.is_buildable_to(player:get_player_name(), pos2) and
|
if unifieddyes.is_buildable_to(player:get_player_name(), pos2) and
|
||||||
minetest.registered_nodes[name] then
|
minetest.registered_nodes[name] then
|
||||||
local oldnode = minetest.registered_nodes[stack:get_name()]
|
local placeable_node = minetest.registered_nodes[stack:get_name()]
|
||||||
minetest.set_node(pos2, oldnode)
|
minetest.set_node(pos2, placeable_node)
|
||||||
stack:take_item()
|
stack:take_item()
|
||||||
return stack
|
return stack
|
||||||
end
|
end
|
||||||
@ -352,36 +389,6 @@ minetest.register_craft( {
|
|||||||
-- Brightness levels in the textures are 33% ("dark"), 66% ("medium"),
|
-- Brightness levels in the textures are 33% ("dark"), 66% ("medium"),
|
||||||
-- 100% ("full", but not so-named), and 150% ("light").
|
-- 100% ("full", but not so-named), and 150% ("light").
|
||||||
|
|
||||||
local HUES = {
|
|
||||||
"red",
|
|
||||||
"orange",
|
|
||||||
"yellow",
|
|
||||||
"lime",
|
|
||||||
"green",
|
|
||||||
"aqua",
|
|
||||||
"cyan",
|
|
||||||
"skyblue",
|
|
||||||
"blue",
|
|
||||||
"violet",
|
|
||||||
"magenta",
|
|
||||||
"redviolet"
|
|
||||||
}
|
|
||||||
|
|
||||||
local HUES2 = {
|
|
||||||
"Red",
|
|
||||||
"Orange",
|
|
||||||
"Yellow",
|
|
||||||
"Lime",
|
|
||||||
"Green",
|
|
||||||
"Aqua",
|
|
||||||
"Cyan",
|
|
||||||
"Sky-blue",
|
|
||||||
"Blue",
|
|
||||||
"Violet",
|
|
||||||
"Magenta",
|
|
||||||
"Red-violet"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
for i = 1, 12 do
|
for i = 1, 12 do
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user