convert over to param2-based colorization
Place a default block of wood or fencepost and right-click on it with dye (only the original wood/fence are supported right now, not acacia/jungle/etc yet) Digging the block gives you back plain wood and the dye you used. To make a stair/slab/etc colorized, add wood to the circular saw, cut, place the stair/slab/etc, right click it with dye. Digging the stair/slab/etc gives back the default wood version, and dye.
301
fence.lua
|
@ -1,301 +0,0 @@
|
||||||
-- Fences portion of Colored Wood mod by Vanessa Ezekowitz ~~ 2012-07-17
|
|
||||||
-- based on my unified dyes modding template.
|
|
||||||
--
|
|
||||||
-- License: WTFPL
|
|
||||||
|
|
||||||
local colored_block_modname = "coloredwood"
|
|
||||||
local colored_block_description = "Wooden Fence"
|
|
||||||
local neutral_block = "default:fence_wood"
|
|
||||||
local colored_block_sunlight = "false"
|
|
||||||
local colored_block_walkable = "true"
|
|
||||||
local colored_block_groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2, not_in_creative_inventory=1}
|
|
||||||
local colored_block_sound = "default.node_sound_wood_defaults()"
|
|
||||||
|
|
||||||
for shade = 1, 3 do
|
|
||||||
|
|
||||||
local shadename = coloredwood.shades[shade]
|
|
||||||
local shadename2 = coloredwood.shades2[shade]
|
|
||||||
|
|
||||||
for hue = 1, 12 do
|
|
||||||
|
|
||||||
local huename = coloredwood.hues[hue]
|
|
||||||
local huename2 = coloredwood.hues2[hue]
|
|
||||||
|
|
||||||
local colorname = colored_block_modname..":fence_"..shadename..huename
|
|
||||||
local pngnameinv = colored_block_modname.."_fence_"..shadename..huename..".png"
|
|
||||||
local pngname = colored_block_modname.."_wood_"..shadename..huename..".png"
|
|
||||||
local nodedesc = shadename2..huename2..colored_block_description
|
|
||||||
local stickname = colored_block_modname..":stick_"..shadename..huename
|
|
||||||
|
|
||||||
local s50colorname = colored_block_modname..":fence_"..shadename..huename.."_s50"
|
|
||||||
local s50pngname = colored_block_modname.."_wood_"..shadename..huename.."_s50.png"
|
|
||||||
local s50pngnameinv = colored_block_modname.."_fence_"..shadename..huename.."_s50.png"
|
|
||||||
local s50nodedesc = shadename2..huename2..colored_block_description.." (50% Saturation)"
|
|
||||||
local s50stickname = colored_block_modname..":stick_"..shadename..huename.."_s50"
|
|
||||||
|
|
||||||
minetest.register_node(colorname, {
|
|
||||||
drawtype = "fencelike",
|
|
||||||
description = nodedesc,
|
|
||||||
tiles = { pngname },
|
|
||||||
inventory_image = pngnameinv,
|
|
||||||
wield_image = pngnameinv,
|
|
||||||
sunlight_propagates = colored_block_sunlight,
|
|
||||||
paramtype = "light",
|
|
||||||
walkable = colored_block_walkable,
|
|
||||||
groups = colored_block_groups,
|
|
||||||
sounds = colored_block_sound,
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_node(s50colorname, {
|
|
||||||
drawtype = "fencelike",
|
|
||||||
description = s50nodedesc,
|
|
||||||
tiles = { s50pngname },
|
|
||||||
inventory_image = s50pngnameinv,
|
|
||||||
wield_image = s50pngnameinv,
|
|
||||||
sunlight_propagates = colored_block_sunlight,
|
|
||||||
paramtype = "light",
|
|
||||||
walkable = colored_block_walkable,
|
|
||||||
groups = colored_block_groups,
|
|
||||||
sounds = colored_block_sound,
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
type = "fuel",
|
|
||||||
recipe = colorname,
|
|
||||||
burntime = 7,
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
type = "fuel",
|
|
||||||
recipe = s50colorname,
|
|
||||||
burntime = 7,
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = colorname.." 2" ,
|
|
||||||
recipe = {
|
|
||||||
{stickname, stickname, stickname },
|
|
||||||
{stickname, stickname, stickname }
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = s50colorname.." 2",
|
|
||||||
recipe = {
|
|
||||||
{s50stickname, s50stickname, s50stickname },
|
|
||||||
{s50stickname, s50stickname, s50stickname }
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = colorname.." 2",
|
|
||||||
recipe = {
|
|
||||||
{ "unifieddyes:"..shadename..huename, "", "" },
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = s50colorname.." 2",
|
|
||||||
recipe = {
|
|
||||||
{ "unifieddyes:"..shadename..huename.."_s50", "", "" },
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft( {
|
|
||||||
type = "shapeless",
|
|
||||||
output = colorname.." 2",
|
|
||||||
recipe = {
|
|
||||||
neutral_block,
|
|
||||||
neutral_block,
|
|
||||||
"unifieddyes:"..shadename..huename
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft( {
|
|
||||||
type = "shapeless",
|
|
||||||
output = colorname.." 2",
|
|
||||||
recipe = {
|
|
||||||
neutral_block,
|
|
||||||
neutral_block,
|
|
||||||
"unifieddyes:"..shadename..huename.."_s50"
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Generate the "light" shades separately, since they don"t have a low-sat version.
|
|
||||||
|
|
||||||
for hue = 1, 12 do
|
|
||||||
local huename = coloredwood.hues[hue]
|
|
||||||
local huename2 = coloredwood.hues2[hue]
|
|
||||||
local colorname = colored_block_modname..":fence_light_"..huename
|
|
||||||
local pngname = colored_block_modname.."_wood_light_"..huename..".png"
|
|
||||||
local pngnameinv = colored_block_modname.."_fence_light_"..huename..".png"
|
|
||||||
local nodedesc = "Light "..huename2..colored_block_description
|
|
||||||
local stickname = colored_block_modname..":stick_light_"..huename
|
|
||||||
|
|
||||||
minetest.register_node(colorname, {
|
|
||||||
drawtype = "fencelike",
|
|
||||||
description = nodedesc,
|
|
||||||
tiles = { pngname },
|
|
||||||
inventory_image = pngnameinv,
|
|
||||||
wield_image = pngnameinv,
|
|
||||||
sunlight_propagates = colored_block_sunlight,
|
|
||||||
paramtype = "light",
|
|
||||||
walkable = colored_block_walkable,
|
|
||||||
groups = colored_block_groups,
|
|
||||||
sounds = colored_block_sound,
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
type = "fuel",
|
|
||||||
recipe = colorname,
|
|
||||||
burntime = 7,
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = colorname.." 2",
|
|
||||||
recipe = {
|
|
||||||
{stickname, stickname, stickname },
|
|
||||||
{stickname, stickname, stickname }
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = colorname.." 2",
|
|
||||||
recipe = {
|
|
||||||
{ "unifieddyes:light_"..huename, "", "" },
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft( {
|
|
||||||
type = "shapeless",
|
|
||||||
output = colorname.." 2",
|
|
||||||
recipe = {
|
|
||||||
neutral_block,
|
|
||||||
neutral_block,
|
|
||||||
"unifieddyes:light_"..huename
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
-- extra recipes for default dye colors.
|
|
||||||
|
|
||||||
for _, color in ipairs(coloredwood.default_hues) do
|
|
||||||
minetest.register_craft({
|
|
||||||
output = "coloredwood:fence_"..color.." 2",
|
|
||||||
recipe = {
|
|
||||||
{ "dye:"..color, "", "" },
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = "coloredwood:fence_light_red 2",
|
|
||||||
recipe = {
|
|
||||||
{ "dye:pink", "", "" },
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = "coloredwood:fence_dark_orange 2",
|
|
||||||
recipe = {
|
|
||||||
{ "dye:brown", "", "" },
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- ============================================================
|
|
||||||
-- The 5 levels of greyscale.
|
|
||||||
--
|
|
||||||
-- Oficially these are 0, 25, 50, 75, and 100% relative to white,
|
|
||||||
-- but in practice, they"re actually 7.5%, 25%, 50%, 75%, and 95%.
|
|
||||||
-- (otherwise black and white would wash out).
|
|
||||||
|
|
||||||
for grey = 1,5 do
|
|
||||||
|
|
||||||
local greyname = coloredwood.greys[grey]
|
|
||||||
local greyname2 = coloredwood.greys2[grey]
|
|
||||||
local greyname3 = coloredwood.greys3[grey]
|
|
||||||
|
|
||||||
local greyshadename = colored_block_modname..":fence_"..greyname
|
|
||||||
local pngname = colored_block_modname.."_wood_"..greyname..".png"
|
|
||||||
local pngnameinv = colored_block_modname.."_fence_"..greyname..".png"
|
|
||||||
local nodedesc = greyname2..colored_block_description
|
|
||||||
local stickname = colored_block_modname..":stick_"..greyname
|
|
||||||
|
|
||||||
minetest.register_node(greyshadename, {
|
|
||||||
drawtype = "fencelike",
|
|
||||||
description = nodedesc,
|
|
||||||
tiles = { pngname },
|
|
||||||
inventory_image = pngnameinv,
|
|
||||||
wield_image = pngnameinv,
|
|
||||||
sunlight_propagates = colored_block_sunlight,
|
|
||||||
paramtype = "light",
|
|
||||||
walkable = colored_block_walkable,
|
|
||||||
groups = colored_block_groups,
|
|
||||||
sounds = colored_block_sound,
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
type = "fuel",
|
|
||||||
recipe = greyshadename,
|
|
||||||
burntime = 7,
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = greyshadename.." 2",
|
|
||||||
recipe = {
|
|
||||||
{stickname, stickname, stickname },
|
|
||||||
{stickname, stickname, stickname }
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = greyshadename.." 2",
|
|
||||||
recipe = {
|
|
||||||
{ greyname3, "", "" },
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
{"group:stick", "group:stick", "group:stick"},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft( {
|
|
||||||
type = "shapeless",
|
|
||||||
output = greyshadename.." 2",
|
|
||||||
recipe = {
|
|
||||||
neutral_block,
|
|
||||||
neutral_block,
|
|
||||||
greyname3
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
end
|
|
303
init.lua
|
@ -6,38 +6,10 @@
|
||||||
-- This mod provides 89 colors of wood, fences, and sticks, and enough
|
-- This mod provides 89 colors of wood, fences, and sticks, and enough
|
||||||
-- cross-compatible recipes to make everything fit together naturally.
|
-- cross-compatible recipes to make everything fit together naturally.
|
||||||
--
|
--
|
||||||
-- Colored wood is crafted by putting two regular wood blocks into the
|
-- Colored wood is created by placing a regular wood block on the ground
|
||||||
-- grid along with one dye color, in any order and position. The result
|
-- and then right-clicking on it with some dye.
|
||||||
-- is two colored wood blocks.
|
|
||||||
--
|
|
||||||
-- Colored sticks are crafted from colored wood blocks only - one colored
|
|
||||||
-- wood block in any position yields 4 colored sticks as usual.
|
|
||||||
--
|
|
||||||
-- Uncolored sticks cannot be dyed separately, but they can still be used
|
|
||||||
-- to build colored wooden fences. These are crafted either by placing six
|
|
||||||
-- plain, uncolored sticks into the crafting grid in the usual manner, plus
|
|
||||||
-- one portion of dye in the upper-left corner of the grid
|
|
||||||
-- (D = dye, S = uncolored stick):
|
|
||||||
--
|
|
||||||
-- D - -
|
|
||||||
-- S S S
|
|
||||||
-- S S S
|
|
||||||
--
|
|
||||||
-- You can also craft a colored fence by using colored sticks derived from
|
|
||||||
-- colored wood. Just place six of them in the same manner as with plain
|
|
||||||
-- fences (CS = colored stick):
|
|
||||||
--
|
|
||||||
-- -- -- --
|
|
||||||
-- CS CS CS
|
|
||||||
-- CS CS CS
|
|
||||||
--
|
|
||||||
-- If you find yourself with too many colors of sticks and not enough,
|
|
||||||
-- ladders, you can use any color (as long as they"re all the same) to
|
|
||||||
-- create a ladder, but it"ll always result in a plain, uncolored ladder.
|
|
||||||
-- This practice isn"t recommended of course, since it wastes dye.
|
|
||||||
--
|
|
||||||
-- All materials are flammable and can be used as fuel.
|
-- All materials are flammable and can be used as fuel.
|
||||||
|
--
|
||||||
-- Hues are on a 30 degree spacing starting at red = 0 degrees.
|
-- Hues are on a 30 degree spacing starting at red = 0 degrees.
|
||||||
-- "s50" in a file/item name means "saturation: 50%".
|
-- "s50" in a file/item name means "saturation: 50%".
|
||||||
-- Texture brightness levels for the colors are 100%, 66% ("medium"),
|
-- Texture brightness levels for the colors are 100%, 66% ("medium"),
|
||||||
|
@ -45,6 +17,11 @@
|
||||||
|
|
||||||
coloredwood = {}
|
coloredwood = {}
|
||||||
|
|
||||||
|
coloredwood.enable_stairsplus = true
|
||||||
|
if minetest.setting_getbool("coloredwood_enable_stairsplus") == false or not minetest.get_modpath("moreblocks") then
|
||||||
|
coloredwood.enable_stairsplus = false
|
||||||
|
end
|
||||||
|
|
||||||
coloredwood.shades = {
|
coloredwood.shades = {
|
||||||
"dark_",
|
"dark_",
|
||||||
"medium_",
|
"medium_",
|
||||||
|
@ -127,11 +104,265 @@ coloredwood.greys3 = {
|
||||||
"dye:white"
|
"dye:white"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- All of the actual code is contained in separate lua files:
|
coloredwood.hues_plus_greys = {}
|
||||||
|
|
||||||
dofile(minetest.get_modpath("coloredwood").."/wood.lua")
|
for _, hue in ipairs(coloredwood.hues) do
|
||||||
dofile(minetest.get_modpath("coloredwood").."/fence.lua")
|
table.insert(coloredwood.hues_plus_greys, hue)
|
||||||
dofile(minetest.get_modpath("coloredwood").."/stick.lua")
|
end
|
||||||
|
|
||||||
|
table.insert(coloredwood.hues_plus_greys, "grey")
|
||||||
|
|
||||||
|
-- helper functions
|
||||||
|
|
||||||
|
local function is_stairsplus(name)
|
||||||
|
local s1, s2
|
||||||
|
|
||||||
|
local a,b = string.find(name, ":stair")
|
||||||
|
if a then s1 = string.sub(name, a+1, b) end
|
||||||
|
|
||||||
|
a,b = string.find(name, ":slab")
|
||||||
|
if a then s1 = string.sub(name, a+1, b) end
|
||||||
|
|
||||||
|
a,b = string.find(name, ":panel")
|
||||||
|
if a then s1 = string.sub(name, a+1, b) end
|
||||||
|
|
||||||
|
a,b = string.find(name, ":micro")
|
||||||
|
if a then s1 = string.sub(name, a+1, b) end
|
||||||
|
|
||||||
|
a,b = string.find(name, ":slope")
|
||||||
|
if a then s1 = string.sub(name, a+1, b) end
|
||||||
|
|
||||||
|
local h, s, v = unifieddyes.get_hsv(name)
|
||||||
|
|
||||||
|
a,b = string.find(name, "_"..h..s)
|
||||||
|
if a then s2 = string.sub(name, b+1)
|
||||||
|
if string.find(s2, "wood") then s2 = string.sub(s2, 5) end
|
||||||
|
end
|
||||||
|
return s1, s2
|
||||||
|
end
|
||||||
|
|
||||||
|
-- the actual nodes!
|
||||||
|
|
||||||
|
for _, color in ipairs(coloredwood.hues_plus_greys) do
|
||||||
|
minetest.register_node("coloredwood:wood_"..color, {
|
||||||
|
description = "Colored wooden planks",
|
||||||
|
tiles = { "coloredwood_base.png" },
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "colorfacedir",
|
||||||
|
palette = "unifieddyes_palette_"..color.."s.png",
|
||||||
|
walkable = true,
|
||||||
|
sunlight_propagates = false,
|
||||||
|
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2, not_in_creative_inventory=1},
|
||||||
|
sounds = default.node_sound_wood_defaults(),
|
||||||
|
after_dig_node = unifieddyes.after_dig_node,
|
||||||
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||||
|
unifieddyes.on_rightclick(pos, node, clicker,
|
||||||
|
itemstack, pointed_thing, "coloredwood:wood_"..color, true)
|
||||||
|
end,
|
||||||
|
drop = "default:wood"
|
||||||
|
})
|
||||||
|
|
||||||
|
-- moreblocks/stairsplus support
|
||||||
|
|
||||||
|
if coloredwood.enable_stairsplus then
|
||||||
|
|
||||||
|
-- stairsplus:register_all(modname, subname, recipeitem, {fields})
|
||||||
|
|
||||||
|
stairsplus:register_all(
|
||||||
|
"coloredwood",
|
||||||
|
"wood_"..color,
|
||||||
|
"coloredwood:wood_"..color,
|
||||||
|
{
|
||||||
|
description = "Colored wood",
|
||||||
|
tiles = { "coloredwood_base.png" },
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "colorfacedir",
|
||||||
|
palette = "unifieddyes_palette_"..color.."s.png",
|
||||||
|
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2, not_in_creative_inventory=1},
|
||||||
|
after_dig_node = unifieddyes.after_dig_node,
|
||||||
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||||
|
unifieddyes.on_rightclick(pos, node, clicker,
|
||||||
|
itemstack, pointed_thing, nil, true)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- force on_rightclick for stairsplus default wood stair/slab/etc nodes
|
||||||
|
|
||||||
|
if coloredwood.enable_stairsplus then
|
||||||
|
|
||||||
|
for _, i in pairs(minetest.registered_nodes) do
|
||||||
|
if string.find(i.name, "moreblocks:stair_wood")
|
||||||
|
or string.find(i.name, "moreblocks:slab_wood")
|
||||||
|
or string.find(i.name, "moreblocks:panel_wood")
|
||||||
|
or string.find(i.name, "moreblocks:micro_wood")
|
||||||
|
or string.find(i.name, "moreblocks:slope_wood")
|
||||||
|
then
|
||||||
|
|
||||||
|
minetest.override_item(i.name, {
|
||||||
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||||
|
local wield = itemstack:get_name()
|
||||||
|
local newnode = nil
|
||||||
|
if string.find(wield, "dye:") or string.find(wield, "unifieddyes:") then
|
||||||
|
local s1, s2 = is_stairsplus(i.name)
|
||||||
|
local paletteidx, hue = unifieddyes.getpaletteidx(wield, true)
|
||||||
|
if hue ~= 0 then
|
||||||
|
newnode = "coloredwood:"..s1.."_wood_"..coloredwood.hues[hue]..s2
|
||||||
|
else
|
||||||
|
newnode = "coloredwood:"..s1.."_wood_grey"..s2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
unifieddyes.on_rightclick(pos, node, clicker,
|
||||||
|
itemstack, pointed_thing, newnode, true)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- fix drops for colored versions of stairsplus nodes
|
||||||
|
|
||||||
|
for _, i in pairs(minetest.registered_nodes) do
|
||||||
|
if string.find(i.name, "coloredwood:stair_")
|
||||||
|
or string.find(i.name, "coloredwood:slab_")
|
||||||
|
or string.find(i.name, "coloredwood:panel_")
|
||||||
|
or string.find(i.name, "coloredwood:micro_")
|
||||||
|
or string.find(i.name, "coloredwood:slope_")
|
||||||
|
then
|
||||||
|
|
||||||
|
mname = string.gsub(i.name, "coloredwood:", "moreblocks:")
|
||||||
|
local s1, s2 = is_stairsplus(mname)
|
||||||
|
|
||||||
|
minetest.override_item(i.name, {
|
||||||
|
drop = "moreblocks:"..s1.."_wood"..s2
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.override_item("default:wood", {
|
||||||
|
paramtype2 = "colorfacedir",
|
||||||
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||||
|
unifieddyes.on_rightclick(pos, node, clicker,
|
||||||
|
itemstack, pointed_thing, "coloredwood:wood_grey", true)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_node("coloredwood:fence", {
|
||||||
|
drawtype = "fencelike",
|
||||||
|
description = "Colored wooden fence",
|
||||||
|
tiles = { "coloredwood_fence_base.png" },
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "color",
|
||||||
|
palette = "unifieddyes_palette.png",
|
||||||
|
walkable = true,
|
||||||
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
|
||||||
|
sounds = default.node_sound_wood_defaults(),
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
|
||||||
|
},
|
||||||
|
after_dig_node = unifieddyes.after_dig_node,
|
||||||
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||||
|
unifieddyes.on_rightclick(pos, node, clicker,
|
||||||
|
itemstack, pointed_thing, "coloredwood:fence")
|
||||||
|
end,
|
||||||
|
drop = "default:fence_wood"
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.override_item("default:fence_wood", {
|
||||||
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||||
|
unifieddyes.on_rightclick(pos, node, clicker,
|
||||||
|
itemstack, pointed_thing, "coloredwood:fence")
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- ============================
|
||||||
|
-- convert the old static nodes
|
||||||
|
|
||||||
|
coloredwood.old_static_nodes = {}
|
||||||
|
|
||||||
|
for _, hue in ipairs(coloredwood.hues) do
|
||||||
|
for _, sat in ipairs({"", "_s50"}) do
|
||||||
|
for _, val in ipairs ({"dark_", "medium_", "light_", ""}) do
|
||||||
|
table.insert(coloredwood.old_static_nodes, "coloredwood:wood_"..val..hue..sat)
|
||||||
|
table.insert(coloredwood.old_static_nodes, "coloredwood:fence_"..val..hue..sat)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, shade in ipairs(coloredwood.greys) do
|
||||||
|
table.insert(coloredwood.old_static_nodes, "coloredwood:wood_"..shade)
|
||||||
|
table.insert(coloredwood.old_static_nodes, "coloredwood:fence_"..shade)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- add all of the stairsplus nodes
|
||||||
|
|
||||||
|
for _, shape in ipairs(circular_saw.names) do
|
||||||
|
local a = shape[1]
|
||||||
|
local b = shape[2]
|
||||||
|
for _, hue in ipairs(coloredwood.hues) do
|
||||||
|
for _, shade in ipairs(coloredwood.shades) do
|
||||||
|
table.insert(coloredwood.old_static_nodes, "coloredwood:"..a.."_wood_"..shade..hue..b)
|
||||||
|
table.insert(coloredwood.old_static_nodes, "coloredwood:"..a.."_wood_"..shade..hue.."_s50"..b)
|
||||||
|
end
|
||||||
|
table.insert(coloredwood.old_static_nodes, "coloredwood:"..a.."_wood_light_"..hue..b) -- light doesn't have extra shades or s50
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, shape in ipairs(circular_saw.names) do
|
||||||
|
local a = shape[1]
|
||||||
|
local b = shape[2]
|
||||||
|
for _, hue in ipairs(coloredwood.greys) do
|
||||||
|
for _, shade in ipairs(coloredwood.shades) do
|
||||||
|
table.insert(coloredwood.old_static_nodes, "coloredwood:"..a.."_wood_"..hue..b)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_lbm({
|
||||||
|
name = "coloredwood:convert",
|
||||||
|
label = "Convert wood blocks, fences, stairsplus stuff, etc to use param2 color",
|
||||||
|
run_at_every_load = true,
|
||||||
|
nodenames = coloredwood.old_static_nodes,
|
||||||
|
action = function(pos, node)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
|
||||||
|
if meta and (meta:get_string("dye") ~= "") then return end -- node has already been converted before.
|
||||||
|
|
||||||
|
local name = node.name
|
||||||
|
local hue, sat, val = unifieddyes.get_hsv(name)
|
||||||
|
|
||||||
|
local color = val..hue..sat
|
||||||
|
|
||||||
|
local s1, s2 = is_stairsplus(name)
|
||||||
|
|
||||||
|
if s1 then
|
||||||
|
|
||||||
|
local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, true)
|
||||||
|
local cfdir = paletteidx + (node.param2 % 32)
|
||||||
|
local newname = "coloredwood:"..s1.."_wood_"..hue..s2
|
||||||
|
|
||||||
|
minetest.set_node(pos, { name = newname, param2 = cfdir })
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
meta:set_string("dye", "unifieddyes:"..color)
|
||||||
|
|
||||||
|
elseif string.find(name, ":fence") then
|
||||||
|
local paletteidx, hue = unifieddyes.getpaletteidx("unifieddyes:"..color, false)
|
||||||
|
minetest.set_node(pos, { name = "coloredwood:fence", param2 = paletteidx })
|
||||||
|
meta:set_string("dye", "unifieddyes:"..color)
|
||||||
|
else
|
||||||
|
local paletteidx, hue = unifieddyes.getpaletteidx("unifieddyes:"..color, true)
|
||||||
|
if hue ~= 0 and hue ~= nil then
|
||||||
|
minetest.set_node(pos, { name = "coloredwood:wood_"..coloredwood.hues[hue], param2 = paletteidx })
|
||||||
|
meta:set_string("dye", "unifieddyes:"..color)
|
||||||
|
else
|
||||||
|
minetest.set_node(pos, { name = "coloredwood:wood_grey", param2 = paletteidx })
|
||||||
|
meta:set_string("dye", "unifieddyes:"..color)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
print("[Colored Wood] Loaded!")
|
print("[Colored Wood] Loaded!")
|
||||||
|
|
||||||
|
|
152
stick.lua
|
@ -1,152 +0,0 @@
|
||||||
-- Sticks portion of Colored Wood mod by Vanessa Ezekowitz ~~ 2012-07-17
|
|
||||||
-- based on my unified dyes modding template.
|
|
||||||
--
|
|
||||||
-- License: WTFPL
|
|
||||||
|
|
||||||
local colored_block_modname = "coloredwood"
|
|
||||||
local colored_block_description = "Stick"
|
|
||||||
|
|
||||||
for shade = 1, 3 do
|
|
||||||
|
|
||||||
local shadename = coloredwood.shades[shade]
|
|
||||||
local shadename2 = coloredwood.shades2[shade]
|
|
||||||
|
|
||||||
for hue = 1, 12 do
|
|
||||||
|
|
||||||
local huename = coloredwood.hues[hue]
|
|
||||||
local huename2 = coloredwood.hues2[hue]
|
|
||||||
|
|
||||||
local colorname = colored_block_modname..":stick_"..shadename..huename
|
|
||||||
local pngname = colored_block_modname.."_stick_"..shadename..huename..".png"
|
|
||||||
local itemdesc = shadename2..huename2..colored_block_description
|
|
||||||
local woodname = colored_block_modname..":wood_"..shadename..huename
|
|
||||||
local s50colorname = colored_block_modname..":stick_"..shadename..huename.."_s50"
|
|
||||||
local s50pngname = colored_block_modname.."_stick_"..shadename..huename.."_s50.png"
|
|
||||||
local s50itemdesc = shadename2..huename2..colored_block_description.." (50% Saturation)"
|
|
||||||
local s50woodname = colored_block_modname..":wood_"..shadename..huename.."_s50"
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
type = "fuel",
|
|
||||||
recipe = colorname,
|
|
||||||
burntime = 7,
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
type = "fuel",
|
|
||||||
recipe = s50colorname,
|
|
||||||
burntime = 7,
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craftitem(colorname, {
|
|
||||||
description = itemdesc,
|
|
||||||
inventory_image = pngname,
|
|
||||||
groups = { coloredsticks=1, not_in_creative_inventory=1, stick=1 }
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craftitem(s50colorname, {
|
|
||||||
description = s50itemdesc,
|
|
||||||
inventory_image = s50pngname,
|
|
||||||
groups = { coloredsticks=1, not_in_creative_inventory=1, stick=1 }
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft( {
|
|
||||||
type = "shapeless",
|
|
||||||
output = colorname.." 4",
|
|
||||||
recipe = {
|
|
||||||
woodname
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft( {
|
|
||||||
type = "shapeless",
|
|
||||||
output = s50colorname.." 4",
|
|
||||||
recipe = {
|
|
||||||
s50woodname
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Generate the "light" shades separately, since they don"t have a low-sat version.
|
|
||||||
|
|
||||||
for hue = 1, 12 do
|
|
||||||
local huename = coloredwood.hues[hue]
|
|
||||||
local huename2 = coloredwood.hues2[hue]
|
|
||||||
local colorname = colored_block_modname..":stick_light_"..huename
|
|
||||||
local pngname = colored_block_modname.."_stick_light_"..huename..".png"
|
|
||||||
local itemdesc = "Light "..huename2..colored_block_description
|
|
||||||
local woodname = colored_block_modname..":wood_light_"..huename
|
|
||||||
|
|
||||||
minetest.register_craftitem(colorname, {
|
|
||||||
description = itemdesc,
|
|
||||||
inventory_image = pngname,
|
|
||||||
groups = { coloredsticks=1, not_in_creative_inventory=1, stick=1 }
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
type = "fuel",
|
|
||||||
recipe = colorname,
|
|
||||||
burntime = 7,
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft( {
|
|
||||||
type = "shapeless",
|
|
||||||
output = colorname.." 4",
|
|
||||||
recipe = {
|
|
||||||
woodname
|
|
||||||
}
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
-- ============================================================
|
|
||||||
-- The 5 levels of greyscale.
|
|
||||||
--
|
|
||||||
-- Oficially these are 0, 25, 50, 75, and 100% relative to white,
|
|
||||||
-- but in practice, they"re actually 7.5%, 25%, 50%, 75%, and 95%.
|
|
||||||
-- (otherwise black and white would wash out).
|
|
||||||
|
|
||||||
for grey = 1,5 do
|
|
||||||
|
|
||||||
local greyname = coloredwood.greys[grey]
|
|
||||||
local greyname2 = coloredwood.greys2[grey]
|
|
||||||
|
|
||||||
local greyshadename = colored_block_modname..":stick_"..greyname
|
|
||||||
local pngname = colored_block_modname.."_stick_"..greyname..".png"
|
|
||||||
local itemdesc = greyname2..colored_block_description
|
|
||||||
local greywoodname = colored_block_modname..":wood_"..greyname
|
|
||||||
|
|
||||||
minetest.register_craftitem(greyshadename, {
|
|
||||||
description = itemdesc,
|
|
||||||
inventory_image = pngname,
|
|
||||||
groups = { coloredsticks=1, not_in_creative_inventory=1, stick=1 }
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
type = "fuel",
|
|
||||||
recipe = greyshadename,
|
|
||||||
burntime = 7,
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft( {
|
|
||||||
type = "shapeless",
|
|
||||||
output = greyshadename.." 4",
|
|
||||||
recipe = {
|
|
||||||
greywoodname
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
-- ====================================================================
|
|
||||||
-- This recipe causes all colored sticks to be usable to craft ladders.
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = "default:ladder 2" ,
|
|
||||||
recipe = {
|
|
||||||
{"group:coloredsticks", "" , "group:coloredsticks" },
|
|
||||||
{"group:coloredsticks", "group:coloredsticks", "group:coloredsticks" },
|
|
||||||
{"group:coloredsticks", "" , "group:coloredsticks" }
|
|
||||||
}
|
|
||||||
})
|
|
BIN
textures/coloredwood_base.png
Normal file
After Width: | Height: | Size: 214 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
BIN
textures/coloredwood_fence_base.png
Normal file
After Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 205 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 398 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 373 B |
Before Width: | Height: | Size: 361 B |
Before Width: | Height: | Size: 356 B |
Before Width: | Height: | Size: 344 B |
Before Width: | Height: | Size: 361 B |
Before Width: | Height: | Size: 344 B |
Before Width: | Height: | Size: 356 B |
Before Width: | Height: | Size: 344 B |
Before Width: | Height: | Size: 373 B |
Before Width: | Height: | Size: 361 B |
Before Width: | Height: | Size: 298 B |
Before Width: | Height: | Size: 344 B |
Before Width: | Height: | Size: 373 B |
Before Width: | Height: | Size: 361 B |
Before Width: | Height: | Size: 356 B |
Before Width: | Height: | Size: 344 B |
Before Width: | Height: | Size: 373 B |
Before Width: | Height: | Size: 361 B |
Before Width: | Height: | Size: 373 B |
Before Width: | Height: | Size: 361 B |
Before Width: | Height: | Size: 373 B |
Before Width: | Height: | Size: 361 B |
Before Width: | Height: | Size: 361 B |
Before Width: | Height: | Size: 344 B |
Before Width: | Height: | Size: 199 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 398 B |
Before Width: | Height: | Size: 208 B |
Before Width: | Height: | Size: 398 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 398 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 398 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 398 B |
Before Width: | Height: | Size: 398 B |
Before Width: | Height: | Size: 398 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 217 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 214 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 144 B |
Before Width: | Height: | Size: 144 B |
Before Width: | Height: | Size: 121 B |
Before Width: | Height: | Size: 144 B |
Before Width: | Height: | Size: 144 B |
Before Width: | Height: | Size: 144 B |