diff --git a/homedecor/crafts.lua b/homedecor/crafts.lua index 51537615..5154cd5b 100644 --- a/homedecor/crafts.lua +++ b/homedecor/crafts.lua @@ -537,15 +537,13 @@ minetest.register_craft({ recipe = "homedecor:skylight_frosted", }) --- Various colors of shutters - minetest.register_craft( { - output = "homedecor:shutter_oak 2", - recipe = { + output = "homedecor:shutter 2", + recipe = { { "group:stick", "group:stick" }, { "group:stick", "group:stick" }, { "group:stick", "group:stick" }, - }, + }, }) minetest.register_craft({ @@ -554,201 +552,6 @@ minetest.register_craft({ burntime = 30, }) --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_black 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:black" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_black", - burntime = 30, -}) - --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_dark_grey 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:dark_grey" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_dark_grey", - burntime = 30, -}) - --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_grey 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:grey" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_grey", - burntime = 30, -}) - --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_white 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:white" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_white", - burntime = 30, -}) - --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_mahogany 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:brown" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_mahogany", - burntime = 30, -}) -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_red 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:red" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_red", - burntime = 30, -}) - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_yellow 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:yellow" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_yellow", - burntime = 30, -}) - --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_forest_green 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:dark_green" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_forest_green", - burntime = 30, -}) - --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_light_blue 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "unifieddyes:light_blue" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_light_blue", - burntime = 30, -}) - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_violet 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:violet" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_violet", - burntime = 30, -}) - --- - minetest.register_craft( { output = "homedecor:drawer_small", recipe = { diff --git a/homedecor/shutters.lua b/homedecor/shutters.lua index 226ca09e..733632bb 100644 --- a/homedecor/shutters.lua +++ b/homedecor/shutters.lua @@ -3,17 +3,16 @@ local S = homedecor_i18n.gettext local shutters = { - {"oak", S("unpainted oak"), "bf8a51" }, - {"mahogany", S("mahogany"), "822606" }, - {"red", S("red"), "d00000" }, - {"yellow", S("yellow"), "ffff00" }, - {"forest_green", S("forest green"), "006000" }, - {"light_blue", S("light blue"), "2878d8" }, - {"violet", S("violet"), "7000e0" }, - {"black", S("black"), "181818" }, - {"dark_grey", S("dark grey"), "404040" }, - {"grey", S("grey"), "b0b0b0" }, - {"white", S("white"), "ffffff" }, + "mahogany", + "red", + "yellow", + "forest_green", + "light_blue", + "violet", + "black", + "dark_grey", + "grey", + "white", } local shutter_cbox = { @@ -23,27 +22,85 @@ local shutter_cbox = { wall_side = { -0.5, -0.5, -0.5, -0.4375, 0.5, 0.5 } } -for _, s in ipairs(shutters) do - local name, desc, hue = unpack(s) +local inv = "homedecor_window_shutter_inv.png^[colorize:#a87034:150" - local tile = { name = "homedecor_window_shutter.png", color = tonumber("0xff"..hue) } - local inv = "homedecor_window_shutter_inv.png^[colorize:#"..hue..":150" +homedecor.register("shutter", { + mesh = "homedecor_window_shutter.obj", + tiles = { + { name = "homedecor_window_shutter.png", color = 0xffa87034 } + }, + description = S("Wooden Shutter"), + inventory_image = inv, + wield_image = inv, + paramtype2 = "wallmounted", + groups = { snappy = 3 }, + sounds = default.node_sound_wood_defaults(), + selection_box = shutter_cbox, + node_box = shutter_cbox, + after_place_node = homedecor.fix_rotation, + 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, "homedecor:shutter_colored", "wallmounted") + end +}) - homedecor.register("shutter_"..name, { - mesh = "homedecor_window_shutter.obj", - tiles = { tile }, - description = S("Wooden Shutter (@1)", desc), - inventory_image = inv, - wield_image = inv, - paramtype2 = "wallmounted", - groups = { snappy = 3 }, - sounds = default.node_sound_wood_defaults(), - selection_box = shutter_cbox, - node_box = shutter_cbox, - -- collision_box doesn't accept type="wallmounted", but node_box - -- does. Said nodeboxes create a custom collision box but are - -- invisible themselves because drawtype="mesh". - }) -end +homedecor.register("shutter_colored", { + mesh = "homedecor_window_shutter.obj", + tiles = { "homedecor_window_shutter.png" }, + description = S("Wooden Shutter"), + inventory_image = "homedecor_window_shutter_inv.png", + wield_image = "homedecor_window_shutter_inv.png", + paramtype2 = "colorwallmounted", + palette = "unifieddyes_palette_colorwallmounted.png", + groups = { snappy = 3 , not_in_creative_inventory = 1}, + sounds = default.node_sound_wood_defaults(), + selection_box = shutter_cbox, + node_box = shutter_cbox, + after_place_node = homedecor.fix_rotation, + 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, "homedecor:shutter_colored", "wallmounted") + end, + drop = "homedecor:shutter" +}) minetest.register_alias("homedecor:shutter_purple", "homedecor:shutter_violet") +minetest.register_alias("homedecor:shutter_oak", "homedecor:shutter") + +-- convert to param2 coloring + +homedecor.old_shutter_nodes = {} + +for _, color in ipairs(shutters) do + table.insert(homedecor.old_shutter_nodes, "homedecor:shutter_"..color) +end + +minetest.register_lbm({ + name = "homedecor:convert_shutters", + label = "Convert shutter static nodes to use param2 color", + run_at_every_load = true, + nodenames = homedecor.old_shutter_nodes, + action = function(pos, node) + local name = node.name + local color = string.sub(name, string.find(name, "_") + 1) + + if color == "mahogany" then + color = "dark_red" + elseif color == "forest_green" then + color = "dark_green" + elseif color == "light_blue" then + color = "medium_cyan" + elseif color == "red" then + color = "medium_red" + end + + local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted") + local param2 = paletteidx + node.param2 + + minetest.set_node(pos, { name = "homedecor:shutter_colored", param2 = param2 }) + local meta = minetest.get_meta(pos) + meta:set_string("dye", "unifieddyes:"..color) + end +})