--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", airbrush_replacement_node = "unifiedbricks:brickblock", 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", airbrush_replacement_node = "unifiedbricks:clayblock", 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 }) print("[UnifiedBricks] Loaded!")