Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • Illuna-Minetest/homedecor_modpack
1 result
Show changes
Showing
with 1046 additions and 1110 deletions
local S = homedecor.gettext
local S = homedecor_i18n.gettext
local toilet_sbox = { local toilet_sbox = {
type = "fixed", type = "fixed",
...@@ -7,7 +8,7 @@ local toilet_sbox = { ...@@ -7,7 +8,7 @@ local toilet_sbox = {
local toilet_cbox = { local toilet_cbox = {
type = "fixed", type = "fixed",
fixed = { fixed = {
{-6/16, -8/16, -8/16, 6/16, 1/16, 8/16 }, {-6/16, -8/16, -8/16, 6/16, 1/16, 8/16 },
{-6/16, -8/16, 4/16, 6/16, 9/16, 8/16 } {-6/16, -8/16, 4/16, 6/16, 9/16, 8/16 }
} }
...@@ -17,16 +18,16 @@ homedecor.register("toilet", { ...@@ -17,16 +18,16 @@ homedecor.register("toilet", {
description = S("Toilet"), description = S("Toilet"),
mesh = "homedecor_toilet_closed.obj", mesh = "homedecor_toilet_closed.obj",
tiles = { tiles = {
"darkage_marble.png^[colorize:#ffffff:175", "darkage_marble.png",
"darkage_marble.png^[colorize:#ffffff:175", "darkage_marble.png",
"darkage_marble.png^[colorize:#ffffff:175", "darkage_marble.png",
"homedecor_generic_metal_black.png^[brighten" { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey }
}, },
selection_box = toilet_sbox, selection_box = toilet_sbox,
node_box = toilet_cbox, node_box = toilet_cbox,
groups = {cracky=3}, groups = {cracky=3},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
on_punch = function (pos, node, puncher) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
node.name = "homedecor:toilet_open" node.name = "homedecor:toilet_open"
minetest.set_node(pos, node) minetest.set_node(pos, node)
end end
...@@ -35,18 +36,18 @@ homedecor.register("toilet", { ...@@ -35,18 +36,18 @@ homedecor.register("toilet", {
homedecor.register("toilet_open", { homedecor.register("toilet_open", {
mesh = "homedecor_toilet_open.obj", mesh = "homedecor_toilet_open.obj",
tiles = { tiles = {
"darkage_marble.png^[colorize:#ffffff:175", "darkage_marble.png",
"darkage_marble.png^[colorize:#ffffff:175", "darkage_marble.png",
"darkage_marble.png^[colorize:#ffffff:175", "darkage_marble.png",
"default_water.png", "default_water.png",
"homedecor_generic_metal_black.png^[brighten" { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey }
}, },
selection_box = toilet_sbox, selection_box = toilet_sbox,
collision_box = toilet_cbox, collision_box = toilet_cbox,
drop = "homedecor:toilet", drop = "homedecor:toilet",
groups = {cracky=3}, groups = {cracky=3},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
on_punch = function (pos, node, puncher) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
node.name = "homedecor:toilet" node.name = "homedecor:toilet"
minetest.set_node(pos, node) minetest.set_node(pos, node)
minetest.sound_play("homedecor_toilet_flush", { minetest.sound_play("homedecor_toilet_flush", {
...@@ -89,7 +90,7 @@ homedecor.register("sink", { ...@@ -89,7 +90,7 @@ homedecor.register("sink", {
description = S("Bathroom Sink"), description = S("Bathroom Sink"),
mesh = "homedecor_bathroom_sink.obj", mesh = "homedecor_bathroom_sink.obj",
tiles = { tiles = {
"darkage_marble.png^[colorize:#ffffff:175", "darkage_marble.png",
"darkage_marble.png", "darkage_marble.png",
"default_water.png" "default_water.png"
}, },
...@@ -119,7 +120,8 @@ local function taps_on_rightclick(pos, node, clicker, itemstack, pointed_thing) ...@@ -119,7 +120,8 @@ local function taps_on_rightclick(pos, node, clicker, itemstack, pointed_thing)
if below and if below and
below.name == "homedecor:shower_tray" or below.name == "homedecor:shower_tray" or
below.name == "homedecor:sink" or below.name == "homedecor:sink" or
below.name == "homedecor:kitchen_cabinet_with_sink" then below.name == "homedecor:kitchen_cabinet_with_sink" or
below.name == "homedecor:kitchen_cabinet_with_sink_locked" then
local particledef = { local particledef = {
outlet = { x = 0, y = -0.44, z = 0.28 }, outlet = { x = 0, y = -0.44, z = 0.28 },
velocity_x = { min = -0.1, max = 0.1 }, velocity_x = { min = -0.1, max = 0.1 },
...@@ -136,9 +138,9 @@ homedecor.register("taps", { ...@@ -136,9 +138,9 @@ homedecor.register("taps", {
description = S("Bathroom taps/faucet"), description = S("Bathroom taps/faucet"),
mesh = "homedecor_bathroom_faucet.obj", mesh = "homedecor_bathroom_faucet.obj",
tiles = { tiles = {
"homedecor_generic_metal_black.png^[brighten", { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"homedecor_generic_metal_bright.png", "homedecor_generic_metal_bright.png",
"homedecor_generic_metal_black.png^[colorize:#ffffff:200", "homedecor_generic_metal.png",
"homedecor_generic_metal_bright.png" "homedecor_generic_metal_bright.png"
}, },
inventory_image = "3dforniture_taps_inv.png", inventory_image = "3dforniture_taps_inv.png",
...@@ -161,7 +163,7 @@ homedecor.register("taps_brass", { ...@@ -161,7 +163,7 @@ homedecor.register("taps_brass", {
tiles = { tiles = {
"homedecor_generic_metal_brass.png", "homedecor_generic_metal_brass.png",
"homedecor_generic_metal_brass.png", "homedecor_generic_metal_brass.png",
"homedecor_generic_metal_black.png^[colorize:#ffffff:200", "homedecor_generic_metal.png",
"homedecor_generic_metal_brass.png" "homedecor_generic_metal_brass.png"
}, },
inventory_image = "3dforniture_taps_brass_inv.png", inventory_image = "3dforniture_taps_brass_inv.png",
...@@ -217,11 +219,11 @@ homedecor.register("shower_head", { ...@@ -217,11 +219,11 @@ homedecor.register("shower_head", {
drawtype = "mesh", drawtype = "mesh",
mesh = "homedecor_shower_head.obj", mesh = "homedecor_shower_head.obj",
tiles = { tiles = {
"homedecor_generic_metal_black.png^[brighten", "homedecor_generic_metal.png",
"homedecor_shower_head.png" "homedecor_shower_head.png"
}, },
inventory_image = "homedecor_shower_head_inv.png", inventory_image = "homedecor_shower_head_inv.png",
description = "Shower Head", description = S("Shower Head"),
groups = {snappy=3}, groups = {snappy=3},
selection_box = sh_cbox, selection_box = sh_cbox,
walkable = false, walkable = false,
...@@ -245,6 +247,46 @@ homedecor.register("shower_head", { ...@@ -245,6 +247,46 @@ homedecor.register("shower_head", {
end end
}) })
homedecor.register("bathtub_clawfoot_brass_taps", {
drawtype = "mesh",
mesh = "homedecor_bathtub_clawfoot.obj",
tiles = {
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"homedecor_generic_metal_bright.png",
"homedecor_generic_metal_bright.png",
"homedecor_generic_metal_brass.png",
"homedecor_marble.png",
"homedecor_bathtub_clawfoot_bottom_inside.png",
},
description = S("Bathtub, clawfoot, with brass taps"),
groups = {cracky=3},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 1.5, 0.3125, 0.5 },
},
sounds = default.node_sound_stone_defaults(),
})
homedecor.register("bathtub_clawfoot_chrome_taps", {
drawtype = "mesh",
mesh = "homedecor_bathtub_clawfoot.obj",
tiles = {
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"homedecor_generic_metal_bright.png",
"homedecor_generic_metal_bright.png",
"homedecor_generic_metal_bright.png",
"homedecor_marble.png",
"homedecor_bathtub_clawfoot_bottom_inside.png",
},
description = S("Bathtub, clawfoot, with chrome taps"),
groups = {cracky=3},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 1.5, 0.3125, 0.5 },
},
sounds = default.node_sound_stone_defaults(),
})
local bs_cbox = { local bs_cbox = {
type = "fixed", type = "fixed",
fixed = { -8/16, -8/16, 1/16, 8/16, 8/16, 8/16 } fixed = { -8/16, -8/16, 1/16, 8/16, 8/16, 8/16 }
...@@ -261,7 +303,7 @@ homedecor.register("bathroom_set", { ...@@ -261,7 +303,7 @@ homedecor.register("bathroom_set", {
"homedecor_bathroom_set_toothpaste.png", "homedecor_bathroom_set_toothpaste.png",
}, },
inventory_image = "homedecor_bathroom_set_inv.png", inventory_image = "homedecor_bathroom_set_inv.png",
description = "Bathroom sundries set", description = S("Bathroom sundries set"),
groups = {snappy=3}, groups = {snappy=3},
selection_box = bs_cbox, selection_box = bs_cbox,
walkable = false, walkable = false,
......
local S = homedecor.gettext
local bedcolors = { local S = homedecor_i18n.gettext
{ "black", "#000000:200" }, --new cg72
{ "brown", "#603010:175" }, local function N_(x) return x end
{ "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 bed_sbox = { local bed_sbox = {
type = "fixed", type = "wallmounted",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 1.5 } wall_side = { -0.5, -0.5, -0.5, 0.5, 0.5, 1.5 }
} }
local bed_cbox = { local bed_cbox = {
type = "fixed", type = "wallmounted",
fixed = { wall_side = {
{ -0.5, -0.5, -0.5, 0.5, -0.05, 1.5 }, { -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, 1.44, 0.5, 0.5, 1.5 },
{ -0.5, -0.5, -0.5, 0.5, 0.18, -0.44 }, { -0.5, -0.5, -0.5, 0.5, 0.18, -0.44 },
...@@ -33,130 +18,139 @@ local bed_cbox = { ...@@ -33,130 +18,139 @@ local bed_cbox = {
} }
local kbed_sbox = { local kbed_sbox = {
type = "fixed", type = "wallmounted",
fixed = { -0.5, -0.5, -0.5, 1.5, 0.5, 1.5 } wall_side = { -0.5, -0.5, -0.5, 1.5, 0.5, 1.5 }
} }
local kbed_cbox = { local kbed_cbox = {
type = "fixed", type = "wallmounted",
fixed = { wall_side = {
{ -0.5, -0.5, -0.5, 1.5, -0.05, 1.5 }, { -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, 1.44, 1.5, 0.5, 1.5 },
{ -0.5, -0.5, -0.5, 1.5, 0.18, -0.44 }, { -0.5, -0.5, -0.5, 1.5, 0.18, -0.44 },
} }
} }
for i in ipairs(bedcolors) do homedecor.register("bed_regular", {
local color = bedcolors[i][1] mesh = "homedecor_bed_regular.obj",
local color2=color tiles = {
local hue = bedcolors[i][2] { name = "homedecor_bed_frame.png", color = 0xffffffff },
{ name = "default_wood.png", color = 0xffffffff },
if color == "darkgrey" then { name = "wool_white.png", color = 0xffffffff },
color2 = "dark_grey" "wool_white.png",
end { name = "homedecor_bed_bottom.png", color = 0xffffffff },
homedecor.register("bed_"..color.."_regular", { "wool_white.png^[brighten", -- pillow
mesh = "homedecor_bed_regular.obj", },
tiles = { inventory_image = "homedecor_bed_inv.png",
"homedecor_bed_frame.png", paramtype2 = "colorwallmounted",
"default_wood.png", palette = "unifieddyes_palette_colorwallmounted.png",
"wool_white.png", description = S("Bed"),
"wool_"..color2..".png", groups = {snappy=3, ud_param2_colorable = 1},
"homedecor_bed_bottom.png", selection_box = bed_sbox,
"wool_"..color2..".png^[brighten", -- pillow node_box = bed_cbox,
}, sounds = default.node_sound_wood_defaults(),
inventory_image = "homedecor_bed_inv.png^(homedecor_bed_overlay_inv.png^[colorize:"..hue..")", on_rotate = screwdriver.disallow,
description = S("Bed (%s)"):format(color), after_place_node = function(pos, placer, itemstack, pointed_thing)
groups = {snappy=3}, unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
selection_box = bed_sbox, unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
collision_box = bed_cbox, if not placer:get_player_control().sneak then
sounds = default.node_sound_wood_defaults(), return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing)
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
return itemstack
end end
}) end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
homedecor.register("bed_"..color.."_extended", { unifieddyes.after_dig_node(pos, oldnode, oldmetadata, digger)
mesh = "homedecor_bed_extended.obj", homedecor.unextend_bed(pos)
tiles = { end,
"homedecor_bed_frame.png", on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
"default_wood.png", local itemname = itemstack:get_name()
"wool_white.png", if itemname == "homedecor:bed_regular" then
"wool_"..color2..".png", homedecor.bed_expansion(pos, clicker, itemstack, pointed_thing, true)
"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
return itemstack return itemstack
end, else
drop = "homedecor:bed_"..color.."_regular" -- if minetest.get_modpath("beds") then
}) -- beds.on_rightclick(pos, clicker)
-- end
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
return itemstack return itemstack
end end
}) 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 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, ud_param2_colorable = 1},
sounds = default.node_sound_wood_defaults(),
expand = { forward = "air" },
on_rotate = screwdriver.disallow,
after_place_node = unifieddyes.recolor_on_place,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
unifieddyes.after_dig_node(pos, oldnode, oldmetadata, digger)
homedecor.unextend_bed(pos)
end,
-- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
-- local itemname = itemstack:get_name()
-- if minetest.get_modpath("beds") then
-- beds.on_rightclick(pos, clicker)
-- end
-- return itemstack
-- end,
drop = "homedecor:bed_regular"
})
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",
description = S("Bed (king sized)"),
groups = {snappy=3, ud_param2_colorable = 1},
selection_box = kbed_sbox,
node_box = kbed_cbox,
sounds = default.node_sound_wood_defaults(),
on_rotate = screwdriver.disallow,
after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
unifieddyes.after_dig_node(pos, oldnode, oldmetadata, digger)
local inv = digger:get_inventory()
if digger:get_player_control().sneak and inv:room_for_item("main", "homedecor:bed_regular 2") 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 minetest.get_modpath("beds") then
-- beds.on_rightclick(pos, clicker)
-- end
-- return itemstack
-- end
})
for _, w in pairs({"mahogany", "oak"}) do for _, w in pairs({ N_("mahogany"), N_("oak") }) do
homedecor.register("nightstand_"..w.."_one_drawer", { 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', tiles = { 'homedecor_nightstand_'..w..'_tb.png',
'homedecor_nightstand_'..w..'_tb.png^[transformFY', 'homedecor_nightstand_'..w..'_tb.png^[transformFY',
'homedecor_nightstand_'..w..'_lr.png^[transformFX', 'homedecor_nightstand_'..w..'_lr.png^[transformFX',
...@@ -167,7 +161,7 @@ for _, w in pairs({"mahogany", "oak"}) do ...@@ -167,7 +161,7 @@ for _, w in pairs({"mahogany", "oak"}) do
type = "fixed", type = "fixed",
fixed = { fixed = {
{ -8/16, 0, -30/64, 8/16, 8/16, 8/16 }, -- top half { -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 { -8/16, -8/16, -30/64, -7/16, 0, 8/16 }, -- left
{ 7/16, -8/16, -30/64, 8/16, 0, 8/16 }, -- right { 7/16, -8/16, -30/64, 8/16, 0, 8/16 }, -- right
{ -8/16, -8/16, 7/16, 8/16, 0, 8/16 }, -- back { -8/16, -8/16, 7/16, 8/16, 0, 8/16 }, -- back
...@@ -185,7 +179,7 @@ for _, w in pairs({"mahogany", "oak"}) do ...@@ -185,7 +179,7 @@ for _, w in pairs({"mahogany", "oak"}) do
}) })
homedecor.register("nightstand_"..w.."_two_drawers", { 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', tiles = { 'homedecor_nightstand_'..w..'_tb.png',
'homedecor_nightstand_'..w..'_tb.png^[transformFY', 'homedecor_nightstand_'..w..'_tb.png^[transformFY',
'homedecor_nightstand_'..w..'_lr.png^[transformFX', 'homedecor_nightstand_'..w..'_lr.png^[transformFX',
...@@ -210,3 +204,78 @@ for _, w in pairs({"mahogany", "oak"}) do ...@@ -210,3 +204,78 @@ for _, w in pairs({"mahogany", "oak"}) do
}, },
}) })
end 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 = false,
nodenames = homedecor.old_bed_nodes,
action = function(pos, node)
local name = node.name
local color = string.sub(name, string.find(name, "_") + 1)
-- -10 puts us near the end of the color field
color = string.sub(color, 1, string.find(color, "_", -10) - 1)
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
local new_name
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
})
local S = homedecor.gettext local S = homedecor_i18n.gettext
local function N_(x) return x end
local bookcolors = { local bookcolors = {
{ "red", "#c00000:150" }, { N_("red"), 0xffd26466 },
{ "green", "#008000:150" }, { N_("green"), 0xff62aa66 },
{ "blue", "#4040c0:150" }, { N_("blue"), 0xff8686d7 },
{ "violet", "#600070:150" }, { N_("violet"), 0xff9c65a7 },
{ "grey", "#202020:150" }, { N_("grey"), 0xff757579 },
{ "brown", "#603010:175" } { N_("brown"), 0xff896958 }
} }
local BOOK_FORMNAME = "homedecor:book_form" local BOOK_FORMNAME = "homedecor:book_form"
local player_current_book = { } local player_current_book = { }
for c in ipairs(bookcolors) do for _, c in ipairs(bookcolors) do
local color = bookcolors[c][1] local color, hue = unpack(c)
local color_d = S(bookcolors[c][1])
local hue = bookcolors[c][2]
local function book_dig(pos, node, digger) local function book_dig(pos, node, digger)
if minetest.is_protected(pos, digger:get_player_name()) then return end if minetest.is_protected(pos, digger:get_player_name()) then return end
...@@ -38,17 +38,17 @@ for c in ipairs(bookcolors) do ...@@ -38,17 +38,17 @@ for c in ipairs(bookcolors) do
minetest.remove_node(pos) minetest.remove_node(pos)
end end
local inv_img = "homedecor_book_inv.png^[colorize:"..hue.."^homedecor_book_trim_inv.png"
homedecor.register("book_"..color, { homedecor.register("book_"..color, {
description = S("Writable Book (%s)"):format(color_d), description = S("Writable Book (@1)", S(color)),
mesh = "homedecor_book.obj", mesh = "homedecor_book.obj",
tiles = { tiles = {
"(homedecor_book_cover.png^[colorize:"..hue..")^homedecor_book_cover_trim.png", { name = "homedecor_book_cover.png", color = hue },
"homedecor_book_edges.png" { name = "homedecor_book_edges.png", color = "white" }
},
overlay_tiles = {
{ name = "homedecor_book_cover_trim.png", color = "white" },
""
}, },
inventory_image = inv_img,
wield_image = inv_img,
groups = { snappy=3, oddly_breakable_by_hand=3, book=1 }, groups = { snappy=3, oddly_breakable_by_hand=3, book=1 },
walkable = false, walkable = false,
stack_max = 1, stack_max = 1,
...@@ -104,9 +104,9 @@ for c in ipairs(bookcolors) do ...@@ -104,9 +104,9 @@ for c in ipairs(bookcolors) do
homedecor.register("book_open_"..color, { homedecor.register("book_open_"..color, {
mesh = "homedecor_book_open.obj", mesh = "homedecor_book_open.obj",
tiles = { tiles = {
"(homedecor_book_cover.png^[colorize:"..hue..")^homedecor_book_cover_trim.png", { name = "homedecor_book_cover.png", color = hue },
"homedecor_book_edges.png", { name = "homedecor_book_edges.png", color = "white" },
"homedecor_book_pages.png" { name = "homedecor_book_pages.png", color = "white" }
}, },
groups = { snappy=3, oddly_breakable_by_hand=3, not_in_creative_inventory=1 }, groups = { snappy=3, oddly_breakable_by_hand=3, not_in_creative_inventory=1 },
drop = "homedecor:book_"..color, drop = "homedecor:book_"..color,
...@@ -169,6 +169,9 @@ minetest.register_on_player_receive_fields(function(player, form_name, fields) ...@@ -169,6 +169,9 @@ minetest.register_on_player_receive_fields(function(player, form_name, fields)
if (fields.title or "") ~= "" then if (fields.title or "") ~= "" then
meta:set_string("infotext", fields.title) meta:set_string("infotext", fields.title)
end end
minetest.log("action", player:get_player_name().." has written in a book (title: \""..fields.title.."\"): \""..fields.text.. minetest.log("action", S("@1 has written in a book (title: \"@2\"): \"@3\" at location @4",
"\" at location: "..minetest.pos_to_string(player:getpos())) player:get_player_name(), fields.title, fields.text, minetest.pos_to_string(player:getpos())))
end) end)
minetest.register_alias("homedecor:book", "homedecor:book_grey")
minetest.register_alias("homedecor:book_open", "homedecor:book_open_grey")
-- Nodes that would affect the local temperature e.g. fans, heater, A/C -- Nodes that would affect the local temperature e.g. fans, heater, A/C
local S = homedecor.gettext local S = homedecor_i18n.gettext
homedecor.register("air_conditioner", { homedecor.register("air_conditioner", {
description = S("Air Conditioner"), description = S("Air Conditioner"),
...@@ -24,8 +24,24 @@ minetest.register_entity("homedecor:mesh_desk_fan", { ...@@ -24,8 +24,24 @@ minetest.register_entity("homedecor:mesh_desk_fan", {
visual_size = {x=10, y=10}, visual_size = {x=10, y=10},
}) })
local add_mesh_desk_fan_entity = function(pos)
print("in add_mesh_desk_fan_entity()")
local param2 = minetest.get_node(pos).param2
local entity = minetest.add_entity(pos, "homedecor:mesh_desk_fan")
if param2 == 0 then
entity:setyaw(3.142) -- 180 degrees
elseif minetest.get_node(pos).param2 == 1 then
entity:setyaw(3.142/2) -- 90 degrees
elseif minetest.get_node(pos).param2 == 3 then
entity:setyaw((-3.142/2)) -- 270 degrees
else
entity:setyaw(0)
end
return entity
end
homedecor.register("desk_fan", { homedecor.register("desk_fan", {
description = "Desk Fan", description = S("Desk Fan"),
groups = {oddly_breakable_by_hand=2}, groups = {oddly_breakable_by_hand=2},
node_box = { node_box = {
type = "fixed", type = "fixed",
...@@ -39,55 +55,25 @@ homedecor.register("desk_fan", { ...@@ -39,55 +55,25 @@ homedecor.register("desk_fan", {
selection_box = { type = "regular" }, selection_box = { type = "regular" },
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
on_construct = function(pos) on_construct = function(pos)
local entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
meta:set_string("active", "no") meta:set_string("active", "no")
if entity_remove[1] == nil then add_mesh_desk_fan_entity(pos)
minetest.add_entity({x=pos.x, y=pos.y, z=pos.z}, "homedecor:mesh_desk_fan") --+(0.0625*10)
entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
if minetest.get_node(pos).param2 == 0 then --list of rad to 90 degree: 3.142/2 = 90; 3.142 = 180; 3*3.142 = 270
entity_remove[1]:setyaw(3.142)
elseif minetest.get_node(pos).param2 == 1 then
entity_remove[1]:setyaw(3.142/2)
elseif minetest.get_node(pos).param2 == 3 then
entity_remove[1]:setyaw((-3.142/2))
else
entity_remove[1]:setyaw(0)
end
end
end, end,
on_punch = function(pos) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local entity_anim = minetest.get_objects_inside_radius(pos, 0.1) local meta = minetest.get_meta(pos)
local speedy_meta = minetest.get_meta(pos) local entities = minetest.get_objects_inside_radius(pos, 0.1)
if speedy_meta:get_string("active") == "no" then local entity = entities[1] or add_mesh_desk_fan_entity(pos)
speedy_meta:set_string("active", "yes") if meta:get_string("active") == "no" then
elseif speedy_meta:get_string("active") == "yes" then meta:set_string("active", "yes")
speedy_meta:set_string("active", "no") entity:set_animation({x=0,y=96}, 24, 0)
end else
meta:set_string("active", "no")
if entity_anim[1] == nil then entity:set_animation({x=0,y=0}, 1, 0)
minetest.add_entity({x=pos.x, y=pos.y, z=pos.z}, "homedecor:mesh_desk_fan") --+(0.0625*10)
local entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
if minetest.get_node(pos).param2 == 0 then --list of rad to 90 degree: 3.142/2 = 90; 3.142 = 180; 3*3.142 = 270
entity_remove[1]:setyaw(3.142)
elseif minetest.get_node(pos).param2 == 1 then
entity_remove[1]:setyaw(3.142/2)
elseif minetest.get_node(pos).param2 == 3 then
entity_remove[1]:setyaw((-3.142/2))
else
entity_remove[1]:setyaw(0)
end
end
local entity_anim = minetest.get_objects_inside_radius(pos, 0.1)
if minetest.get_meta(pos):get_string("active") == "no" then
entity_anim[1]:set_animation({x=0,y=0}, 1, 0)
elseif minetest.get_meta(pos):get_string("active") == "yes" then
entity_anim[1]:set_animation({x=0,y=96}, 24, 0)
end end
end, end,
after_dig_node = function(pos) after_dig_node = function(pos)
local entity_remove = minetest.get_objects_inside_radius(pos, 0.1) local entities = minetest.get_objects_inside_radius(pos, 0.1)
entity_remove[1]:remove() if entities[1] then entities[1]:remove() end
end, end,
}) })
...@@ -146,11 +132,11 @@ local r_cbox = homedecor.nodebox.slab_z(-0.25) ...@@ -146,11 +132,11 @@ local r_cbox = homedecor.nodebox.slab_z(-0.25)
homedecor.register("radiator", { homedecor.register("radiator", {
mesh = "homedecor_radiator.obj", mesh = "homedecor_radiator.obj",
tiles = { tiles = {
"homedecor_generic_metal_black.png^[colorize:#ffffff:200", "homedecor_generic_metal.png",
"homedecor_radiator_controls.png" "homedecor_radiator_controls.png"
}, },
inventory_image = "homedecor_radiator_inv.png", inventory_image = "homedecor_radiator_inv.png",
description = "Radiator heater", description = S("Radiator heater"),
groups = {snappy=3}, groups = {snappy=3},
selection_box = r_cbox, selection_box = r_cbox,
collision_box = r_cbox, collision_box = r_cbox,
......
local S = homedecor_i18n.gettext
local clock_sbox = { local clock_sbox = {
type = "fixed", type = "fixed",
fixed = { -8/32, -8/32, 14/32, 8/32, 8/32, 16/32 } fixed = { -8/32, -8/32, 14/32, 8/32, 8/32, 16/32 }
} }
local clock_materials = { local clock_materials = {
{ "plastic", "homedecor_generic_plastic_black.png^[colorize:#ffffff:220" }, { "plastic", S("Plastic analog clock"), "homedecor_generic_plastic.png" },
{ "wood", "default_wood.png" } { "wood", S("Wooden analog clock"), "default_wood.png" }
} }
for i in ipairs(clock_materials) do for _, mat in ipairs(clock_materials) do
local m1 = clock_materials[i][1] local name, desc, tex = unpack(mat)
local m2 = clock_materials[i][2] homedecor.register("analog_clock_"..name, {
homedecor.register("analog_clock_"..m1, { description = desc,
description = "Analog clock ("..m1..")",
mesh = "homedecor_analog_clock.obj", mesh = "homedecor_analog_clock.obj",
tiles = { tiles = {
"homedecor_analog_clock_face.png", "homedecor_analog_clock_face.png",
m2, tex,
"homedecor_analog_clock_back.png" "homedecor_analog_clock_back.png"
}, },
inventory_image = "homedecor_analog_clock_"..m1.."_inv.png", inventory_image = "homedecor_analog_clock_"..name.."_inv.png",
walkable = false, walkable = false,
selection_box = clock_sbox, selection_box = clock_sbox,
groups = {snappy=3}, groups = {snappy=3},
...@@ -28,7 +30,7 @@ for i in ipairs(clock_materials) do ...@@ -28,7 +30,7 @@ for i in ipairs(clock_materials) do
end end
homedecor.register("digital_clock", { homedecor.register("digital_clock", {
description = "Digital clock", description = S("Digital clock"),
tiles = { tiles = {
"homedecor_digital_clock_edges.png", "homedecor_digital_clock_edges.png",
"homedecor_digital_clock_edges.png", "homedecor_digital_clock_edges.png",
...@@ -50,7 +52,7 @@ homedecor.register("digital_clock", { ...@@ -50,7 +52,7 @@ homedecor.register("digital_clock", {
}) })
homedecor.register("alarm_clock", { homedecor.register("alarm_clock", {
description = "Alarm clock", description = S("Alarm clock"),
tiles = { tiles = {
"homedecor_alarm_clock_top.png", "homedecor_alarm_clock_top.png",
"homedecor_alarm_clock_bottom.png", "homedecor_alarm_clock_bottom.png",
...@@ -77,12 +79,12 @@ local gf_cbox = { ...@@ -77,12 +79,12 @@ local gf_cbox = {
} }
homedecor.register("grandfather_clock", { homedecor.register("grandfather_clock", {
description = "Grandfather Clock", description = S("Grandfather Clock"),
mesh = "homedecor_grandfather_clock.obj", mesh = "homedecor_grandfather_clock.obj",
tiles = { tiles = {
"default_glass.png", "default_glass.png",
"homedecor_grandfather_clock_face.png", "homedecor_grandfather_clock_face.png",
"homedecor_generic_wood_luxury.png", homedecor.lux_wood,
"homedecor_grandfather_clock_face_edge.png", "homedecor_grandfather_clock_face_edge.png",
"homedecor_generic_metal_brass.png" "homedecor_generic_metal_brass.png"
}, },
......
local S = homedecor_i18n.gettext
minetest.register_node("homedecor:cobweb_corner", { minetest.register_node("homedecor:cobweb_corner", {
description = "Cobweb", description = S("Cobweb"),
drawtype = "torchlike", drawtype = "torchlike",
tiles = { "homedecor_cobweb_torchlike.png" }, tiles = { "homedecor_cobweb_torchlike.png" },
inventory_image = "homedecor_cobweb.png", inventory_image = "homedecor_cobweb.png",
...@@ -23,7 +26,7 @@ minetest.register_node("homedecor:cobweb_corner", { ...@@ -23,7 +26,7 @@ minetest.register_node("homedecor:cobweb_corner", {
}) })
minetest.register_node("homedecor:cobweb_centered", { minetest.register_node("homedecor:cobweb_centered", {
description = "Cobweb", description = S("Cobweb"),
drawtype = "nodebox", drawtype = "nodebox",
tiles = { "homedecor_cobweb.png" }, tiles = { "homedecor_cobweb.png" },
inventory_image = "homedecor_cobweb.png", inventory_image = "homedecor_cobweb.png",
...@@ -50,7 +53,7 @@ minetest.register_node("homedecor:cobweb_centered", { ...@@ -50,7 +53,7 @@ minetest.register_node("homedecor:cobweb_centered", {
}) })
minetest.register_node("homedecor:cobweb_flat", { minetest.register_node("homedecor:cobweb_flat", {
description = "Cobweb", description = S("Cobweb"),
drawtype = "nodebox", drawtype = "nodebox",
tiles = { "homedecor_cobweb.png" }, tiles = { "homedecor_cobweb.png" },
inventory_image = "homedecor_cobweb.png", inventory_image = "homedecor_cobweb.png",
...@@ -77,7 +80,7 @@ minetest.register_node("homedecor:cobweb_flat", { ...@@ -77,7 +80,7 @@ minetest.register_node("homedecor:cobweb_flat", {
}) })
minetest.register_node("homedecor:cobweb_plantlike", { minetest.register_node("homedecor:cobweb_plantlike", {
description = "Cobweb", description = S("Cobweb"),
drawtype = "plantlike", drawtype = "plantlike",
tiles = { "homedecor_cobweb_plantlike.png" }, tiles = { "homedecor_cobweb_plantlike.png" },
inventory_image = "homedecor_cobweb.png", inventory_image = "homedecor_cobweb.png",
......
This diff is collapsed.
default default
unifieddyes
homedecor_i18n
building_blocks? building_blocks?
signs_lib? signs_lib?
moreblocks? moreblocks?
technic? technic?
dye? dye?
bees? bees?
intllib?
bucket? bucket?
beds? beds?
flowers? flowers?
......
-- Node definitions for Homedecor doors -- Node definitions for Homedecor doors
local S = homedecor.gettext local S = homedecor_i18n.gettext
local function N_(x) return x end
-- doors -- doors
local function isSolid(pos,adj) local function isSolid(pos, adjust)
local adj = {x=adj[1],y=adj[2],z=adj[3]} local adj = {x = adjust[1], y = adjust[2], z = adjust[3]}
local node = minetest.get_node(vector.add(pos,adj)) local node = minetest.get_node(vector.add(pos,adj))
if node then if node then
local idef = minetest.registered_nodes[minetest.get_node(vector.add(pos,adj)).name] local idef = minetest.registered_nodes[minetest.get_node(vector.add(pos,adj)).name]
...@@ -42,14 +44,12 @@ local function calculateClosed(pos) ...@@ -42,14 +44,12 @@ local function calculateClosed(pos)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
-- the door is considered closed if it is closing off something. -- the door is considered closed if it is closing off something.
local solids = 0
local direction = node.param2 % 6 local direction = node.param2 % 6
local isTrap = direction == 0 or direction == 5 local isTrap = direction == 0 or direction == 5
if isTrap then if isTrap then
-- the trap door is considered closed when all nodes on its sides are solid -- the trap door is considered closed when all nodes on its sides are solid
-- or all nodes in the 3x3 above/below it are solid except the center -- or all nodes in the 3x3 above/below it are solid except the center
for level = 0, 1 do for level = 0, 1 do
local fail = false
local solids = countSolids(pos,node,level) local solids = countSolids(pos,node,level)
if solids == 8 then if solids == 8 then
return true return true
...@@ -99,7 +99,6 @@ local function calculateClosed(pos) ...@@ -99,7 +99,6 @@ local function calculateClosed(pos)
end end
return false return false
end end
error("What direction is this???",direction)
end end
end end
...@@ -122,32 +121,32 @@ end ...@@ -122,32 +121,32 @@ end
local door_model_list = { local door_model_list = {
{ name = "closet_mahogany", { name = "closet_mahogany",
description = S("Mahogany Closet Door"), description = N_("Mahogany Closet Door (@1 opening)"),
mesh = "homedecor_door_closet.obj" mesh = "homedecor_door_closet.obj"
}, },
{ name = "closet_oak", { name = "closet_oak",
description = S("Oak Closet Door"), description = N_("Oak Closet Door (@1 opening)"),
mesh = "homedecor_door_closet.obj" mesh = "homedecor_door_closet.obj"
}, },
{ name = "exterior_fancy", { name = "exterior_fancy",
description = S("Fancy Wood/Glass Door"), description = N_("Fancy Wood/Glass Door (@1 opening)"),
mesh = "homedecor_door_fancy.obj", mesh = "homedecor_door_fancy.obj",
tiles = { tiles = {
"homedecor_door_exterior_fancy.png", "homedecor_door_exterior_fancy.png",
"homedecor_door_exterior_fancy_insert.png" "homedecor_door_exterior_fancy_insert.png"
}, },
usealpha = true usealpha = true
}, },
{ name = "glass", { name = "glass",
description = S("Glass Office Door"), description = N_("Glass Office Door (@1 opening)"),
mesh = "homedecor_door_plain.obj" mesh = "homedecor_door_plain.obj"
}, },
{ name = "wood_glass_oak", { name = "wood_glass_oak",
description = S("Glass and Wood, Oak-colored"), description = N_("Glass and Wood, Oak-colored (@1 opening)"),
mesh = "homedecor_door_wood_glass.obj", mesh = "homedecor_door_wood_glass.obj",
tiles = { tiles = {
"homedecor_door_wood_glass_oak.png", "homedecor_door_wood_glass_oak.png",
...@@ -156,7 +155,7 @@ local door_model_list = { ...@@ -156,7 +155,7 @@ local door_model_list = {
}, },
{ name = "wood_glass_mahogany", { name = "wood_glass_mahogany",
description = S("Glass and Wood, Mahogany-colored"), description = N_("Glass and Wood, Mahogany-colored (@1 opening)"),
mesh = "homedecor_door_wood_glass.obj", mesh = "homedecor_door_wood_glass.obj",
tiles = { tiles = {
"homedecor_door_wood_glass_mahogany.png", "homedecor_door_wood_glass_mahogany.png",
...@@ -165,7 +164,7 @@ local door_model_list = { ...@@ -165,7 +164,7 @@ local door_model_list = {
}, },
{ name = "wood_glass_white", { name = "wood_glass_white",
description = S("Glass and Wood, White"), description = N_("Glass and Wood, White (@1 opening)"),
mesh = "homedecor_door_wood_glass.obj", mesh = "homedecor_door_wood_glass.obj",
tiles = { tiles = {
"homedecor_door_wood_glass_white.png", "homedecor_door_wood_glass_white.png",
...@@ -174,22 +173,22 @@ local door_model_list = { ...@@ -174,22 +173,22 @@ local door_model_list = {
}, },
{ name = "wood_plain", { name = "wood_plain",
description = S("Plain Wooden Door"), description = N_("Plain Wooden Door (@1 opening)"),
mesh = "homedecor_door_plain.obj" mesh = "homedecor_door_plain.obj"
}, },
{ name = "bedroom", { name = "bedroom",
description = S("White Bedroom Door"), description = N_("White Bedroom Door (@1 opening)"),
mesh = "homedecor_door_plain.obj" mesh = "homedecor_door_plain.obj"
}, },
{ name = "wrought_iron", { name = "wrought_iron",
description = S("Wrought Iron Gate/Door"), description = N_("Wrought Iron Gate/Door (@1 opening)"),
mesh = "homedecor_door_wrought_iron.obj" mesh = "homedecor_door_wrought_iron.obj"
}, },
{ name = "woodglass", { name = "woodglass",
description = S("Wooden door with glass insert"), description = N_("Wooden door with glass insert (@1 opening)"),
mesh = "homedecor_door_woodglass_typea.obj", mesh = "homedecor_door_woodglass_typea.obj",
tiles = { tiles = {
"homedecor_door_woodglass_typea.png", "homedecor_door_woodglass_typea.png",
...@@ -199,7 +198,7 @@ local door_model_list = { ...@@ -199,7 +198,7 @@ local door_model_list = {
}, },
{ name = "woodglass2", { name = "woodglass2",
description = S("Wooden door with glass insert, type 2"), description = N_("Wooden door with glass insert, type 2 (@1 opening)"),
mesh = "homedecor_door_plain.obj", mesh = "homedecor_door_plain.obj",
usealpha = true usealpha = true
}, },
...@@ -210,10 +209,9 @@ local def_selbox = { ...@@ -210,10 +209,9 @@ local def_selbox = {
fixed = { -0.5, -0.5, 0.375, 0.5, 1.5, 0.5 } fixed = { -0.5, -0.5, 0.375, 0.5, 1.5, 0.5 }
} }
local sides = {"left", "right"} local sides = { N_("left"), N_("right") }
for i in ipairs(sides) do for i, side in ipairs(sides) do
local side = sides[i]
for _, door_model in ipairs(door_model_list) do for _, door_model in ipairs(door_model_list) do
...@@ -230,7 +228,7 @@ for i in ipairs(sides) do ...@@ -230,7 +228,7 @@ for i in ipairs(sides) do
end end
minetest.register_node("homedecor:door_"..doorname.."_"..side, { minetest.register_node("homedecor:door_"..doorname.."_"..side, {
description = door_model.description.." "..S("(%s-opening)"):format(side), description = S(door_model.description, S(side)),
drawtype = "mesh", drawtype = "mesh",
mesh = mesh, mesh = mesh,
tiles = door_model.tiles or { "homedecor_door_"..doorname..".png" }, tiles = door_model.tiles or { "homedecor_door_"..doorname..".png" },
...@@ -294,8 +292,14 @@ end ...@@ -294,8 +292,14 @@ end
-- Gates -- Gates
local gates_list = { "picket", "picket_white", "barbed_wire", "chainlink" } local gate_list = {
local gate_names = { "Unpainted Picket", "White Picket", "Barbed Wire", "Chainlink" } { "picket", S("Unpainted Picket Fence Gate") },
{ "picket_white", S("White Picket Fence Gate") },
{ "barbed_wire", S("Barbed Wire Fence Gate") },
{ "chainlink", S("Chainlink Fence Gate") },
{ "half_door", S("\"Half\" Door") },
{ "half_door_white", S("\"Half\" Door (white)") }
}
local gate_models_closed = { local gate_models_closed = {
{{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }}, {{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }},
...@@ -303,17 +307,22 @@ local gate_models_closed = { ...@@ -303,17 +307,22 @@ local gate_models_closed = {
{{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }}, {{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }},
{{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 }, -- left post {{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 }, -- left post
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
{ -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece { -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece
{ -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece { -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece
{ -6/16, -8/16, 7/16, 6/16, 8/16, 7/16 }}, -- the wire { -6/16, -8/16, 7/16, 6/16, 8/16, 7/16 }}, -- the wire
{{ -8/16, -8/16, 6/16, -7/16, 8/16, 8/16 }, -- left post {{ -8/16, -8/16, 6/16, -7/16, 8/16, 8/16 }, -- left post
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
{ -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece { -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece
{ -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece { -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece
{ -8/16, -8/16, 7/16, 8/16, 8/16, 7/16 }, -- the chainlink itself { -8/16, -8/16, 7/16, 8/16, 8/16, 7/16 }, -- the chainlink itself
{ -8/16, -3/16, 6/16, -6/16, 3/16, 8/16 }} -- the lump representing the lock { -8/16, -3/16, 6/16, -6/16, 3/16, 8/16 }}, -- the lump representing the lock
{{ -8/16, -8/16, 6/16, 8/16, 8/16, 8/16 }}, -- the whole door :P
{{ -8/16, -8/16, 6/16, 8/16, 8/16, 8/16 }}, -- the whole door :P
} }
local gate_models_open = { local gate_models_open = {
...@@ -322,22 +331,26 @@ local gate_models_open = { ...@@ -322,22 +331,26 @@ local gate_models_open = {
{{ 0.498, -0.5, -0.5, 0.498, 0.5, 0.5 }}, {{ 0.498, -0.5, -0.5, 0.498, 0.5, 0.5 }},
{{ 6/16, -8/16, -8/16, 8/16, 8/16, -6/16 }, -- left post {{ 6/16, -8/16, -8/16, 8/16, 8/16, -6/16 }, -- left post
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
{ 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece { 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece
{ 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece { 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece
{ 7/16, -8/16, -6/16, 7/16, 8/16, 6/16 }}, -- the wire { 7/16, -8/16, -6/16, 7/16, 8/16, 6/16 }}, -- the wire
{{ 6/16, -8/16, -8/16, 8/16, 8/16, -7/16 }, -- left post {{ 6/16, -8/16, -8/16, 8/16, 8/16, -7/16 }, -- left post
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
{ 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece { 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece
{ 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece { 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece
{ 7/16, -8/16, -8/16, 7/16, 8/16, 8/16 }, -- the chainlink itself { 7/16, -8/16, -8/16, 7/16, 8/16, 8/16 }, -- the chainlink itself
{ 6/16, -3/16, -8/16, 8/16, 3/16, -6/16 }} -- the lump representing the lock { 6/16, -3/16, -8/16, 8/16, 3/16, -6/16 }}, -- the lump representing the lock
{{ 6/16, -8/16, -8/16, 8/16, 8/16, 8/16 }}, -- the whole door :P
{{ 6/16, -8/16, -8/16, 8/16, 8/16, 8/16 }}, -- the whole door :P
} }
for i in ipairs(gates_list) do for i, g in ipairs(gate_list) do
local gate=gates_list[i] local gate, gatedesc = unpack(g)
local tiles = { local tiles = {
"homedecor_gate_"..gate.."_tb.png", "homedecor_gate_"..gate.."_tb.png",
...@@ -372,7 +385,7 @@ for i in ipairs(gates_list) do ...@@ -372,7 +385,7 @@ for i in ipairs(gates_list) do
local def = { local def = {
drawtype = "nodebox", drawtype = "nodebox",
description = S(gate_names[i].." Fence Gate"), description = gatedesc,
tiles = tiles, tiles = tiles,
paramtype = "light", paramtype = "light",
groups = {snappy=3}, groups = {snappy=3},
...@@ -392,7 +405,7 @@ for i in ipairs(gates_list) do ...@@ -392,7 +405,7 @@ for i in ipairs(gates_list) do
end, end,
mesecons = { mesecons = {
effector = { effector = {
action_on = function(pos,node) homedecor.flip_gate(pos,node,player,gate, "closed") end action_on = function(pos,node) homedecor.flip_gate(pos,node,nil,gate, "closed") end
} }
} }
} }
...@@ -407,8 +420,8 @@ for i in ipairs(gates_list) do ...@@ -407,8 +420,8 @@ for i in ipairs(gates_list) do
def.selection_box.fixed = { 0.4, -0.5, -0.5, 0.5, 0.5, 0.5 } def.selection_box.fixed = { 0.4, -0.5, -0.5, 0.5, 0.5, 0.5 }
def.node_box.fixed = gate_models_open[i] def.node_box.fixed = gate_models_open[i]
def.tiles = { def.tiles = {
tiles[1], tiles[1].."^[transformR90",
tiles[2], tiles[2].."^[transformR270",
tiles[6], tiles[6],
tiles[5], tiles[5],
tiles[4], tiles[4],
...@@ -420,7 +433,7 @@ for i in ipairs(gates_list) do ...@@ -420,7 +433,7 @@ for i in ipairs(gates_list) do
return itemstack return itemstack
end end
def.mesecons.effector = { def.mesecons.effector = {
action_off = function(pos,node) homedecor.flip_gate(pos,node,player,gate, "open") end action_off = function(pos,node) homedecor.flip_gate(pos,node,nil,gate, "open") end
} }
minetest.register_node("homedecor:gate_"..gate.."_open", def) minetest.register_node("homedecor:gate_"..gate.."_open", def)
...@@ -448,8 +461,8 @@ function homedecor.flip_door(pos, node, player, name, side, isClosed) ...@@ -448,8 +461,8 @@ function homedecor.flip_door(pos, node, player, name, side, isClosed)
-- and if not isClosed, a closed door -- and if not isClosed, a closed door
isClosed = not isClosed isClosed = not isClosed
local rside = nil local rside
local nfdir = nil local nfdir
local ofdir = node.param2 or 0 local ofdir = node.param2 or 0
if side == "left" then if side == "left" then
rside = "right" rside = "right"
...@@ -485,7 +498,7 @@ function homedecor.flip_gate(pos, node, player, gate, oc) ...@@ -485,7 +498,7 @@ function homedecor.flip_gate(pos, node, player, gate, oc)
-- since right facing gates use "open" nodes for closed, we need an -- since right facing gates use "open" nodes for closed, we need an
-- isClosed flag to tell if it's "really" closed. -- isClosed flag to tell if it's "really" closed.
local gateresult = nil local gateresult
if oc == "closed" then if oc == "closed" then
gateresult = "homedecor:gate_"..gate.."_open" gateresult = "homedecor:gate_"..gate.."_open"
else else
...@@ -521,11 +534,11 @@ local jp_cbox = { ...@@ -521,11 +534,11 @@ local jp_cbox = {
} }
minetest.register_node("homedecor:japanese_wall_top", { minetest.register_node("homedecor:japanese_wall_top", {
description = "Japanese wall (top)", description = S("Japanese wall (top)"),
drawtype = "mesh", drawtype = "mesh",
mesh = "homedecor_wall_japanese_top.obj", mesh = "homedecor_wall_japanese_top.obj",
tiles = { tiles = {
"homedecor_generic_wood_luxury.png", homedecor.lux_wood,
"homedecor_japanese_paper.png" "homedecor_japanese_paper.png"
}, },
paramtype = "light", paramtype = "light",
...@@ -537,11 +550,11 @@ minetest.register_node("homedecor:japanese_wall_top", { ...@@ -537,11 +550,11 @@ minetest.register_node("homedecor:japanese_wall_top", {
}) })
minetest.register_node("homedecor:japanese_wall_middle", { minetest.register_node("homedecor:japanese_wall_middle", {
description = "Japanese wall", description = S("Japanese wall"),
drawtype = "mesh", drawtype = "mesh",
mesh = "homedecor_wall_japanese_middle.obj", mesh = "homedecor_wall_japanese_middle.obj",
tiles = { tiles = {
"homedecor_generic_wood_luxury.png", homedecor.lux_wood,
"homedecor_japanese_paper.png" "homedecor_japanese_paper.png"
}, },
paramtype = "light", paramtype = "light",
...@@ -553,11 +566,11 @@ minetest.register_node("homedecor:japanese_wall_middle", { ...@@ -553,11 +566,11 @@ minetest.register_node("homedecor:japanese_wall_middle", {
}) })
minetest.register_node("homedecor:japanese_wall_bottom", { minetest.register_node("homedecor:japanese_wall_bottom", {
description = "Japanese wall (bottom)", description = S("Japanese wall (bottom)"),
drawtype = "mesh", drawtype = "mesh",
mesh = "homedecor_wall_japanese_bottom.obj", mesh = "homedecor_wall_japanese_bottom.obj",
tiles = { tiles = {
"homedecor_generic_wood_luxury.png", homedecor.lux_wood,
"homedecor_japanese_paper.png" "homedecor_japanese_paper.png"
}, },
paramtype = "light", paramtype = "light",
...@@ -577,7 +590,7 @@ minetest.register_node("homedecor:tatami_mat", { ...@@ -577,7 +590,7 @@ minetest.register_node("homedecor:tatami_mat", {
"homedecor_tatami.png", "homedecor_tatami.png",
"homedecor_tatami.png" "homedecor_tatami.png"
}, },
description = "Japanese tatami", description = S("Japanese tatami"),
drawtype = "nodebox", drawtype = "nodebox",
paramtype = "light", paramtype = "light",
groups = {snappy=3}, groups = {snappy=3},
...@@ -590,10 +603,10 @@ minetest.register_node("homedecor:tatami_mat", { ...@@ -590,10 +603,10 @@ minetest.register_node("homedecor:tatami_mat", {
}) })
homedecor.register("door_japanese_closed", { homedecor.register("door_japanese_closed", {
description = "Japanese-style door", description = S("Japanese-style door"),
inventory_image = "homedecor_door_japanese_inv.png", inventory_image = "homedecor_door_japanese_inv.png",
tiles = { tiles = {
"homedecor_generic_wood_luxury.png", homedecor.lux_wood,
"homedecor_japanese_paper.png" "homedecor_japanese_paper.png"
}, },
mesh = "homedecor_door_japanese_closed.obj", mesh = "homedecor_door_japanese_closed.obj",
...@@ -616,7 +629,7 @@ homedecor.register("door_japanese_closed", { ...@@ -616,7 +629,7 @@ homedecor.register("door_japanese_closed", {
homedecor.register("door_japanese_open", { homedecor.register("door_japanese_open", {
tiles = { tiles = {
"homedecor_generic_wood_luxury.png", homedecor.lux_wood,
"homedecor_japanese_paper.png" "homedecor_japanese_paper.png"
}, },
mesh = "homedecor_door_japanese_open.obj", mesh = "homedecor_door_japanese_open.obj",
......
local S = homedecor_i18n.gettext
homedecor.register("power_outlet", { homedecor.register("power_outlet", {
description = "Power Outlet", description = S("Power Outlet"),
tiles = { tiles = {
"homedecor_outlet_edges.png", "homedecor_outlet_edges.png",
"homedecor_outlet_edges.png", "homedecor_outlet_edges.png",
...@@ -26,7 +29,7 @@ homedecor.register("power_outlet", { ...@@ -26,7 +29,7 @@ homedecor.register("power_outlet", {
}) })
homedecor.register("light_switch", { homedecor.register("light_switch", {
description = "Light switch", description = S("Light switch"),
tiles = { tiles = {
"homedecor_light_switch_edges.png", "homedecor_light_switch_edges.png",
"homedecor_light_switch_edges.png", "homedecor_light_switch_edges.png",
...@@ -58,7 +61,7 @@ homedecor.register("light_switch", { ...@@ -58,7 +61,7 @@ homedecor.register("light_switch", {
homedecor.register("doorbell", { homedecor.register("doorbell", {
tiles = { "homedecor_doorbell.png" }, tiles = { "homedecor_doorbell.png" },
inventory_image = "homedecor_doorbell_inv.png", inventory_image = "homedecor_doorbell_inv.png",
description = "Doorbell", description = S("Doorbell"),
groups = {snappy=3}, groups = {snappy=3},
walkable = false, walkable = false,
node_box = { node_box = {
...@@ -68,7 +71,7 @@ homedecor.register("doorbell", { ...@@ -68,7 +71,7 @@ homedecor.register("doorbell", {
{-0.03125, 0.0625, 0.45, 0.03125, 0.125, 0.4675}, -- NodeBox2 {-0.03125, 0.0625, 0.45, 0.03125, 0.125, 0.4675}, -- NodeBox2
} }
}, },
on_punch = function(pos, node, puncher, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
minetest.sound_play("homedecor_doorbell", { minetest.sound_play("homedecor_doorbell", {
pos = pos, pos = pos,
gain = 1.0, gain = 1.0,
......
-- Various home electronics -- Various home electronics
local S = homedecor.gettext local S = homedecor_i18n.gettext
homedecor.register("speaker", { homedecor.register("speaker", {
description = S("Large Stereo Speaker"), description = S("Large Stereo Speaker"),
...@@ -11,7 +11,7 @@ homedecor.register("speaker", { ...@@ -11,7 +11,7 @@ homedecor.register("speaker", {
}, },
groups = { snappy = 3 }, groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
on_punch = function(pos, node, puncher, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
minetest.set_node(pos, {name = "homedecor:speaker_open", param2 = node.param2}) minetest.set_node(pos, {name = "homedecor:speaker_open", param2 = node.param2})
end end
}) })
...@@ -23,11 +23,11 @@ homedecor.register("speaker_open", { ...@@ -23,11 +23,11 @@ homedecor.register("speaker_open", {
"homedecor_speaker_sides.png", "homedecor_speaker_sides.png",
"homedecor_speaker_driver.png", "homedecor_speaker_driver.png",
"homedecor_speaker_open_front.png", "homedecor_speaker_open_front.png",
"homedecor_generic_metal_black.png" { name = "homedecor_generic_metal.png", color = homedecor.color_black }
}, },
groups = { snappy = 3, not_in_creative_inventory=1 }, groups = { snappy = 3, not_in_creative_inventory=1 },
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
on_punch = function(pos, node, puncher, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
minetest.set_node(pos, {name = "homedecor:speaker", param2 = node.param2}) minetest.set_node(pos, {name = "homedecor:speaker", param2 = node.param2})
end end
}) })
...@@ -135,7 +135,7 @@ homedecor.register("telephone", { ...@@ -135,7 +135,7 @@ homedecor.register("telephone", {
"homedecor_telephone_cord.png", "homedecor_telephone_cord.png",
}, },
inventory_image = "homedecor_telephone_inv.png", inventory_image = "homedecor_telephone_inv.png",
description = "Telephone", description = S("Telephone"),
groups = {snappy=3}, groups = {snappy=3},
selection_box = tel_cbox, selection_box = tel_cbox,
walkable = false, walkable = false,
...@@ -149,9 +149,9 @@ minetest.register_abm({ ...@@ -149,9 +149,9 @@ minetest.register_abm({
chance = 15, chance = 15,
action = function(pos, node) action = function(pos, node)
minetest.sound_play("homedecor_telephone_ringing", { minetest.sound_play("homedecor_telephone_ringing", {
pos = pos, pos = pos,
gain = 1.0, gain = 1.0,
max_hear_distance = 5 max_hear_distance = 5
}) })
end end
}) })
local S = homedecor.gettext
local S = homedecor_i18n.gettext
local function N_(x) return x end
local bbq_cbox = { local bbq_cbox = {
type = "fixed", type = "fixed",
...@@ -6,11 +9,11 @@ local bbq_cbox = { ...@@ -6,11 +9,11 @@ local bbq_cbox = {
} }
homedecor.register("barbecue", { homedecor.register("barbecue", {
description = "Barbecue", description = S("Barbecue"),
mesh = "homedecor_barbecue.obj", mesh = "homedecor_barbecue.obj",
tiles = { tiles = {
"homedecor_generic_metal_black.png", { name = "homedecor_generic_metal.png" , color = homedecor.color_black },
{ name="homedecor_embers.png", { name = "homedecor_embers.png",
animation={ animation={
type="vertical_frames", type="vertical_frames",
aspect_w=16, aspect_w=16,
...@@ -50,7 +53,7 @@ homedecor.register("bench_large_1", { ...@@ -50,7 +53,7 @@ homedecor.register("bench_large_1", {
"homedecor_generic_wood_old.png", "homedecor_generic_wood_old.png",
"homedecor_generic_metal_wrought_iron.png" "homedecor_generic_metal_wrought_iron.png"
}, },
description = "Garden Bench (style 1)", description = S("Garden Bench (style 1)"),
inventory_image = "homedecor_bench_large_1_inv.png", inventory_image = "homedecor_bench_large_1_inv.png",
groups = { snappy = 3 }, groups = { snappy = 3 },
expand = { right="placeholder" }, expand = { right="placeholder" },
...@@ -77,7 +80,7 @@ local bl2_cbox = { ...@@ -77,7 +80,7 @@ local bl2_cbox = {
} }
homedecor.register("bench_large_2", { homedecor.register("bench_large_2", {
description = "Garden Bench (style 2)", description = S("Garden Bench (style 2)"),
mesh = "homedecor_bench_large_2.obj", mesh = "homedecor_bench_large_2.obj",
tiles = { "homedecor_generic_wood_old.png" }, tiles = { "homedecor_generic_wood_old.png" },
inventory_image = "homedecor_bench_large_2_inv.png", inventory_image = "homedecor_bench_large_2_inv.png",
...@@ -100,7 +103,7 @@ local dc_cbox = { ...@@ -100,7 +103,7 @@ local dc_cbox = {
homedecor.register("deckchair", { homedecor.register("deckchair", {
mesh = "homedecor_deckchair.obj", mesh = "homedecor_deckchair.obj",
tiles = {"homedecor_deckchair.png"}, tiles = {"homedecor_deckchair.png"},
description = "Deck Chair", description = S("Deck Chair"),
groups = { snappy = 3 }, groups = { snappy = 3 },
expand = { forward="placeholder" }, expand = { forward="placeholder" },
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
...@@ -115,7 +118,7 @@ minetest.register_alias("homedecor:deckchair_head", "air") ...@@ -115,7 +118,7 @@ minetest.register_alias("homedecor:deckchair_head", "air")
homedecor.register("deckchair_striped_blue", { homedecor.register("deckchair_striped_blue", {
mesh = "homedecor_deckchair.obj", mesh = "homedecor_deckchair.obj",
tiles = {"homedecor_deckchair_striped_blue.png"}, tiles = {"homedecor_deckchair_striped_blue.png"},
description = "Deck Chair", description = S("Deck Chair"),
groups = { snappy = 3 }, groups = { snappy = 3 },
expand = { forward="placeholder" }, expand = { forward="placeholder" },
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
...@@ -131,7 +134,7 @@ homedecor.register("doghouse", { ...@@ -131,7 +134,7 @@ homedecor.register("doghouse", {
"default_wood.png", "default_wood.png",
"building_blocks_towel.png" "building_blocks_towel.png"
}, },
description = "Doghouse", description = S("Doghouse"),
inventory_image = "homedecor_doghouse_inv.png", inventory_image = "homedecor_doghouse_inv.png",
selection_box = homedecor.nodebox.slab_y(1.5), selection_box = homedecor.nodebox.slab_y(1.5),
collision_box = homedecor.nodebox.slab_y(1.5), collision_box = homedecor.nodebox.slab_y(1.5),
...@@ -146,7 +149,7 @@ minetest.register_alias("homedecor:doghouse_base", "homedecor:doghouse") ...@@ -146,7 +149,7 @@ minetest.register_alias("homedecor:doghouse_base", "homedecor:doghouse")
homedecor.register("simple_bench", { homedecor.register("simple_bench", {
tiles = { "homedecor_generic_wood_old.png" }, tiles = { "homedecor_generic_wood_old.png" },
description = "Simple Bench", description = S("Simple Bench"),
groups = {snappy=3}, groups = {snappy=3},
node_box = { node_box = {
type = "fixed", type = "fixed",
...@@ -160,7 +163,7 @@ homedecor.register("simple_bench", { ...@@ -160,7 +163,7 @@ homedecor.register("simple_bench", {
}) })
homedecor.register("stonepath", { homedecor.register("stonepath", {
description = "Garden stone path", description = S("Garden stone path"),
tiles = { tiles = {
"default_stone.png" "default_stone.png"
}, },
...@@ -187,17 +190,20 @@ homedecor.register("stonepath", { ...@@ -187,17 +190,20 @@ homedecor.register("stonepath", {
}) })
local lattice_colors = { local lattice_colors = {
{"wood", ".png^[colorize:#704214:180"}, { "wood", S("wood"), ".png^[colorize:#704214:180" },
{"white_wood", ".png"}, { "white_wood", S("white wood"), ".png" },
{"wood_vegetal", ".png^[colorize:#704214:180^homedecor_lattice_vegetal.png"}, { "wood_vegetal", S("wood, with vegetation"),
{"white_wood_vegetal", ".png^homedecor_lattice_vegetal.png"}, ".png^[colorize:#704214:180^homedecor_lattice_vegetal.png" },
{ "white_wood_vegetal", S("white wood, with vegetation"),
".png^homedecor_lattice_vegetal.png" },
} }
for _, m in ipairs(lattice_colors) do for _, c in ipairs(lattice_colors) do
homedecor.register("lattice_"..m[1], { local name, desc, texture = unpack(c)
description = "Garden Lattice ("..m[1]..")", homedecor.register("lattice_"..name, {
tiles = {"homedecor_lattice"..m[2]}, description = S("Garden Lattice (@1)", desc),
inventory_image = "homedecor_lattice"..m[2], tiles = {"homedecor_lattice"..texture},
inventory_image = "homedecor_lattice"..texture,
groups = { snappy=3 }, groups = { snappy=3 },
node_box = { node_box = {
type = "fixed", type = "fixed",
...@@ -218,7 +224,7 @@ homedecor.register("lattice_"..m[1], { ...@@ -218,7 +224,7 @@ homedecor.register("lattice_"..m[1], {
end end
homedecor.register("swing", { homedecor.register("swing", {
description = "Tree's swing", description = S("Tree's swing"),
tiles = { tiles = {
"homedecor_swing_top.png", "homedecor_swing_top.png",
"homedecor_swing_top.png^[transformR180", "homedecor_swing_top.png^[transformR180",
...@@ -268,8 +274,6 @@ homedecor.register("swing", { ...@@ -268,8 +274,6 @@ homedecor.register("swing", {
local fdir = minetest.dir_to_facedir(placer:get_look_dir()) local fdir = minetest.dir_to_facedir(placer:get_look_dir())
for j = 0, height do -- then fill that space with ropes... for j = 0, height do -- then fill that space with ropes...
local testpos = { x=pos.x, y=pos.y-j, z=pos.z } local testpos = { x=pos.x, y=pos.y-j, z=pos.z }
local testnode = minetest.get_node(testpos)
local testreg = core.registered_nodes[testnode.name]
minetest.set_node(testpos, { name = "homedecor:swing_rope", param2 = fdir }) minetest.set_node(testpos, { name = "homedecor:swing_rope", param2 = fdir })
end end
...@@ -315,14 +319,14 @@ homedecor.register("well", { ...@@ -315,14 +319,14 @@ homedecor.register("well", {
mesh = "homedecor_well.obj", mesh = "homedecor_well.obj",
tiles = { tiles = {
"homedecor_rope_texture.png", "homedecor_rope_texture.png",
"homedecor_generic_metal_black.png^[brighten", { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"default_water.png", "default_water.png",
"default_cobble.png", "default_cobble.png",
"default_wood.png", "default_wood.png",
"homedecor_shingles_wood.png" "homedecor_shingles_wood.png"
}, },
inventory_image = "homedecor_well_inv.png", inventory_image = "homedecor_well_inv.png",
description = "Water well", description = S("Water well"),
groups = { snappy = 3 }, groups = { snappy = 3 },
selection_box = homedecor.nodebox.slab_y(2), selection_box = homedecor.nodebox.slab_y(2),
collision_box = homedecor.nodebox.slab_y(2), collision_box = homedecor.nodebox.slab_y(2),
...@@ -354,16 +358,16 @@ if minetest.get_modpath("bucket") then ...@@ -354,16 +358,16 @@ if minetest.get_modpath("bucket") then
end end
homedecor.shrub_colors = { homedecor.shrub_colors = {
"green", N_("green"),
"red", N_("red"),
"yellow" N_("yellow"),
} }
local shrub_cbox = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 } local shrub_cbox = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
for _, color in ipairs(homedecor.shrub_colors) do for _, color in ipairs(homedecor.shrub_colors) do
minetest.register_node("homedecor:shrubbery_large_"..color, { minetest.register_node("homedecor:shrubbery_large_"..color, {
description = S("Shrubbery ("..color..")"), description = S("Shrubbery (@1)", S(color)),
drawtype = "mesh", drawtype = "mesh",
mesh = "homedecor_cube.obj", mesh = "homedecor_cube.obj",
tiles = {"homedecor_shrubbery_"..color..".png"}, tiles = {"homedecor_shrubbery_"..color..".png"},
...@@ -374,7 +378,7 @@ for _, color in ipairs(homedecor.shrub_colors) do ...@@ -374,7 +378,7 @@ for _, color in ipairs(homedecor.shrub_colors) do
}) })
minetest.register_node("homedecor:shrubbery_"..color, { minetest.register_node("homedecor:shrubbery_"..color, {
description = S("Shrubbery ("..color..")"), description = S("Shrubbery (@1)", S(color)),
drawtype = "mesh", drawtype = "mesh",
mesh = "homedecor_shrubbery.obj", mesh = "homedecor_shrubbery.obj",
tiles = { tiles = {
......
...@@ -14,16 +14,22 @@ if signs_modpath then ...@@ -14,16 +14,22 @@ if signs_modpath then
sign_post_model = signs_lib.sign_post_model.nodebox sign_post_model = signs_lib.sign_post_model.nodebox
end end
local S = homedecor.gettext local S = homedecor_i18n.gettext
local materials = {"brass", "wrought_iron"}
local materials = {
{ S("brass"), "brass" },
{ S("wrought iron"), "wrought_iron" },
}
for _, m in ipairs(materials) do for _, m in ipairs(materials) do
homedecor.register("fence_"..m, { local desc, name = unpack(m)
description = S("Fence/railing ("..m..")"),
homedecor.register("fence_"..name, {
description = S("Fence/railing (@1)", desc),
drawtype = "fencelike", drawtype = "fencelike",
tiles = {"homedecor_generic_metal_"..m..".png"}, tiles = {"homedecor_generic_metal_"..name..".png"},
inventory_image = "homedecor_fence_"..m..".png", inventory_image = "homedecor_fence_"..name..".png",
selection_box = homedecor.nodebox.bar_y(1/7), selection_box = homedecor.nodebox.bar_y(1/7),
groups = {snappy=3}, groups = {snappy=3},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
...@@ -31,17 +37,17 @@ homedecor.register("fence_"..m, { ...@@ -31,17 +37,17 @@ homedecor.register("fence_"..m, {
-- brass/wrought iron with signs: -- brass/wrought iron with signs:
homedecor.register("fence_"..m.."_with_sign", { homedecor.register("fence_"..name.."_with_sign", {
description = S("Fence/railing with sign ("..m..")"), description = S("Fence/railing with sign (@1)", desc),
tiles = { tiles = {
"homedecor_sign_"..m.."_post_top.png", "homedecor_sign_"..name.."_post_top.png",
"homedecor_sign_"..m.."_post_bottom.png", "homedecor_sign_"..name.."_post_bottom.png",
"homedecor_sign_"..m.."_post_side.png", "homedecor_sign_"..name.."_post_side.png",
"homedecor_sign_"..m.."_post_side.png", "homedecor_sign_"..name.."_post_side.png",
"homedecor_sign_"..m.."_post_back.png", "homedecor_sign_"..name.."_post_back.png",
"homedecor_sign_"..m.."_post_front.png", "homedecor_sign_"..name.."_post_front.png",
}, },
wield_image = "homedecor_sign_"..m.."_post.png", wield_image = "homedecor_sign_"..name.."_post.png",
node_box = sign_post_model, node_box = sign_post_model,
groups = {snappy=3,not_in_creative_inventory=1}, groups = {snappy=3,not_in_creative_inventory=1},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
...@@ -50,7 +56,7 @@ homedecor.register("fence_"..m.."_with_sign", { ...@@ -50,7 +56,7 @@ homedecor.register("fence_"..m.."_with_sign", {
max_items = 2, max_items = 2,
items = { items = {
{ items = { "default:sign_wall" }}, { items = { "default:sign_wall" }},
{ items = { "homedecor:fence_"..m }}, { items = { "homedecor:fence_"..name }},
}, },
}, },
}) })
...@@ -301,4 +307,3 @@ if signs_modpath then ...@@ -301,4 +307,3 @@ if signs_modpath then
signs_lib.register_fence_with_sign("homedecor:fence_brass", "homedecor:fence_brass_with_sign") signs_lib.register_fence_with_sign("homedecor:fence_brass", "homedecor:fence_brass_with_sign")
signs_lib.register_fence_with_sign("homedecor:fence_wrought_iron", "homedecor:fence_wrought_iron_with_sign") signs_lib.register_fence_with_sign("homedecor:fence_wrought_iron", "homedecor:fence_wrought_iron_with_sign")
end end
local S = homedecor.gettext
local S = homedecor_i18n.gettext
homedecor.register("coatrack_wallmount", { homedecor.register("coatrack_wallmount", {
tiles = { homedecor.plain_wood }, tiles = { homedecor.plain_wood },
inventory_image = "homedecor_coatrack_wallmount_inv.png", inventory_image = "homedecor_coatrack_wallmount_inv.png",
description = "Coatrack (wallmounted)", description = S("Wall-mounted coat rack"),
groups = {snappy=3}, groups = {snappy=3},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
node_box = { node_box = {
...@@ -29,7 +30,7 @@ homedecor.register("coat_tree", { ...@@ -29,7 +30,7 @@ homedecor.register("coat_tree", {
"homedecor_generic_wood_old.png" "homedecor_generic_wood_old.png"
}, },
inventory_image = "homedecor_coatrack_inv.png", inventory_image = "homedecor_coatrack_inv.png",
description = "Coat tree", description = S("Coat tree"),
groups = {snappy=3}, groups = {snappy=3},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
expand = { top="placeholder" }, expand = { top="placeholder" },
...@@ -41,9 +42,16 @@ homedecor.register("coat_tree", { ...@@ -41,9 +42,16 @@ homedecor.register("coat_tree", {
on_rotate = screwdriver.rotate_simple on_rotate = screwdriver.rotate_simple
}) })
for _, color in pairs({ "green", "brown", "grey" }) do local mat_colors = {
{ "green", S("Green welcome mat") },
{ "brown", S("Brown welcome mat") },
{ "grey", S("Grey welcome mat") },
}
for _, mat in ipairs(mat_colors) do
local color, desc = unpack(mat)
homedecor.register("welcome_mat_"..color, { homedecor.register("welcome_mat_"..color, {
description = "Welcome Mat ("..color..")", description = desc,
tiles = { tiles = {
"homedecor_welcome_mat_"..color..".png", "homedecor_welcome_mat_"..color..".png",
"homedecor_welcome_mat_bottom.png", "homedecor_welcome_mat_bottom.png",
......
local S = homedecor.gettext
local S = homedecor_i18n.gettext
local table_colors = { local table_colors = {
{ "", homedecor.plain_wood }, { "", S("Table"), homedecor.plain_wood },
{ "_mahogany", homedecor.mahogany_wood }, { "_mahogany", S("Mahogany Table"), homedecor.mahogany_wood },
{ "_white", homedecor.white_wood } { "_white", S("White Table"), homedecor.white_wood }
} }
for i in ipairs(table_colors) do for _, t in ipairs(table_colors) do
local desc = S("Table ("..i..")") local suffix, desc, texture = unpack(t)
if i == 1 then
desc = S("Table")
end
homedecor.register("table"..table_colors[i][1], { homedecor.register("table"..suffix, {
description = desc, description = desc,
tiles = { table_colors[i][2] }, tiles = { texture },
node_box = { node_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
...@@ -35,16 +32,6 @@ for i in ipairs(table_colors) do ...@@ -35,16 +32,6 @@ for i in ipairs(table_colors) do
}) })
end end
local chaircolors = {
{ "", "plain" },
{ "black", "Black" },
{ "red", "Red" },
{ "pink", "Pink" },
{ "violet", "Violet" },
{ "blue", "Blue" },
{ "dark_green", "Dark Green" },
}
local kc_cbox = { local kc_cbox = {
type = "fixed", type = "fixed",
fixed = { -0.3125, -0.5, -0.3125, 0.3125, 0.5, 0.3125 }, fixed = { -0.3125, -0.5, -0.3125, 0.3125, 0.5, 0.3125 },
...@@ -52,78 +39,82 @@ local kc_cbox = { ...@@ -52,78 +39,82 @@ local kc_cbox = {
local ac_cbox = { local ac_cbox = {
type = "fixed", type = "fixed",
fixed = { fixed = {
{-0.5, -0.5, -0.5, 0.5, 0, 0.5 }, {-0.5, -0.5, -0.5, 0.5, 0, 0.5 },
{-0.5, -0.5, 0.4, 0.5, 0.5, 0.5 } {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
} }
} }
for i in ipairs(chaircolors) do homedecor.register("kitchen_chair_wood", {
description = S("Kitchen chair"),
local color = "_"..chaircolors[i][1] mesh = "homedecor_kitchen_chair.obj",
local color2 = chaircolors[i][1] tiles = {
local name = S(chaircolors[i][2])
local chairtiles = {
homedecor.plain_wood, homedecor.plain_wood,
"wool"..color..".png", homedecor.plain_wood
} },
inventory_image = "homedecor_chair_wood_inv.png",
if chaircolors[i][1] == "" then paramtype2 = "wallmounted",
color = "" selection_box = kc_cbox,
chairtiles = { collision_box = kc_cbox,
homedecor.plain_wood, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
homedecor.plain_wood sounds = default.node_sound_wood_defaults(),
} after_place_node = unifieddyes.fix_rotation_nsew,
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y+0 -- where do I put my ass ?
homedecor.sit(pos, node, clicker)
return itemstack
end end
})
homedecor.register("chair"..color, { homedecor.register("kitchen_chair_padded", {
description = S("Kitchen chair (%s)"):format(name), description = S("Kitchen chair"),
mesh = "homedecor_kitchen_chair.obj", mesh = "homedecor_kitchen_chair.obj",
tiles = chairtiles, tiles = {
selection_box = kc_cbox, homedecor.plain_wood,
collision_box = ac_cbox, "wool_white.png",
--node_box = homedecor.pixelbox(16, { },
-- {3, 0, 11, 2, 16, 2}, {11, 0, 11, 2, 16, 2}, inventory_image = "homedecor_chair_padded_inv.png",
-- {5, 9, 11.5, 6, 6, 1}, {3, 0, 3, 2, 6, 2}, paramtype2 = "colorwallmounted",
-- {11, 0, 3, 2, 6, 2}, {3, 6, 3, 10, 2, 8} palette = "unifieddyes_palette_colorwallmounted.png",
--}), selection_box = kc_cbox,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, collision_box = kc_cbox,
sounds = default.node_sound_wood_defaults(), groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, ud_param2_colorable = 1},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) sounds = default.node_sound_wood_defaults(),
pos.y = pos.y+0 -- where do I put my ass ? after_place_node = function(pos, placer, itemstack, pointed_thing)
homedecor.sit(pos, node, clicker) unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
return itemstack unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end end,
}) after_dig_node = unifieddyes.after_dig_node,
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
if color ~= "" then on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
homedecor.register("armchair"..color, { pos.y = pos.y+0 -- where do I put my ass ?
description = S("Armchair (%s)"):format(name), homedecor.sit(pos, node, clicker)
mesh = "forniture_armchair.obj", return itemstack
tiles = {
"wool"..color..".png",
"wool_dark_grey.png",
"default_wood.png"
},
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
node_box = ac_cbox,
on_rightclick = function(pos, node, clicker)
pos.y = pos.y+0
homedecor.sit(pos, node, clicker)
end
})
minetest.register_craft({
output = "homedecor:armchair"..color.." 2",
recipe = {
{ "wool:"..color2,""},
{ "group:wood","group:wood" },
{ "wool:"..color2,"wool:"..color2 },
},
})
end end
end })
homedecor.register("armchair", {
description = S("Armchair"),
mesh = "forniture_armchair.obj",
tiles = {
"wool_white.png",
{ name = "wool_dark_grey.png", color = 0xffffffff },
{ name = "default_wood.png", color = 0xffffffff }
},
inventory_image = "homedecor_armchair_inv.png",
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
groups = {snappy=3, ud_param2_colorable = 1},
sounds = default.node_sound_wood_defaults(),
node_box = ac_cbox,
after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
after_dig_node = unifieddyes.after_dig_node,
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
})
local ob_cbox = { local ob_cbox = {
type = "fixed", type = "fixed",
...@@ -131,7 +122,7 @@ local ob_cbox = { ...@@ -131,7 +122,7 @@ local ob_cbox = {
} }
minetest.register_node(":homedecor:openframe_bookshelf", { minetest.register_node(":homedecor:openframe_bookshelf", {
description = "Bookshelf (open-frame)", description = S("Bookshelf (open-frame)"),
drawtype = "mesh", drawtype = "mesh",
mesh = "homedecor_openframe_bookshelf.obj", mesh = "homedecor_openframe_bookshelf.obj",
tiles = { tiles = {
...@@ -147,7 +138,7 @@ minetest.register_node(":homedecor:openframe_bookshelf", { ...@@ -147,7 +138,7 @@ minetest.register_node(":homedecor:openframe_bookshelf", {
}) })
homedecor.register("wall_shelf", { homedecor.register("wall_shelf", {
description = "Wall Shelf", description = S("Wall Shelf"),
tiles = { tiles = {
"homedecor_wood_table_large_edges.png", "homedecor_wood_table_large_edges.png",
}, },
...@@ -172,3 +163,90 @@ minetest.register_alias("homedecor:armchair", "homedecor:armchair_black") ...@@ -172,3 +163,90 @@ minetest.register_alias("homedecor:armchair", "homedecor:armchair_black")
minetest.register_alias('table', 'homedecor:table') minetest.register_alias('table', 'homedecor:table')
minetest.register_alias('chair', 'homedecor:chair') minetest.register_alias('chair', 'homedecor:chair')
minetest.register_alias('armchair', 'homedecor:armchair') minetest.register_alias('armchair', 'homedecor:armchair')
-- conversion to param2 colorization
homedecor.old_static_chairs = {}
local chair_colors = {
"black",
"brown",
"blue",
"cyan",
"dark_grey",
"dark_green",
"green",
"grey",
"magenta",
"orange",
"pink",
"red",
"violet",
"white",
"yellow",
}
for _, color in ipairs(chair_colors) do
table.insert(homedecor.old_static_chairs, "homedecor:chair_"..color)
table.insert(homedecor.old_static_chairs, "homedecor:armchair_"..color)
end
table.insert(homedecor.old_static_chairs, "homedecor:chair")
minetest.register_lbm({
name = "homedecor:convert_chairs",
label = "Convert homedecor chairs to use param2 color",
run_at_every_load = false,
nodenames = homedecor.old_static_chairs,
action = function(pos, node)
local name = node.name
local paletteidx = 0
local color
local a,b = string.find(name, "_")
if a then
color = string.sub(name, a+1)
if color == "blue" then
color = "medium_blue"
elseif color == "violet" then
color = "medium_violet"
elseif color == "red" then
color = "medium_red"
elseif color == "black" then
color = "dark_grey"
end
paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
end
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
local newname = "homedecor:armchair"
print(name, dump(a), dump(b), dump(color).."("..dump(paletteidx)..")", dump(param2))
if node.name == "homedecor:chair" then
newname = "homedecor:kitchen_chair_wood"
elseif string.find(node.name, "homedecor:chair_") then
newname = "homedecor:kitchen_chair_padded"
end
minetest.set_node(pos, { name = newname, param2 = param2 })
local meta = minetest.get_meta(pos)
if color then
meta:set_string("dye", "unifieddyes:"..color)
end
end
})
local S = homedecor.gettext local S = homedecor_i18n.gettext
homedecor.register("bars", { homedecor.register("bars", {
description = S("Bars"), description = S("Bars"),
tiles = { "homedecor_generic_metal_black.png^[transformR270" }, tiles = { { name = "homedecor_generic_metal.png^[transformR270", color = homedecor.color_black } },
node_box = { node_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
...@@ -25,7 +25,7 @@ homedecor.register("bars", { ...@@ -25,7 +25,7 @@ homedecor.register("bars", {
--L Binding Bars --L Binding Bars
homedecor.register("L_binding_bars", { homedecor.register("L_binding_bars", {
description = S("Binding Bars"), description = S("Binding Bars"),
tiles = { "homedecor_generic_metal_black.png^[transformR270" }, tiles = { { name = "homedecor_generic_metal.png^[transformR270", color = homedecor.color_black } },
node_box = { node_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
...@@ -50,7 +50,7 @@ local chain_cbox = { ...@@ -50,7 +50,7 @@ local chain_cbox = {
homedecor.register("chains", { homedecor.register("chains", {
description = S("Chains"), description = S("Chains"),
mesh = "forniture_chains.obj", mesh = "forniture_chains.obj",
tiles = { "homedecor_generic_metal_black.png" }, tiles = { { name = "homedecor_generic_metal.png", color = homedecor.color_black } },
inventory_image="forniture_chains_inv.png", inventory_image="forniture_chains_inv.png",
selection_box = chain_cbox, selection_box = chain_cbox,
walkable = false, walkable = false,
...@@ -71,8 +71,8 @@ homedecor.register("torch_wall", { ...@@ -71,8 +71,8 @@ homedecor.register("torch_wall", {
length=1.0, length=1.0,
}, },
}, },
"homedecor_generic_metal_black.png", { name = "homedecor_generic_metal.png", color = homedecor.color_black },
"homedecor_generic_metal_black.png^[brighten", { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"forniture_coal.png", "forniture_coal.png",
}, },
inventory_image="forniture_torch_inv.png", inventory_image="forniture_torch_inv.png",
...@@ -93,8 +93,12 @@ local wl_cbox = { ...@@ -93,8 +93,12 @@ local wl_cbox = {
homedecor.register("wall_lamp", { homedecor.register("wall_lamp", {
description = S("Wall Lamp"), description = S("Wall Lamp"),
mesh = "homedecor_wall_lamp.obj", mesh = "homedecor_wall_lamp.obj",
tiles = {"homedecor_generic_metal_black.png^[brighten", "homedecor_generic_wood_luxury.png^[colorize:#000000:30", tiles = {
"homedecor_light.png", "homedecor_generic_metal_wrought_iron.png"}, { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
homedecor.lux_wood,
"homedecor_light.png",
"homedecor_generic_metal_wrought_iron.png"
},
use_texture_alpha = true, use_texture_alpha = true,
inventory_image = "homedecor_wall_lamp_inv.png", inventory_image = "homedecor_wall_lamp_inv.png",
groups = {snappy=3}, groups = {snappy=3},
......
minetest.register_craft({ minetest.register_craft({
output = "homedecor:table", "homedecor:chair 2", output = "homedecor:table",
recipe = { recipe = {
{ "group:wood","group:wood", "group:wood" }, { "group:wood","group:wood", "group:wood" },
{ "group:stick", "", "group:stick" }, { "group:stick", "", "group:stick" },
...@@ -53,7 +53,7 @@ minetest.register_craft({ ...@@ -53,7 +53,7 @@ minetest.register_craft({
}) })
minetest.register_craft({ minetest.register_craft({
output = "homedecor:chair 2", output = "homedecor:kitchen_chair_wood 2",
recipe = { recipe = {
{ "group:stick",""}, { "group:stick",""},
{ "group:wood","group:wood" }, { "group:wood","group:wood" },
...@@ -62,40 +62,34 @@ minetest.register_craft({ ...@@ -62,40 +62,34 @@ minetest.register_craft({
}) })
minetest.register_craft({ minetest.register_craft({
type = "fuel", output = "homedecor:armchair 2",
recipe = "homedecor:chair", recipe = {
burntime = 15, { "wool:white",""},
{ "group:wood","group:wood" },
{ "wool:white","wool:white" },
},
}) })
local chaircolors = { "black", "red", "pink", "violet", "blue", "dark_green" } minetest.register_craft({
type = "shapeless",
for _, color in ipairs(chaircolors) do output = "homedecor:kitchen_chair_padded",
recipe = {
minetest.register_craft({ "homedecor:kitchen_chair_wood",
type = "shapeless", "wool:white",
output = "homedecor:chair_"..color, },
recipe = { })
"homedecor:chair",
"wool:white",
"dye:"..color
},
})
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "fuel",
output = "homedecor:chair_"..color, recipe = "homedecor:kitchen_chair_wood",
recipe = { burntime = 15,
"homedecor:chair", })
"wool:"..color
},
})
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = "homedecor:chair_"..color, recipe = "homedecor:kitchen_chair_padded",
burntime = 15, burntime = 15,
}) })
end
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
...@@ -104,95 +98,47 @@ minetest.register_craft({ ...@@ -104,95 +98,47 @@ minetest.register_craft({
}) })
minetest.register_craft({ minetest.register_craft({
output = "homedecor:table_lamp_white_off", output = "homedecor:standing_lamp_off",
recipe = { recipe = {
{"default:paper","default:torch" ,"default:paper"}, {"homedecor:table_lamp_off"},
{"","group:stick",""}, {"group:stick"},
{"","stairs:slab_wood",""}, {"group:stick"},
}, },
}) })
minetest.register_craft({ minetest.register_craft({
output = "homedecor:table_lamp_white_off", type = "fuel",
recipe = "homedecor:table_lamp_off",
burntime = 10,
})
minetest.register_craft({
output = "homedecor:table_lamp_off",
recipe = { recipe = {
{"default:paper","default:torch" ,"default:paper"}, { "wool:white", "default:torch", "wool:white"},
{"","group:stick",""}, { "", "group:stick", ""},
{"","moreblocks:slab_wood",""}, { "", "stairs:slab_wood", "" },
}, },
}) })
minetest.register_craft({ minetest.register_craft({
output = "homedecor:standing_lamp_white_off", output = "homedecor:table_lamp_off",
recipe = { recipe = {
{"homedecor:table_lamp_white_off"}, { "cottages:wool", "default:torch", "cottages:wool"},
{"group:stick"}, { "", "group:stick", ""},
{"group:stick"}, { "", "stairs:slab_wood", "" },
}, },
}) })
minetest.register_craft({ minetest.register_craft({
type = "fuel", output = "homedecor:standing_lamp_off",
recipe = "homedecor:table_lamp_white_off", recipe = {
burntime = 10, { "homedecor:table_lamp_off"},
{ "group:stick"},
{ "group:stick"},
},
}) })
local lamp_colors = { "blue", "green", "pink", "red", "violet" }
for _, color in ipairs(lamp_colors) do
minetest.register_craft({
output = "homedecor:table_lamp_"..color.."_off",
recipe = {
{"wool:"..color,"default:torch" ,"wool:"..color},
{"","group:stick",""},
{"","stairs:slab_wood",""},
},
})
minetest.register_craft({
output = "homedecor:table_lamp_"..color.."_off",
recipe = {
{"wool:"..color,"default:torch" ,"wool:"..color},
{"","group:stick",""},
{"","moreblocks:slab_wood",""},
},
})
minetest.register_craft({
type = "shapeless",
output = "homedecor:table_lamp_"..color.."_off",
recipe = {
"dye:"..color,
"homedecor:table_lamp_off",
},
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:table_lamp_"..color.."_off",
burntime = 10,
})
minetest.register_craft({
output = "homedecor:standing_lamp_"..color.."_off",
recipe = {
{"homedecor:table_lamp_"..color.."_off"},
{"group:stick"},
{"group:stick"},
},
})
minetest.register_craft({
type = "shapeless",
output = "homedecor:standing_lamp_"..color.."_off",
recipe = {
"homedecor:standing_lamp_off",
"dye:"..color
},
})
end
minetest.register_craft({ minetest.register_craft({
output = "homedecor:toilet", output = "homedecor:toilet",
recipe = { recipe = {
...@@ -237,6 +183,24 @@ minetest.register_craft({ ...@@ -237,6 +183,24 @@ minetest.register_craft({
}, },
}) })
minetest.register_craft({
output = "homedecor:bathtub_clawfoot_brass_taps",
recipe = {
{ "homedecor:taps_brass", "", "" },
{ "group:marble", "", "group:marble" },
{"default:steel_ingot", "group:marble", "default:steel_ingot"},
},
})
minetest.register_craft({
output = "homedecor:bathtub_clawfoot_chrome_taps",
recipe = {
{ "homedecor:taps", "", "" },
{ "group:marble", "", "group:marble" },
{"default:steel_ingot", "group:marble", "default:steel_ingot"},
},
})
minetest.register_craft({ minetest.register_craft({
output = "homedecor:bars 6", output = "homedecor:bars 6",
recipe = { recipe = {
......
local S = homedecor.gettext
local S = homedecor_i18n.gettext
local cutlery_cbox = { local cutlery_cbox = {
type = "fixed", type = "fixed",
...@@ -13,7 +14,7 @@ homedecor.register("cutlery_set", { ...@@ -13,7 +14,7 @@ homedecor.register("cutlery_set", {
mesh = "homedecor_cutlery_set.obj", mesh = "homedecor_cutlery_set.obj",
tiles = { "homedecor_cutlery_set.png" }, tiles = { "homedecor_cutlery_set.png" },
inventory_image = "homedecor_cutlery_set_inv.png", inventory_image = "homedecor_cutlery_set_inv.png",
description = "Cutlery set", description = S("Cutlery set"),
groups = {snappy=3}, groups = {snappy=3},
selection_box = cutlery_cbox, selection_box = cutlery_cbox,
walkable = false, walkable = false,
...@@ -34,14 +35,19 @@ local fbottle_cbox = { ...@@ -34,14 +35,19 @@ local fbottle_cbox = {
} }
} }
local bottle_colors = {"brown", "green"} local bottle_colors = {
{ "brown", S("Brown bottle"), S("Four brown bottles") },
{ "green", S("Green bottle"), S("Four green bottles") },
}
for _, b in ipairs(bottle_colors) do for _, b in ipairs(bottle_colors) do
homedecor.register("bottle_"..b, { local name, desc, desc4 = unpack(b)
tiles = { "homedecor_bottle_"..b..".png" },
inventory_image = "homedecor_bottle_"..b.."_inv.png", homedecor.register("bottle_"..name, {
description = "Bottle ("..b..")", tiles = { "homedecor_bottle_"..name..".png" },
inventory_image = "homedecor_bottle_"..name.."_inv.png",
description = desc,
mesh = "homedecor_bottle.obj", mesh = "homedecor_bottle.obj",
walkable = false, walkable = false,
groups = {snappy=3}, groups = {snappy=3},
...@@ -51,13 +57,13 @@ for _, b in ipairs(bottle_colors) do ...@@ -51,13 +57,13 @@ for _, b in ipairs(bottle_colors) do
-- 4-bottle sets -- 4-bottle sets
homedecor.register("4_bottles_"..b, { homedecor.register("4_bottles_"..name, {
tiles = { tiles = {
"homedecor_bottle_"..b..".png", "homedecor_bottle_"..name..".png",
"homedecor_bottle_"..b..".png" "homedecor_bottle_"..name..".png"
}, },
inventory_image = "homedecor_4_bottles_"..b.."_inv.png", inventory_image = "homedecor_4_bottles_"..name.."_inv.png",
description = "Four "..b.." bottles", description = desc4,
mesh = "homedecor_4_bottles.obj", mesh = "homedecor_4_bottles.obj",
walkable = false, walkable = false,
groups = {snappy=3}, groups = {snappy=3},
...@@ -72,7 +78,7 @@ homedecor.register("4_bottles_multi", { ...@@ -72,7 +78,7 @@ homedecor.register("4_bottles_multi", {
"homedecor_bottle_green.png" "homedecor_bottle_green.png"
}, },
inventory_image = "homedecor_4_bottles_multi_inv.png", inventory_image = "homedecor_4_bottles_multi_inv.png",
description = "Four misc brown/green bottles", description = S("Four misc brown/green bottles"),
mesh = "homedecor_4_bottles.obj", mesh = "homedecor_4_bottles.obj",
groups = {snappy=3}, groups = {snappy=3},
walkable = false, walkable = false,
...@@ -82,7 +88,7 @@ homedecor.register("4_bottles_multi", { ...@@ -82,7 +88,7 @@ homedecor.register("4_bottles_multi", {
local wine_cbox = homedecor.nodebox.slab_z(-0.75) local wine_cbox = homedecor.nodebox.slab_z(-0.75)
homedecor.register("wine_rack", { homedecor.register("wine_rack", {
description = "Wine Rack", description = S("Wine rack"),
mesh = "homedecor_wine_rack.obj", mesh = "homedecor_wine_rack.obj",
tiles = { tiles = {
"homedecor_generic_wood_red.png", "homedecor_generic_wood_red.png",
...@@ -99,7 +105,7 @@ homedecor.register("wine_rack", { ...@@ -99,7 +105,7 @@ homedecor.register("wine_rack", {
}) })
homedecor.register("dartboard", { homedecor.register("dartboard", {
description = "Dartboard", description = S("Dartboard"),
mesh = "homedecor_dartboard.obj", mesh = "homedecor_dartboard.obj",
tiles = { "homedecor_dartboard.png" }, tiles = { "homedecor_dartboard.png" },
inventory_image = "homedecor_dartboard_inv.png", inventory_image = "homedecor_dartboard_inv.png",
...@@ -115,11 +121,11 @@ homedecor.register("dartboard", { ...@@ -115,11 +121,11 @@ homedecor.register("dartboard", {
}) })
homedecor.register("beer_tap", { homedecor.register("beer_tap", {
description = "Beer tap", description = S("Beer tap"),
mesh = "homedecor_beer_taps.obj", mesh = "homedecor_beer_taps.obj",
tiles = { tiles = {
"homedecor_generic_metal_bright.png", "homedecor_generic_metal_bright.png",
"homedecor_generic_metal_black.png", { name = "homedecor_generic_metal.png", color = homedecor.color_black }
}, },
inventory_image = "homedecor_beertap_inv.png", inventory_image = "homedecor_beertap_inv.png",
groups = { snappy=3 }, groups = { snappy=3 },
...@@ -128,19 +134,20 @@ homedecor.register("beer_tap", { ...@@ -128,19 +134,20 @@ homedecor.register("beer_tap", {
type = "fixed", type = "fixed",
fixed = { -0.25, -0.5, -0.4375, 0.25, 0.235, 0 } fixed = { -0.25, -0.5, -0.4375, 0.25, 0.235, 0 }
}, },
on_punch = function(pos, node, puncher, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local wielditem = puncher:get_wielded_item() local inv = clicker:get_inventory()
local inv = puncher:get_inventory()
local wieldname = wielditem:get_name() local wieldname = itemstack:get_name()
if wieldname == "vessels:drinking_glass" then if wieldname == "vessels:drinking_glass" then
if inv:room_for_item("main", "homedecor:beer_mug 1") then if inv:room_for_item("main", "homedecor:beer_mug 1") then
wielditem:take_item() itemstack:take_item()
puncher:set_wielded_item(wielditem) clicker:set_wielded_item(itemstack)
inv:add_item("main", "homedecor:beer_mug 1") inv:add_item("main", "homedecor:beer_mug 1")
minetest.chat_send_player(puncher:get_player_name(), "Ahh, a frosty cold beer - look in your inventory for it!") minetest.chat_send_player(clicker:get_player_name(),
S("Ahh, a frosty cold beer - look in your inventory for it!"))
else else
minetest.chat_send_player(puncher:get_player_name(), "No room in your inventory to add a beer mug!") minetest.chat_send_player(clicker:get_player_name(),
S("No room in your inventory to add a beer mug!"))
end end
end end
end end
...@@ -161,7 +168,7 @@ local beer_cbox = { ...@@ -161,7 +168,7 @@ local beer_cbox = {
} }
homedecor.register("beer_mug", { homedecor.register("beer_mug", {
description = "Beer mug", description = S("Beer mug"),
drawtype = "mesh", drawtype = "mesh",
mesh = "homedecor_beer_mug.obj", mesh = "homedecor_beer_mug.obj",
tiles = { "homedecor_beer_mug.png" }, tiles = { "homedecor_beer_mug.png" },
...@@ -170,7 +177,24 @@ homedecor.register("beer_mug", { ...@@ -170,7 +177,24 @@ homedecor.register("beer_mug", {
walkable = false, walkable = false,
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
selection_box = beer_cbox, selection_box = beer_cbox,
on_use = minetest.item_eat(2) on_use = function(itemstack, user, pointed_thing)
local inv = user:get_inventory()
if not creative.is_enabled_for(user:get_player_name()) then
if inv:room_for_item("main", "vessels:drinking_glass 1") then
inv:add_item("main", "vessels:drinking_glass 1")
else
local pos = user:get_pos()
local dir = user:get_look_dir()
local fdir = minetest.dir_to_facedir(dir)
local pos_fwd = { x = pos.x + homedecor.fdir_to_fwd[fdir+1][1],
y = pos.y + 1,
z = pos.z + homedecor.fdir_to_fwd[fdir+1][2] }
minetest.add_item(pos_fwd, "vessels:drinking_glass 1")
end
minetest.do_item_eat(2, nil, itemstack, user, pointed_thing)
return itemstack
end
end
}) })
local svm_cbox = { local svm_cbox = {
...@@ -179,7 +203,7 @@ local svm_cbox = { ...@@ -179,7 +203,7 @@ local svm_cbox = {
} }
homedecor.register("soda_machine", { homedecor.register("soda_machine", {
description = "Soda Vending Machine", description = S("Soda vending machine"),
mesh = "homedecor_soda_machine.obj", mesh = "homedecor_soda_machine.obj",
tiles = {"homedecor_soda_machine.png"}, tiles = {"homedecor_soda_machine.png"},
groups = {snappy=3}, groups = {snappy=3},
...@@ -188,21 +212,21 @@ homedecor.register("soda_machine", { ...@@ -188,21 +212,21 @@ homedecor.register("soda_machine", {
expand = { top="placeholder" }, expand = { top="placeholder" },
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
on_rotate = screwdriver.rotate_simple, on_rotate = screwdriver.rotate_simple,
on_punch = function(pos, node, puncher, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local wielditem = puncher:get_wielded_item() local wielditem = clicker:get_wielded_item()
local wieldname = wielditem:get_name() local wieldname = wielditem:get_name()
local fdir_to_fwd = { {0, -1}, {-1, 0}, {0, 1}, {1, 0} } local fdir_to_fwd = { {0, -1}, {-1, 0}, {0, 1}, {1, 0} }
local fdir = node.param2 local fdir = node.param2
local pos_drop = { x=pos.x+fdir_to_fwd[fdir+1][1], y=pos.y, z=pos.z+fdir_to_fwd[fdir+1][2] } local pos_drop = { x=pos.x+fdir_to_fwd[fdir+1][1], y=pos.y, z=pos.z+fdir_to_fwd[fdir+1][2] }
if wieldname == "homedecor:coin" then if wieldname == "homedecor:coin" then
wielditem:take_item() wielditem:take_item()
puncher:set_wielded_item(wielditem) clicker:set_wielded_item(wielditem)
minetest.spawn_item(pos_drop, "homedecor:soda_can") minetest.spawn_item(pos_drop, "homedecor:soda_can")
minetest.sound_play("insert_coin", { minetest.sound_play("insert_coin", {
pos=pos, max_hear_distance = 5 pos=pos, max_hear_distance = 5
}) })
else else
minetest.chat_send_player(puncher:get_player_name(), "Please insert a coin in the machine.") minetest.chat_send_player(clicker:get_player_name(), S("Please insert a coin in the machine."))
end end
end end
}) })
local S = homedecor.gettext
local S = homedecor_i18n.gettext
-- vectors to place one node next to or behind another -- vectors to place one node next to or behind another
...@@ -23,18 +24,37 @@ homedecor.fdir_to_fwd = { ...@@ -23,18 +24,37 @@ homedecor.fdir_to_fwd = {
{ -1, 0 }, { -1, 0 },
} }
local placeholder_node = "homedecor:expansion_placeholder" -- special case for wallmounted nodes
minetest.register_node(placeholder_node, {
description = "Expansion placeholder (you hacker you!)", homedecor.wall_fdir_to_right = {
groups = { not_in_creative_inventory=1 }, nil,
drawtype = "airlike", nil,
paramtype = "light", { -1, 0 },
walkable = false, { 1, 0 },
selection_box = { type = "fixed", fixed = { 0, 0, 0, 0, 0, 0 } }, { 0, -1 },
is_ground_content = false, { 0, 1 },
sunlight_propagates = true, }
buildable_to = false,
}) homedecor.wall_fdir_to_left = {
nil,
nil,
{ 1, 0 },
{ -1, 0 },
{ 0, 1 },
{ 0, -1 },
}
homedecor.wall_fdir_to_fwd = {
nil,
nil,
{ 0, -1 },
{ 0, 1 },
{ 1, 0 },
{ -1, 0 },
}
local placeholder_node = "air"
minetest.register_alias("homedecor:expansion_placeholder", "air")
--- select which node was pointed at based on it being known, not ignored, buildable_to --- select which node was pointed at based on it being known, not ignored, buildable_to
-- returns nil if no node could be selected -- returns nil if no node could be selected
...@@ -64,11 +84,11 @@ local function is_buildable_to(placer_name, ...) ...@@ -64,11 +84,11 @@ local function is_buildable_to(placer_name, ...)
end end
-- place one or two nodes if and only if both can be placed -- place one or two nodes if and only if both can be placed
local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2) local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2, pointed_thing)
local placer_name = placer:get_player_name() or "" local placer_name = placer:get_player_name() or ""
if is_buildable_to(placer_name, pos, pos2) then if is_buildable_to(placer_name, pos, pos2) then
local fdir = fdir or minetest.dir_to_facedir(placer:get_look_dir()) local lfdir = fdir or minetest.dir_to_facedir(placer:get_look_dir())
minetest.set_node(pos, { name = node1, param2 = fdir }) minetest.set_node(pos, { name = node1, param2 = lfdir })
node2 = node2 or "air" -- this can be used to clear buildable_to nodes even though we are using a multinode mesh node2 = node2 or "air" -- this can be used to clear buildable_to nodes even though we are using a multinode mesh
-- do not assume by default, as we still might want to allow overlapping in some cases -- do not assume by default, as we still might want to allow overlapping in some cases
local has_facedir = node2 ~= "air" local has_facedir = node2 ~= "air"
...@@ -76,12 +96,12 @@ local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2) ...@@ -76,12 +96,12 @@ local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
has_facedir = false has_facedir = false
node2 = placeholder_node node2 = placeholder_node
end end
minetest.set_node(pos2, { name = node2, param2 = (has_facedir and fdir) or nil }) minetest.set_node(pos2, { name = node2, param2 = (has_facedir and lfdir) or nil })
-- call after_place_node of the placed node if available -- call after_place_node of the placed node if available
local ctrl_node_def = minetest.registered_nodes[node1] local ctrl_node_def = minetest.registered_nodes[node1]
if ctrl_node_def and ctrl_node_def.after_place_node then if ctrl_node_def and ctrl_node_def.after_place_node then
ctrl_node_def.after_place_node(pos, placer) ctrl_node_def.after_place_node(pos, placer, itemstack, pointed_thing)
end end
if not homedecor.expect_infinite_stacks then if not homedecor.expect_infinite_stacks then
...@@ -91,18 +111,18 @@ local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2) ...@@ -91,18 +111,18 @@ local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
return itemstack return itemstack
end end
local function rightclick_pointed_thing(pos, placer, itemstack) local function rightclick_pointed_thing(pos, placer, itemstack, pointed_thing)
local node = minetest.get_node_or_nil(pos) local node = minetest.get_node_or_nil(pos)
if not node then return false end if not node then return false end
local def = minetest.registered_nodes[node.name] local def = minetest.registered_nodes[node.name]
if not def or not def.on_rightclick then return false end if not def or not def.on_rightclick then return false end
return def.on_rightclick(pos, node, placer, itemstack) or itemstack return def.on_rightclick(pos, node, placer, itemstack, pointed_thing) or itemstack
end end
-- Stack one node above another -- Stack one node above another
-- leave the last argument nil if it's one 2m high node -- leave the last argument nil if it's one 2m high node
function homedecor.stack_vertically(itemstack, placer, pointed_thing, node1, node2) function homedecor.stack_vertically(itemstack, placer, pointed_thing, node1, node2)
local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack) local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack, pointed_thing)
if rightclick_result then return rightclick_result end if rightclick_result then return rightclick_result end
local pos, def = select_node(pointed_thing) local pos, def = select_node(pointed_thing)
...@@ -110,14 +130,14 @@ function homedecor.stack_vertically(itemstack, placer, pointed_thing, node1, nod ...@@ -110,14 +130,14 @@ function homedecor.stack_vertically(itemstack, placer, pointed_thing, node1, nod
local top_pos = { x=pos.x, y=pos.y+1, z=pos.z } local top_pos = { x=pos.x, y=pos.y+1, z=pos.z }
return stack(itemstack, placer, nil, pos, def, top_pos, node1, node2) return stack(itemstack, placer, nil, pos, def, top_pos, node1, node2, pointed_thing)
end end
-- Stack one door node above another -- Stack one door node above another
-- like homedecor.stack_vertically but tests first if it was placed as a right wing, then uses node1_right and node2_right instead -- like homedecor.stack_vertically but tests first if it was placed as a right wing, then uses node1_right and node2_right instead
function homedecor.stack_wing(itemstack, placer, pointed_thing, node1, node2, node1_right, node2_right) function homedecor.stack_wing(itemstack, placer, pointed_thing, node1, node2, node1_right, node2_right)
local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack) local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack, pointed_thing)
if rightclick_result then return rightclick_result end if rightclick_result then return rightclick_result end
local pos, def = select_node(pointed_thing) local pos, def = select_node(pointed_thing)
...@@ -132,11 +152,11 @@ function homedecor.stack_wing(itemstack, placer, pointed_thing, node1, node2, no ...@@ -132,11 +152,11 @@ function homedecor.stack_wing(itemstack, placer, pointed_thing, node1, node2, no
end end
local top_pos = { x=pos.x, y=pos.y+1, z=pos.z } local top_pos = { x=pos.x, y=pos.y+1, z=pos.z }
return stack(itemstack, placer, fdir, pos, def, top_pos, node1, node2) return stack(itemstack, placer, fdir, pos, def, top_pos, node1, node2, pointed_thing)
end end
function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2, dir) function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2, dir)
local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack) local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack, pointed_thing)
if rightclick_result then return rightclick_result end if rightclick_result then return rightclick_result end
local pos, def = select_node(pointed_thing) local pos, def = select_node(pointed_thing)
...@@ -147,16 +167,17 @@ function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2 ...@@ -147,16 +167,17 @@ function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2
local pos2 = { x = pos.x + fdir_transform[fdir+1][1], y=pos.y, z = pos.z + fdir_transform[fdir+1][2] } local pos2 = { x = pos.x + fdir_transform[fdir+1][1], y=pos.y, z = pos.z + fdir_transform[fdir+1][2] }
return stack(itemstack, placer, fdir, pos, def, pos2, node1, node2) return stack(itemstack, placer, fdir, pos, def, pos2, node1, node2, pointed_thing)
end end
function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, color) function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks)
local thisnode = minetest.get_node(pos) local thisnode = minetest.get_node(pos)
local fdir = thisnode.param2 local param2 = thisnode.param2
local fdir = param2 % 8
local fxd = homedecor.fdir_to_fwd[fdir+1][1] local fxd = homedecor.wall_fdir_to_fwd[fdir+1][1]
local fzd = homedecor.fdir_to_fwd[fdir+1][2] local fzd = homedecor.wall_fdir_to_fwd[fdir+1][2]
local forwardpos = {x=pos.x+fxd, y=pos.y, z=pos.z+fzd} local forwardpos = {x=pos.x+fxd, y=pos.y, z=pos.z+fzd}
local forwardnode = minetest.get_node(forwardpos) local forwardnode = minetest.get_node(forwardpos)
...@@ -165,70 +186,82 @@ function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, color) ...@@ -165,70 +186,82 @@ function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, color)
local placer_name = placer:get_player_name() local placer_name = placer:get_player_name()
if not (def and def.buildable_to) then if not (def and def.buildable_to) then
minetest.chat_send_player( placer:get_player_name(), "Not enough room - the space for the headboard is occupied!" ) minetest.chat_send_player( placer:get_player_name(),
S("Not enough room - the space for the headboard is occupied!"))
minetest.set_node(pos, {name = "air"}) minetest.set_node(pos, {name = "air"})
return true return true
end end
if minetest.is_protected(forwardpos, placer_name) then if minetest.is_protected(forwardpos, placer_name) then
minetest.chat_send_player( placer:get_player_name(), "Someone already owns the spot where the headboard goes." ) minetest.chat_send_player( placer:get_player_name(),
S("Someone already owns the spot where the headboard goes."))
return true return true
end end
minetest.set_node(forwardpos, {name = "air"}) minetest.set_node(forwardpos, {name = "air"})
local lxd = homedecor.fdir_to_left[fdir+1][1] local lxd = homedecor.wall_fdir_to_left[fdir+1][1]
local lzd = homedecor.fdir_to_left[fdir+1][2] local lzd = homedecor.wall_fdir_to_left[fdir+1][2]
local leftpos = {x=pos.x+lxd, y=pos.y, z=pos.z+lzd} local leftpos = {x=pos.x+lxd, y=pos.y, z=pos.z+lzd}
local leftnode = minetest.get_node(leftpos) local leftnode = minetest.get_node(leftpos)
local rxd = homedecor.fdir_to_right[fdir+1][1] local rxd = homedecor.wall_fdir_to_right[fdir+1][1]
local rzd = homedecor.fdir_to_right[fdir+1][2] local rzd = homedecor.wall_fdir_to_right[fdir+1][2]
local rightpos = {x=pos.x+rxd, y=pos.y, z=pos.z+rzd} local rightpos = {x=pos.x+rxd, y=pos.y, z=pos.z+rzd}
local rightnode = minetest.get_node(rightpos) local rightnode = minetest.get_node(rightpos)
if leftnode.name == "homedecor:bed_"..color.."_regular" then local inv = placer:get_inventory()
local lastdye = unifieddyes.last_used_dye[placer_name]
if leftnode.name == "homedecor:bed_regular" then
local newname = string.gsub(thisnode.name, "_regular", "_kingsize") local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
local meta = minetest.get_meta(leftpos)
minetest.set_node(pos, {name = "air"}) minetest.set_node(pos, {name = "air"})
minetest.set_node(leftpos, { name = newname, param2 = fdir}) minetest.set_node(leftpos, { name = newname, param2 = param2})
elseif rightnode.name == "homedecor:bed_"..color.."_regular" then meta:set_string("dye", lastdye)
inv:add_item("main", lastdye)
elseif rightnode.name == "homedecor:bed_regular" then
local newname = string.gsub(thisnode.name, "_regular", "_kingsize") local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
local meta = minetest.get_meta(rightpos)
minetest.set_node(rightpos, {name = "air"}) minetest.set_node(rightpos, {name = "air"})
minetest.set_node(pos, { name = newname, param2 = fdir}) minetest.set_node(pos, { name = newname, param2 = param2})
meta:set_string("dye", lastdye)
inv:add_item("main", lastdye)
end end
local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z})
local bottomnode = minetest.get_node({x=pos.x, y=pos.y-1.0, z=pos.z})
if string.find(topnode.name, "homedecor:bed_.*_regular$") then local toppos = {x=pos.x, y=pos.y+1.0, z=pos.z}
if fdir == topnode.param2 then local topposfwd = {x=toppos.x+fxd, y=toppos.y, z=toppos.z+fzd}
local newname = string.gsub(thisnode.name, "_regular", "_extended")
minetest.set_node(pos, { name = newname, param2 = fdir})
end
end
if string.find(bottomnode.name, "homedecor:bed_.*_regular$") then if trybunks and is_buildable_to(placer_name, toppos, topposfwd) then
if fdir == bottomnode.param2 then local newname = string.gsub(thisnode.name, "_regular", "_extended")
local newname = string.gsub(bottomnode.name, "_regular", "_extended") local newparam2 = param2 % 8
minetest.set_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newname, param2 = fdir}) if inv:contains_item("main", lastdye) then
minetest.set_node(toppos, { name = thisnode.name, param2 = param2})
if lastdye then inv:remove_item("main", lastdye.." 1") end
else
minetest.set_node(toppos, { name = thisnode.name, param2 = newparam2})
minetest.chat_send_player(placer_name, "Ran out of "..lastdye..", using neutral color.")
unifieddyes.last_used_dye[placer_name] = nil
end end
minetest.swap_node(pos, { name = newname, param2 = param2})
itemstack:take_item()
end end
end end
function homedecor.unextend_bed(pos, color) function homedecor.unextend_bed(pos)
local bottomnode = minetest.get_node({x=pos.x, y=pos.y-1.0, z=pos.z}) local bottomnode = minetest.get_node({x=pos.x, y=pos.y-1.0, z=pos.z})
local fdir = bottomnode.param2 local param2 = bottomnode.param2
if string.find(bottomnode.name, "homedecor:bed_.*_extended$") then if bottomnode.name == "homedecor:bed_extended" then
local newname = string.gsub(bottomnode.name, "_extended", "_regular") local newname = string.gsub(bottomnode.name, "_extended", "_regular")
minetest.set_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newname, param2 = fdir}) minetest.swap_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newname, param2 = param2})
end end
end end
function homedecor.place_banister(itemstack, placer, pointed_thing) function homedecor.place_banister(itemstack, placer, pointed_thing)
local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack) local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack, pointed_thing)
if rightclick_result then return rightclick_result end if rightclick_result then return rightclick_result end
local pos, def = select_node(pointed_thing) local pos, _ = select_node(pointed_thing)
if not pos then return itemstack end if not pos then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir()) local fdir = minetest.dir_to_facedir(placer:get_look_dir())
...@@ -240,12 +273,12 @@ function homedecor.place_banister(itemstack, placer, pointed_thing) ...@@ -240,12 +273,12 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
local placer_name = placer:get_player_name() local placer_name = placer:get_player_name()
if not (adef and adef.buildable_to) then if not (adef and adef.buildable_to) then
minetest.chat_send_player(placer_name, "Not enough room - the upper space is occupied!" ) minetest.chat_send_player(placer_name, S("Not enough room - the upper space is occupied!" ))
return itemstack return itemstack
end end
if minetest.is_protected(abovepos, placer_name) then if minetest.is_protected(abovepos, placer_name) then
minetest.chat_send_player(placer_name, "Someone already owns that spot." ) minetest.chat_send_player(placer_name, S("Someone already owns that spot."))
return itemstack return itemstack
end end
...@@ -269,21 +302,20 @@ function homedecor.place_banister(itemstack, placer, pointed_thing) ...@@ -269,21 +302,20 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
local right_fwd_below_pos = { x=pos.x+rxd+fxd, y=pos.y-1, z=pos.z+rzd+fzd } local right_fwd_below_pos = { x=pos.x+rxd+fxd, y=pos.y-1, z=pos.z+rzd+fzd }
local left_fwd_below_pos = { x=pos.x+lxd+fxd, y=pos.y-1, z=pos.z+lzd+fzd } local left_fwd_below_pos = { x=pos.x+lxd+fxd, y=pos.y-1, z=pos.z+lzd+fzd }
local below_node = minetest.get_node(below_pos) local below_node = minetest.get_node(below_pos)
local fwd_node = minetest.get_node(fwd_pos) --local fwd_node = minetest.get_node(fwd_pos)
local left_node = minetest.get_node(left_pos) local left_node = minetest.get_node(left_pos)
local right_node = minetest.get_node(right_pos) local right_node = minetest.get_node(right_pos)
local left_fwd_node = minetest.get_node(left_fwd_pos) local left_fwd_node = minetest.get_node(left_fwd_pos)
local right_fwd_node = minetest.get_node(right_fwd_pos) local right_fwd_node = minetest.get_node(right_fwd_pos)
local left_below_node = minetest.get_node({x=left_pos.x, y=left_pos.y-1, z=left_pos.z}) local left_below_node = minetest.get_node({x=left_pos.x, y=left_pos.y-1, z=left_pos.z})
local right_below_node = minetest.get_node({x=right_pos.x, y=right_pos.y-1, z=right_pos.z}) local right_below_node = minetest.get_node({x=right_pos.x, y=right_pos.y-1, z=right_pos.z})
local right_fwd_above_node = minetest.get_node(right_fwd_above_pos) --local right_fwd_above_node = minetest.get_node(right_fwd_above_pos)
local left_fwd_above_node = minetest.get_node(left_fwd_above_pos) --local left_fwd_above_node = minetest.get_node(left_fwd_above_pos)
local right_fwd_below_node = minetest.get_node(right_fwd_below_pos) local right_fwd_below_node = minetest.get_node(right_fwd_below_pos)
local left_fwd_below_node = minetest.get_node(left_fwd_below_pos) local left_fwd_below_node = minetest.get_node(left_fwd_below_pos)
local new_place_name = itemstack:get_name() local new_place_name = itemstack:get_name()
local n = 0
-- try to place a diagonal one on the side of blocks stacked like stairs -- try to place a diagonal one on the side of blocks stacked like stairs
-- or follow an existing diagonal with another. -- or follow an existing diagonal with another.
...@@ -326,7 +358,7 @@ function homedecor.place_banister(itemstack, placer, pointed_thing) ...@@ -326,7 +358,7 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
new_place_name = string.gsub(right_node.name, "_diagonal_.-$", "_horizontal") new_place_name = string.gsub(right_node.name, "_diagonal_.-$", "_horizontal")
-- try to place a horizontal in-line with the nearest diagonal, at the bottom -- try to place a horizontal in-line with the nearest diagonal, at the bottom
elseif left_fwd_node and string.find(left_fwd_node.name, "homedecor:banister_.*_diagonal") elseif left_fwd_node and string.find(left_fwd_node.name, "homedecor:banister_.*_diagonal")
and is_buildable_to(placer_name, fwd_pos, fwd_pos) then and is_buildable_to(placer_name, fwd_pos, fwd_pos) then
fdir = left_fwd_node.param2 fdir = left_fwd_node.param2
pos = fwd_pos pos = fwd_pos
...@@ -359,4 +391,3 @@ function homedecor.place_banister(itemstack, placer, pointed_thing) ...@@ -359,4 +391,3 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
itemstack:take_item() itemstack:take_item()
return itemstack return itemstack
end end
-- This code supplies an oven/stove. Basically it's just a copy of the default furnace with different textures. -- This code supplies an oven/stove. Basically it's just a copy of the default furnace with different textures.
local S = homedecor.gettext local S = homedecor_i18n.gettext
local function swap_node(pos, name) local function swap_node(pos, name)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
...@@ -88,7 +88,7 @@ function homedecor.register_furnace(name, furnacedef) ...@@ -88,7 +88,7 @@ function homedecor.register_furnace(name, furnacedef)
furnacedef.cook_speed = furnacedef.cook_speed or 1 furnacedef.cook_speed = furnacedef.cook_speed or 1
local description = furnacedef.description or "Furnace" local description = furnacedef.description or S("Furnace")
local furnace_construct = function(pos) local furnace_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
...@@ -106,7 +106,7 @@ function homedecor.register_furnace(name, furnacedef) ...@@ -106,7 +106,7 @@ function homedecor.register_furnace(name, furnacedef)
if listname == "fuel" then if listname == "fuel" then
if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
if inv:is_empty("src") then if inv:is_empty("src") then
meta:set_string("infotext", S("%s is empty"):format(description)) meta:set_string("infotext", S("@1 (empty)", description))
end end
return stack:get_count() return stack:get_count()
else else
...@@ -125,7 +125,7 @@ function homedecor.register_furnace(name, furnacedef) ...@@ -125,7 +125,7 @@ function homedecor.register_furnace(name, furnacedef)
if to_list == "fuel" then if to_list == "fuel" then
if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
if inv:is_empty("src") then if inv:is_empty("src") then
meta:set_string("infotext", S("%s is empty"):format(description)) meta:set_string("infotext", S("@1 (empty)", description))
end end
return count return count
else else
...@@ -151,7 +151,7 @@ function homedecor.register_furnace(name, furnacedef) ...@@ -151,7 +151,7 @@ function homedecor.register_furnace(name, furnacedef)
} }
local def_active = { local def_active = {
description = description .. " (active)", description = S("@1 (active)", description),
tiles = make_tiles(furnacedef.tiles_active, furnacedef.tile_format, true), tiles = make_tiles(furnacedef.tiles_active, furnacedef.tile_format, true),
light_source = 8, light_source = 8,
drop = "homedecor:" .. name, drop = "homedecor:" .. name,
...@@ -171,28 +171,28 @@ function homedecor.register_furnace(name, furnacedef) ...@@ -171,28 +171,28 @@ function homedecor.register_furnace(name, furnacedef)
end end
end end
local name_active = name.."_active" local n_active = name.."_active"
homedecor.register(name, def) homedecor.register(name, def)
homedecor.register(name_active, def_active) homedecor.register(n_active, def_active)
local name, name_active = "homedecor:"..name, "homedecor:"..name_active local nname, name_active = "homedecor:"..name, "homedecor:"..n_active
minetest.register_abm({ minetest.register_abm({
nodenames = {name, name_active, name.."_locked", name_active.."_locked"}, nodenames = {nname, name_active, nname.."_locked", name_active.."_locked"},
label = "furnaces", label = "furnaces",
interval = 1.0, interval = 1.0,
chance = 1, chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider) action = function(pos, node, active_object_count, active_object_count_wider)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
for i, name in ipairs({ for i, pname in ipairs({
"fuel_totaltime", "fuel_totaltime",
"fuel_time", "fuel_time",
"src_totaltime", "src_totaltime",
"src_time" "src_time"
}) do }) do
if meta:get_string(name) == "" then if meta:get_string(pname) == "" then
meta:set_float(name, 0.0) meta:set_float(pname, 0.0)
end end
end end
...@@ -226,12 +226,12 @@ function homedecor.register_furnace(name, furnacedef) ...@@ -226,12 +226,12 @@ function homedecor.register_furnace(name, furnacedef)
-- XXX: Quick patch, make it better in the future. -- XXX: Quick patch, make it better in the future.
local locked = node.name:find("_locked$") and "_locked" or "" local locked = node.name:find("_locked$") and "_locked" or ""
local desc = minetest.registered_nodes[name..locked].description local desc = minetest.registered_nodes[nname..locked].description
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
local percent = math.floor(meta:get_float("fuel_time") / local percent = math.floor(meta:get_float("fuel_time") /
meta:get_float("fuel_totaltime") * 100) meta:get_float("fuel_totaltime") * 100)
meta:set_string("infotext",S("%s active: %d%%"):format(desc,percent)) meta:set_string("infotext", S("@1 (active: @2%)", desc, percent))
swap_node(pos,name_active..locked) swap_node(pos,name_active..locked)
meta:set_string("formspec", make_formspec(furnacedef, percent)) meta:set_string("formspec", make_formspec(furnacedef, percent))
return return
...@@ -239,9 +239,9 @@ function homedecor.register_furnace(name, furnacedef) ...@@ -239,9 +239,9 @@ function homedecor.register_furnace(name, furnacedef)
local fuel = nil local fuel = nil
local afterfuel local afterfuel
local cooked = nil cooked = nil
local fuellist = inv:get_list("fuel") local fuellist = inv:get_list("fuel")
local srclist = inv:get_list("src") srclist = inv:get_list("src")
if srclist then if srclist then
cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
...@@ -251,24 +251,24 @@ function homedecor.register_furnace(name, furnacedef) ...@@ -251,24 +251,24 @@ function homedecor.register_furnace(name, furnacedef)
end end
if (not fuel) or (fuel.time <= 0) then if (not fuel) or (fuel.time <= 0) then
meta:set_string("infotext",desc..S(": Out of fuel")) meta:set_string("infotext", S("@1 (out of fuel)", desc))
swap_node(pos, name..locked) swap_node(pos, nname..locked)
meta:set_string("formspec", make_formspec(furnacedef, 0)) meta:set_string("formspec", make_formspec(furnacedef, 0))
return return
end end
if cooked.item:is_empty() then if cooked.item:is_empty() then
if was_active then if was_active then
meta:set_string("infotext",S("%s is empty"):format(desc)) meta:set_string("infotext", S("@1 (empty)", desc))
swap_node(pos, name..locked) swap_node(pos, nname..locked)
meta:set_string("formspec", make_formspec(furnacedef, 0)) meta:set_string("formspec", make_formspec(furnacedef, 0))
end end
return return
end end
if not inv:room_for_item("dst", cooked.item) then if not inv:room_for_item("dst", cooked.item) then
meta:set_string("infotext", desc..S(": output bins are full")) meta:set_string("infotext", S("@1 (output bins are full)", desc))
swap_node(pos, name..locked) swap_node(pos, nname..locked)
meta:set_string("formspec", make_formspec(furnacedef, 0)) meta:set_string("formspec", make_formspec(furnacedef, 0))
return return
end end
......