summaryrefslogtreecommitdiff
path: root/homedecor/bedroom.lua
diff options
context:
space:
mode:
Diffstat (limited to 'homedecor/bedroom.lua')
-rw-r--r--homedecor/bedroom.lua332
1 files changed, 202 insertions, 130 deletions
diff --git a/homedecor/bedroom.lua b/homedecor/bedroom.lua
index 51c4dd5..92e0bc5 100644
--- a/homedecor/bedroom.lua
+++ b/homedecor/bedroom.lua
@@ -1,31 +1,16 @@
-local S = homedecor.gettext
-local bedcolors = {
- { "black", "#000000:200" }, --new cg72
- { "brown", "#603010:175" },
- { "blue", "#0000d0:150" },
- { "cyan", "#009fa7:150" }, --new cg72
- { "darkgrey", "#101010:175" },
- { "dark_green", "#007000:150" },
- { "green", "#00d000:150" }, --new cg72
- { "grey", "#101010:100" }, --new cg72
- { "magenta", "#e0048b:150" }, --new cg72
- { "orange", "#ff3000:150" },
- { "pink", "#ff80b0:150" },
- { "red", "#d00000:150" },
- { "violet", "#7000e0:150" },
- { "white", "#000000:000" }, --new cg72
- { "yellow", "#ffe000:150" }
-}
+local S = homedecor_i18n.gettext
+
+local function N_(x) return x end
local bed_sbox = {
- type = "fixed",
- fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 1.5 }
+ type = "wallmounted",
+ wall_side = { -0.5, -0.5, -0.5, 0.5, 0.5, 1.5 }
}
local bed_cbox = {
- type = "fixed",
- fixed = {
+ type = "wallmounted",
+ wall_side = {
{ -0.5, -0.5, -0.5, 0.5, -0.05, 1.5 },
{ -0.5, -0.5, 1.44, 0.5, 0.5, 1.5 },
{ -0.5, -0.5, -0.5, 0.5, 0.18, -0.44 },
@@ -33,130 +18,145 @@ local bed_cbox = {
}
local kbed_sbox = {
- type = "fixed",
- fixed = { -0.5, -0.5, -0.5, 1.5, 0.5, 1.5 }
+ type = "wallmounted",
+ wall_side = { -0.5, -0.5, -0.5, 1.5, 0.5, 1.5 }
}
local kbed_cbox = {
- type = "fixed",
- fixed = {
+ type = "wallmounted",
+ wall_side = {
{ -0.5, -0.5, -0.5, 1.5, -0.05, 1.5 },
{ -0.5, -0.5, 1.44, 1.5, 0.5, 1.5 },
{ -0.5, -0.5, -0.5, 1.5, 0.18, -0.44 },
}
}
-for i in ipairs(bedcolors) do
- local color = bedcolors[i][1]
- local color2=color
- local hue = bedcolors[i][2]
-
- if color == "darkgrey" then
- color2 = "dark_grey"
- end
- homedecor.register("bed_"..color.."_regular", {
- mesh = "homedecor_bed_regular.obj",
- tiles = {
- "homedecor_bed_frame.png",
- "default_wood.png",
- "wool_white.png",
- "wool_"..color2..".png",
- "homedecor_bed_bottom.png",
- "wool_"..color2..".png^[brighten", -- pillow
- },
- inventory_image = "homedecor_bed_inv.png^(homedecor_bed_overlay_inv.png^[colorize:"..hue..")",
- description = S("Bed (%s)"):format(color),
- groups = {snappy=3},
- selection_box = bed_sbox,
- collision_box = bed_cbox,
- sounds = default.node_sound_wood_defaults(),
- on_rotate = screwdriver.disallow,
- after_place_node = function(pos, placer, itemstack, pointed_thing)
- if not placer:get_player_control().sneak then
- return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, color)
- end
- end,
- after_dig_node = function(pos)
- homedecor.unextend_bed(pos, color)
- end,
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
- if minetest.get_modpath("beds") then
- beds.on_rightclick(pos, clicker)
- end
+homedecor.register("bed_regular", {
+ mesh = "homedecor_bed_regular.obj",
+ tiles = {
+ { name = "homedecor_bed_frame.png", color = 0xffffffff },
+ { name = "default_wood.png", color = 0xffffffff },
+ { name = "wool_white.png", color = 0xffffffff },
+ "wool_white.png",
+ { name = "homedecor_bed_bottom.png", color = 0xffffffff },
+ "wool_white.png^[brighten", -- pillow
+ },
+ inventory_image = "homedecor_bed_inv.png",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ description = S("Bed"),
+ groups = {snappy=3},
+ selection_box = bed_sbox,
+ node_box = bed_cbox,
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.disallow,
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ homedecor.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
+ if not placer:get_player_control().sneak then
+ return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing)
+ end
+ end,
+ after_dig_node = function(pos)
+ homedecor.unextend_bed(pos)
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:bed_regular", "wallmounted")
+ elseif itemname == "homedecor:bed_regular" then
+ homedecor.bed_expansion(pos, clicker, itemstack, pointed_thing, true)
+ return itemstack
+ else
+-- if minetest.get_modpath("beds") then
+-- beds.on_rightclick(pos, clicker)
+-- end
return itemstack
end
- })
+ end
+})
- homedecor.register("bed_"..color.."_extended", {
- mesh = "homedecor_bed_extended.obj",
- tiles = {
- "homedecor_bed_frame.png",
- "default_wood.png",
- "wool_white.png",
- "wool_"..color2..".png",
- "homedecor_bed_bottom.png",
- "wool_"..color2..".png^[brighten",
- },
- selection_box = bed_sbox,
- collision_box = bed_cbox,
- sounds = default.node_sound_wood_defaults(),
- expand = { forward = "air" },
- on_rotate = screwdriver.disallow,
- after_dig_node = function(pos)
- homedecor.unextend_bed(pos, color)
- end,
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
- if minetest.get_modpath("beds") then
- beds.on_rightclick(pos, clicker)
- end
+homedecor.register("bed_extended", {
+ mesh = "homedecor_bed_extended.obj",
+ tiles = {
+ { name = "homedecor_bed_frame.png", color = 0xffffffff },
+ { name = "default_wood.png", color = 0xffffffff },
+ { name = "wool_white.png", color = 0xffffffff },
+ "wool_white.png",
+ { name = "homedecor_bed_bottom.png", color = 0xffffffff },
+ "wool_white.png^[brighten",
+ },
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ selection_box = bed_sbox,
+ node_box = bed_cbox,
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ expand = { forward = "air" },
+ on_rotate = screwdriver.disallow,
+ after_dig_node = function(pos)
+ homedecor.unextend_bed(pos)
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:bed_extended", "wallmounted")
+ else
+-- if minetest.get_modpath("beds") then
+-- beds.on_rightclick(pos, clicker)
+-- end
return itemstack
- end,
- drop = "homedecor:bed_"..color.."_regular"
- })
+ end
+ end,
+ drop = "homedecor:bed_regular"
+})
- homedecor.register("bed_"..color.."_kingsize", {
- mesh = "homedecor_bed_kingsize.obj",
- tiles = {
- "homedecor_bed_frame.png",
- "default_wood.png",
- "wool_white.png",
- "wool_"..color2..".png",
- "homedecor_bed_bottom.png",
- "wool_"..color2..".png^[brighten",
- },
- inventory_image = "homedecor_bed_kingsize_inv.png^(homedecor_bed_kingsize_overlay_inv.png^[colorize:"..hue..")",
- groups = {snappy=3, not_in_creative_inventory=1},
- description = S("Bed (%s, king sized)"):format(color),
- groups = {snappy=3, not_in_creative_inventory=1},
- selection_box = kbed_sbox,
- collision_box = kbed_cbox,
- sounds = default.node_sound_wood_defaults(),
- on_rotate = screwdriver.disallow,
- after_dig_node = function(pos, oldnode, oldmetadata, digger)
- local inv = digger:get_inventory()
- if digger:get_player_control().sneak and inv:room_for_item("main", "bed_"..color.."_regular 1") then
- inv:remove_item("main", "homedecor:bed_"..color.."_kingsize 1")
- inv:add_item("main", "homedecor:bed_"..color.."_regular 2")
- end
- end,
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
- if minetest.get_modpath("beds") then
- beds.on_rightclick(pos, clicker)
- end
+homedecor.register("bed_kingsize", {
+ mesh = "homedecor_bed_kingsize.obj",
+ tiles = {
+ { name = "homedecor_bed_frame.png", color = 0xffffffff },
+ { name = "default_wood.png", color = 0xffffffff },
+ { name = "wool_white.png", color = 0xffffffff },
+ "wool_white.png",
+ { name = "homedecor_bed_bottom.png", color = 0xffffffff },
+ "wool_white.png^[brighten",
+ },
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ inventory_image = "homedecor_bed_kingsize_inv.png",
+ groups = {snappy=3, not_in_creative_inventory=1},
+ description = S("Bed (king sized)"),
+ groups = {snappy=3, not_in_creative_inventory=1},
+ selection_box = kbed_sbox,
+ node_box = kbed_cbox,
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.disallow,
+ after_place_node = homedecor.fix_rotation_nsew,
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ local inv = digger:get_inventory()
+ if digger:get_player_control().sneak and inv:room_for_item("main", "bed_regular 1") then
+ inv:remove_item("main", "homedecor:bed_kingsize 1")
+ inv:add_item("main", "homedecor:bed_regular 2")
+ end
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:bed_kingsize", "wallmounted")
+ else
+-- if minetest.get_modpath("beds") then
+-- beds.on_rightclick(pos, clicker)
+-- end
return itemstack
end
- })
-
- minetest.register_alias("homedecor:bed_"..color.."_foot", "homedecor:bed_"..color.."_regular")
- minetest.register_alias("homedecor:bed_"..color.."_footext", "homedecor:bed_"..color.."_extended")
- minetest.register_alias("homedecor:bed_"..color.."_head", "air")
-
-end
-
+ end
+})
-for _, w in pairs({"mahogany", "oak"}) do
+for _, w in pairs({ N_("mahogany"), N_("oak") }) do
homedecor.register("nightstand_"..w.."_one_drawer", {
- description = S("Nightstand with One Drawer ("..w..")"),
+ description = S("Nightstand with One Drawer (@1)", S(w)),
tiles = { 'homedecor_nightstand_'..w..'_tb.png',
'homedecor_nightstand_'..w..'_tb.png^[transformFY',
'homedecor_nightstand_'..w..'_lr.png^[transformFX',
@@ -167,7 +167,7 @@ for _, w in pairs({"mahogany", "oak"}) do
type = "fixed",
fixed = {
{ -8/16, 0, -30/64, 8/16, 8/16, 8/16 }, -- top half
- { -7/16, 1/16, -32/64, 7/16, 7/16, -29/64}, -- drawer face
+ { -7/16, 1/16, -32/64, 7/16, 7/16, -29/64}, -- drawer face
{ -8/16, -8/16, -30/64, -7/16, 0, 8/16 }, -- left
{ 7/16, -8/16, -30/64, 8/16, 0, 8/16 }, -- right
{ -8/16, -8/16, 7/16, 8/16, 0, 8/16 }, -- back
@@ -185,7 +185,7 @@ for _, w in pairs({"mahogany", "oak"}) do
})
homedecor.register("nightstand_"..w.."_two_drawers", {
- description = S("Nightstand with Two Drawers ("..w..")"),
+ description = S("Nightstand with Two Drawers (@1)", S(w)),
tiles = { 'homedecor_nightstand_'..w..'_tb.png',
'homedecor_nightstand_'..w..'_tb.png^[transformFY',
'homedecor_nightstand_'..w..'_lr.png^[transformFX',
@@ -210,3 +210,75 @@ for _, w in pairs({"mahogany", "oak"}) do
},
})
end
+
+-- convert to param2 colorization
+
+local bedcolors = {
+ "black",
+ "brown",
+ "blue",
+ "cyan",
+ "darkgrey",
+ "dark_green",
+ "green",
+ "grey",
+ "magenta",
+ "orange",
+ "pink",
+ "red",
+ "violet",
+ "white",
+ "yellow"
+}
+
+homedecor.old_bed_nodes = {}
+
+for _, color in ipairs(bedcolors) do
+ table.insert(homedecor.old_bed_nodes, "homedecor:bed_"..color.."_regular")
+ table.insert(homedecor.old_bed_nodes, "homedecor:bed_"..color.."_extended")
+ table.insert(homedecor.old_bed_nodes, "homedecor:bed_"..color.."_kingsize")
+end
+
+minetest.register_lbm({
+ name = "homedecor:convert_beds",
+ label = "Convert homedecor static bed nodes to use param2 color",
+ run_at_every_load = true,
+ nodenames = homedecor.old_bed_nodes,
+ action = function(pos, node)
+ local name = node.name
+ local color = string.sub(name, string.find(name, "_") + 1)
+ local color = string.sub(color, 1, string.find(color, "_", -10) - 1) -- -10 puts us near the end of the color field
+
+ if color == "darkgrey" then
+ color = "dark_grey"
+ end
+
+ local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
+ local old_fdir = math.floor(node.param2 % 32)
+ local new_fdir = 3
+
+ if old_fdir == 0 then
+ new_fdir = 3
+ elseif old_fdir == 1 then
+ new_fdir = 4
+ elseif old_fdir == 2 then
+ new_fdir = 2
+ elseif old_fdir == 3 then
+ new_fdir = 5
+ end
+
+ local param2 = paletteidx + new_fdir
+
+ if string.find(name, "regular") then
+ new_name = "homedecor:bed_regular"
+ elseif string.find(name, "extended") then
+ new_name = "homedecor:bed_extended"
+ else
+ new_name = "homedecor:bed_kingsize"
+ end
+
+ minetest.set_node(pos, { name = new_name, param2 = param2 })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color)
+ end
+})