forked from minetest-mods/unifiedbricks
a1a187d220
for brick blocks and clay blocks. Also, this gets rid of the tons and tons of single bricks and lumps of clay, and gets rid of the related crafts, replacing them with a simple place-and-paint scheme for the clay blocks and single-color brick block. Place a default brick block or default clay block, then right-click on it with a dye color to paint it. Digging one of these will return a default brick or clay block and the dye you painted it with. For the multi-color brick blocks, craft them using a single default brick block and three portions of dye. Digging one returns a default brick block and three portions of dye. Multi-color brick blocks are now in the creative inventory.
321 lines
8.6 KiB
Lua
321 lines
8.6 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",
|
|
{ name = "unifiedbricks_mortar.png", color = 0xffffffff },
|
|
},
|
|
drawtype = "mesh",
|
|
mesh = "unifiedbricks_brick_block.obj",
|
|
paramtype2 = "color",
|
|
palette = "unifiedbricks_ud_palette.png",
|
|
is_ground_content = true,
|
|
groups = {cracky=3, not_in_creative_inventory=1},
|
|
sounds = default.node_sound_stone_defaults(),
|
|
on_destruct = function(pos)
|
|
unifieddyes.on_destruct(pos)
|
|
end,
|
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
|
unifieddyes.on_rightclick(pos, node, clicker,
|
|
itemstack, pointed_thing, "unifiedbricks:brickblock")
|
|
end,
|
|
drop = "default:brick"
|
|
})
|
|
|
|
minetest.override_item("default:brick", {
|
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
|
unifieddyes.on_rightclick(pos, node, clicker,
|
|
itemstack, pointed_thing, "unifiedbricks:brickblock")
|
|
end
|
|
})
|
|
|
|
minetest.register_node("unifiedbricks:clayblock", {
|
|
description = "Clay Block",
|
|
tiles = {
|
|
"unifiedbricks_clayblock.png",
|
|
},
|
|
paramtype2 = "color",
|
|
palette = "unifiedbricks_ud_palette.png",
|
|
is_ground_content = true,
|
|
groups = {crumbly=3, not_in_creative_inventory=1},
|
|
sounds = default.node_sound_dirt_defaults({
|
|
footstep = "",
|
|
}),
|
|
on_destruct = function(pos)
|
|
unifieddyes.on_destruct(pos)
|
|
end,
|
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
|
unifieddyes.on_rightclick(pos, node, clicker,
|
|
itemstack, pointed_thing, "unifiedbricks:clayblock")
|
|
end,
|
|
drop = "default:clay"
|
|
})
|
|
|
|
minetest.override_item("default:clay", {
|
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
|
unifieddyes.on_rightclick(pos, node, clicker,
|
|
itemstack, pointed_thing, "unifiedbricks:clayblock")
|
|
end
|
|
})
|
|
|
|
|
|
-- 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
|
|
|
|
unifiedbricks.register_multicolor = function(name, formalname, drop_one, drop_two, drop_three)
|
|
minetest.register_node("unifiedbricks:" .. TYPES[5] .. name, {
|
|
description = formalname .. FORMALTYPES[5],
|
|
tiles = {"unifiedbricks_" .. TYPES[5] .. name .. ".png"},
|
|
is_ground_content = true,
|
|
groups = {cracky=3},
|
|
drop = {
|
|
max_items = 4,
|
|
items = {
|
|
items = {
|
|
{ "default:brick",
|
|
"unifieddyes:"..drop_one,
|
|
"unifieddyes:"..drop_two,
|
|
"unifieddyes:"..drop_three,
|
|
rarity = 1 }
|
|
}
|
|
}
|
|
},
|
|
sounds = default.node_sound_stone_defaults(),
|
|
})
|
|
end
|
|
|
|
unifiedbricks.register_multicolor_craft = function(name, dye_one, dye_two, dye_three)
|
|
minetest.register_craft( {
|
|
type = "shapeless",
|
|
output = "unifiedbricks:multicolor_" .. name,
|
|
recipe = {
|
|
"default:brick",
|
|
"unifieddyes:"..dye_one,
|
|
"unifieddyes:"..dye_two,
|
|
"unifieddyes:"..dye_three
|
|
},
|
|
})
|
|
end
|
|
|
|
--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
|
|
|
|
--REGISTERS ALL MULTICOLOR EVERYTHING
|
|
for i = 1,13 do
|
|
if i == 13 then
|
|
name = HUES[14]
|
|
formalname = FORMALHUES[14]
|
|
brick_one = HUES[14]
|
|
brick_two = HUES[15]
|
|
brick_three = HUES[16]
|
|
unifiedbricks.register_multicolor(name, formalname, brick_one, brick_two, brick_three)
|
|
unifiedbricks.register_multicolor_craft(name, brick_one, brick_two, brick_three)
|
|
|
|
name = HUES[15]
|
|
formalname = FORMALHUES[15]
|
|
brick_one = HUES[15]
|
|
brick_two = HUES[14]
|
|
brick_three = HUES[16]
|
|
unifiedbricks.register_multicolor(name, formalname, brick_one, brick_two, brick_three)
|
|
unifiedbricks.register_multicolor_craft(name, brick_one, brick_two, brick_three)
|
|
|
|
name = HUES[16]
|
|
formalname = FORMALHUES[16]
|
|
brick_one = HUES[16]
|
|
brick_two = HUES[14]
|
|
brick_three = HUES[15]
|
|
unifiedbricks.register_multicolor(name, formalname, brick_one, brick_two, brick_three)
|
|
unifiedbricks.register_multicolor_craft(name, brick_one, brick_two, brick_three)
|
|
else
|
|
name = DARKNESS[1] .. HUES[i]
|
|
formalname = FORMALDARKNESS[1] .. FORMALHUES[i]
|
|
brick_one = DARKNESS[1] .. HUES[i]
|
|
brick_two = DARKNESS[2] .. HUES[i]
|
|
brick_three = DARKNESS[2] .. HUES[i] .. SATURATION[1]
|
|
unifiedbricks.register_multicolor(name, formalname, brick_one, brick_two, brick_three)
|
|
unifiedbricks.register_multicolor_craft(name, brick_one, brick_two, brick_three)
|
|
|
|
name = DARKNESS[2] .. HUES[i]
|
|
formalname = FORMALDARKNESS[2] .. FORMALHUES[i]
|
|
brick_one = DARKNESS[2] .. HUES[i]
|
|
brick_two = DARKNESS[1] .. HUES[i]
|
|
brick_three = DARKNESS[3] .. HUES[i] .. SATURATION[1]
|
|
unifiedbricks.register_multicolor(name, formalname, brick_one, brick_two, brick_three)
|
|
unifiedbricks.register_multicolor_craft(name, brick_one, brick_two, brick_three)
|
|
|
|
name = DARKNESS[4] .. HUES[i]
|
|
formalname = FORMALDARKNESS[4] .. FORMALHUES[i]
|
|
brick_one = DARKNESS[3] .. HUES[i]
|
|
brick_two = DARKNESS[4] .. HUES[i]
|
|
brick_three = DARKNESS[2] .. HUES[i] .. SATURATION[1]
|
|
unifiedbricks.register_multicolor(name, formalname, brick_one, brick_two, brick_three)
|
|
unifiedbricks.register_multicolor_craft(name, brick_one, brick_two, brick_three)
|
|
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 = true,
|
|
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 = unifieddyes.getpaletteidx("unifieddyes:"..color2)
|
|
|
|
if string.find(type, "brickblock") then
|
|
minetest.set_node(pos, { name = "unifiedbricks:brickblock", param2 = paletteidx })
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("dye", "unifieddyes:"..color1)
|
|
print(dump(color))
|
|
elseif string.find(type, "clayblock") then
|
|
minetest.set_node(pos, { name = "unifiedbricks:clayblock", param2 = paletteidx })
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("dye", "unifieddyes:"..color1)
|
|
print(dump(color))
|
|
end
|
|
end
|
|
})
|
|
|
|
print("[UnifiedBricks] Loaded!")
|