Vanessa Dannenberg 9c9457e1f5 update castles modpack, blox, bobblocks, coloredwood, technic,
gloopblocks, homedecor, ilights, led marquee, plasticbox, solidcolor,
stained_glass, unified bricks, and unified dyes

In most of these, the update is to shift over to the new "old" coloring
paradigm in Unified Dyes.  See its forum thread for details.
2018-08-22 22:28:28 -04:00

401 lines
9.9 KiB
Lua

--Unified Bricks by Vsevolod Borislav (wowiamdiamonds)
--
--License: WTFPL
--
--Depends: default, bucket, unifieddyes, vessels
--
--Obviously, offers the same colors in unifieddyes.
--Thanks go to VanessaE for making unifieddyes, gentextures.sh, etc.
unifiedbricks = {}
unifiedbricks.old_static_list = {}
unifiedbricks.old_static_list_formals = {}
minetest.register_alias("unifieddyes:white","unifieddyes:white_paint")
minetest.register_alias("unifieddyes:lightgrey","unifieddyes:lightgrey_paint")
minetest.register_alias("unifieddyes:grey","unifieddyes:grey_paint")
minetest.register_alias("unifieddyes:darkgrey","unifieddyes:darkgrey_paint")
HUES = {
"red",
"orange",
"yellow",
"lime",
"green",
"aqua",
"cyan",
"skyblue",
"blue",
"violet",
"magenta",
"redviolet",
"black",
"darkgrey",
"grey",
"lightgrey",
"white"
}
TYPES = {
"clayblock_",
"clay_",
"brick_",
"brickblock_",
"multicolor_"
}
SATURATION = {
"_s50",
""
}
DARKNESS = {
"dark_",
"medium_",
"",
"light_"
}
--formal versions
FORMALHUES = {
"Red",
"Orange",
"Yellow",
"Lime",
"Green",
"Aqua",
"Cyan",
"Sky blue",
"Blue",
"Violet",
"Magenta",
"Red violet",
"Black",
"Dark grey",
"Grey",
"Light grey",
"White"
}
FORMALTYPES = {
" clay",
" clay lump",
" brick",
" bricks",
" multicolor bricks"
}
FORMALSATURATION = {
" (low saturation)",
""
}
FORMALDARKNESS = {
"Dark ",
"Medium ",
"Bright ",
"Light "
}
-- param2-coloring-enabled nodes
minetest.register_node("unifiedbricks:brickblock", {
description = "Brick Block",
tiles = {
"unifiedbricks_brickblock.png"
},
overlay_tiles = {
{ name = "unifiedbricks_mortar.png", color = "white" }
},
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
is_ground_content = true,
groups = {cracky=3, not_in_creative_inventory=1, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(),
on_construct = unifieddyes.on_construct,
})
minetest.override_item("default:brick", {
palette = "unifieddyes_palette_extended.png",
groups = {cracky = 3, ud_param2_colorable = 1},
})
minetest.register_node("unifiedbricks:clayblock", {
description = "Clay Block",
tiles = {
"unifiedbricks_clayblock.png",
},
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
is_ground_content = true,
groups = {crumbly=3, not_in_creative_inventory=1, ud_param2_colorable = 1},
sounds = default.node_sound_dirt_defaults({
footstep = "",
}),
on_construct = unifieddyes.on_construct,
})
minetest.override_item("default:clay", {
palette = "unifieddyes_palette_extended.png",
groups = {crumbly = 3, ud_param2_colorable = 1},
})
minetest.register_node("unifiedbricks:brickblock_multicolor_dark", {
description = "Brick block (dark multicolor)",
tiles = {
"unifiedbricks_brickblock_multicolor_dark.png",
},
overlay_tiles = {
{ name = "unifiedbricks_mortar2.png", color = "white" }
},
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
is_ground_content = true,
groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(),
on_construct = unifieddyes.on_construct,
})
minetest.register_node("unifiedbricks:brickblock_multicolor_medium", {
description = "Brick block (medium multicolor)",
tiles = {
"unifiedbricks_brickblock_multicolor_medium.png"
},
overlay_tiles = {
{ name = "unifiedbricks_mortar3.png", color = "white" }
},
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
is_ground_content = true,
groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(),
on_construct = unifieddyes.on_construct,
})
minetest.register_node("unifiedbricks:brickblock_multicolor_light", {
description = "Brick block (light multicolor)",
tiles = {
"unifiedbricks_brickblock_multicolor_light.png"
},
overlay_tiles = {
{ name = "unifiedbricks_mortar4.png", color = "white" }
},
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
is_ground_content = true,
groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(),
on_construct = unifieddyes.on_construct,
})
minetest.register_craft( {
type = "shapeless",
output = "unifiedbricks:brickblock_multicolor_dark",
recipe = {
"default:brick",
"unifieddyes:grey",
"unifieddyes:dark_grey",
"unifieddyes:dark_grey"
},
})
minetest.register_craft( {
type = "shapeless",
output = "unifiedbricks:brickblock_multicolor_medium",
recipe = {
"default:brick",
"unifieddyes:white",
"unifieddyes:grey",
"unifieddyes:dark_grey"
},
})
minetest.register_craft( {
type = "shapeless",
output = "unifiedbricks:brickblock_multicolor_light",
recipe = {
"default:brick",
"unifieddyes:white",
"unifieddyes:white",
"unifieddyes:grey"
},
})
unifieddyes.register_color_craft({
output = "unifiedbricks:brickblock",
palette = "extended",
neutral_node = "default:brick",
type = "shapeless",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
unifieddyes.register_color_craft({
output = "unifiedbricks:clayblock",
palette = "extended",
neutral_node = "default:clay",
type = "shapeless",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
unifieddyes.register_color_craft({
output = "unifiedbricks:brickblock_multicolor_dark",
palette = "extended",
neutral_node = "unifiedbricks:brickblock_multicolor_dark",
type = "shapeless",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
unifieddyes.register_color_craft({
output = "unifiedbricks:brickblock_multicolor_medium",
palette = "extended",
neutral_node = "unifiedbricks:brickblock_multicolor_medium",
type = "shapeless",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
unifieddyes.register_color_craft({
output = "unifiedbricks:brickblock_multicolor_light",
palette = "extended",
neutral_node = "unifiedbricks:brickblock_multicolor_light",
type = "shapeless",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
-- static nodes
unifiedbricks.register_old_static_block = function(name, formalname, blocktype)
table.insert(unifiedbricks.old_static_list, "unifiedbricks:"..blocktype.."_"..name)
table.insert(unifiedbricks.old_static_list_formals, formalname)
end
for _, color in ipairs(HUES) do
table.insert(unifiedbricks.old_static_list, "unifiedbricks:multicolor_dark_"..color)
table.insert(unifiedbricks.old_static_list, "unifiedbricks:multicolor_medium_"..color)
table.insert(unifiedbricks.old_static_list, "unifiedbricks:multicolor_light_"..color)
end
table.insert(unifiedbricks.old_static_list, "unifiedbricks:multicolor_darkgrey")
table.insert(unifiedbricks.old_static_list, "unifiedbricks:multicolor_grey")
table.insert(unifiedbricks.old_static_list, "unifiedbricks:multicolor_lightgrey")
--REGISTERS ALL STATIC NODES EXCEPT MULTICOLOR BRICK BLOCKS
for i = 1,17 do
for j = 1,4 do
if i > 12 then
formalname = FORMALHUES[i]
name = HUES[i]
if j == 1 then
unifiedbricks.register_old_static_block(name, formalname, "clayblock")
elseif j == 4 then
unifiedbricks.register_old_static_block(name, formalname, "brickblock")
end
else
for k = 1,4 do
if k == 4 then
formalname = FORMALDARKNESS[k] .. FORMALHUES[i]
name = DARKNESS[k] .. HUES[i]
if j == 1 then
unifiedbricks.register_old_static_block(name, formalname, "clayblock")
elseif j == 4 then
unifiedbricks.register_old_static_block(name, formalname, "brickblock")
end
else
for l = 1,2 do
formalname = FORMALDARKNESS[k] .. FORMALHUES[i] .. FORMALSATURATION[l]
name = DARKNESS[k] .. HUES[i] .. SATURATION[l]
if j == 1 then
unifiedbricks.register_old_static_block(name, formalname, "clayblock")
elseif j == 4 then
unifiedbricks.register_old_static_block(name, formalname, "brickblock")
end
end
end
end
end
end
end
-- convert in-map static nodes to use param2 coloring
minetest.register_lbm({
name = "unifiedbricks:convert_brickblocks",
label = "Convert clay blocks and single-color brick blocks to use param2 color",
run_at_every_load = false,
nodenames = unifiedbricks.old_static_list,
action = function(pos, node)
local name = node.name
local t = string.find(name, "_")
local type = string.sub(name, 1, t - 1)
local color1 = string.sub(name, t + 1)
local color2 = string.gsub(color1, "grey", "_grey")
if color2 == "_grey" then color2 = "grey" end
local paletteidx, hue = unifieddyes.getpaletteidx("unifieddyes:"..color2, "extended")
if not paletteidx or not hue then return end
if string.find(type, "multicolor") then
local newpalette = (hue*8)+1
local shade
if string.find(name, "dark") then
shade = "dark"
elseif string.find(name, "medium")
or name == "unifiedbricks:multicolor_grey" then
shade = "medium"
else
shade = "light"
end
if string.find(name, "grey") then
newpalette = 2
end
minetest.set_node(pos, { name = "unifiedbricks:brickblock_multicolor_"..shade, param2 = newpalette })
elseif string.find(type, "brickblock") then
minetest.set_node(pos, { name = "unifiedbricks:brickblock", param2 = paletteidx })
elseif string.find(type, "clayblock") then
minetest.set_node(pos, { name = "unifiedbricks:clayblock", param2 = paletteidx })
end
local meta = minetest.get_meta(pos)
meta:set_string("dye", "unifieddyes:"..color1)
meta:set_string("palette", "ext")
end
})
minetest.register_lbm({
name = "unifiedbricks:recolor_bricks",
label = "Convert 89-color bricks to use UD extended palette",
run_at_every_load = false,
nodenames = {
"unifiedbricks:clayblock",
"unifiedbricks:brickblock",
"unifiedbricks:brickblock_multicolor_dark",
"unifiedbricks:brickblock_multicolor_medium",
"unifiedbricks:brickblock_multicolor_light",
},
action = function(pos, node)
local meta = minetest.get_meta(pos)
if meta:get_string("palette") ~= "ext" then
minetest.swap_node(pos, { name = node.name, param2 = unifieddyes.convert_classic_palette[node.param2] })
meta:set_string("palette", "ext")
end
end
})
print("[UnifiedBricks] Loaded!")