Version MFF.

This commit is contained in:
sys4-fr
2018-09-07 22:32:38 +02:00
parent 2d0363f3ac
commit a11527ed63
1027 changed files with 8090 additions and 37753 deletions

159
homedecor/bathroom_furniture.lua Normal file → Executable file
View File

@ -1,56 +1,44 @@
local S = homedecor.gettext
local S = homedecor_i18n.gettext
local bathroom_tile_colors = {
{ "1", "white/grey", "#c0c0c0:200" },
{ "2", "white/dark grey", "#404040:150" },
{ "3", "white/black", "#000000:200" },
{ "4", "black/dark grey", "" },
{ "red", "white/red", "#d00000:150" },
{ "green", "white/green", "#00d000:150" },
{ "blue", "white/blue", "#0000d0:150" },
{ "yellow", "white/yellow", "#ffff00:150" },
{ "tan", "white/tan", "#ceaf42:150" }
}
minetest.register_node("homedecor:bathroom_tiles_dark", {
description = S("Bathroom/kitchen tiles (dark)"),
tiles = {
{ name = "homedecor_bathroom_tiles_bg.png", color = 0xff606060 },
"homedecor_bathroom_tiles_fg.png"
},
drawtype = "mesh",
mesh = "homedecor_block_with_overlay.obj",
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(),
after_dig_node = unifieddyes.after_dig_node
})
for i in ipairs(bathroom_tile_colors) do
local color = bathroom_tile_colors[i][1]
local shade = bathroom_tile_colors[i][2]
local hue = bathroom_tile_colors[i][3]
minetest.register_node("homedecor:bathroom_tiles_medium", {
description = S("Bathroom/kitchen tiles (medium)"),
tiles = {
{ name = "homedecor_bathroom_tiles_bg.png", color = 0xffc0c0c0 },
"homedecor_bathroom_tiles_fg.png"
},
drawtype = "mesh",
mesh = "homedecor_block_with_overlay.obj",
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(),
after_dig_node = unifieddyes.after_dig_node
})
local coloredtile = "homedecor_bathroom_tiles_bg.png^(homedecor_bathroom_tiles_fg.png^[colorize:"..hue..")"
minetest.register_node("homedecor:bathroom_tiles_light", {
description = S("Bathroom/kitchen tiles (light)"),
tiles = {
{ name = "homedecor_bathroom_tiles_bg.png", color = 0xffffffff },
"homedecor_bathroom_tiles_fg.png"
},
drawtype = "mesh",
mesh = "homedecor_block_with_overlay.obj",
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(),
after_dig_node = unifieddyes.after_dig_node
})
if color == "4" then
coloredtile = "(homedecor_bathroom_tiles_bg.png^[colorize:#000000:75)"..
"^(homedecor_bathroom_tiles_fg.png^[colorize:#000000:200)"
end
minetest.register_node("homedecor:tiles_"..color, {
description = "Bathroom/kitchen tiles ("..shade..")",
tiles = {
coloredtile,
coloredtile,
coloredtile,
coloredtile,
"("..coloredtile..")^[transformR90",
"("..coloredtile..")^[transformR90"
},
groups = {cracky=3},
paramtype = "light",
sounds = default.node_sound_stone_defaults(),
})
end
local tr_cbox = {
type = "fixed",
@ -58,7 +46,7 @@ local tr_cbox = {
}
homedecor.register("towel_rod", {
description = S("Towel rod with towel"),
description = "Towel rod with towel",
mesh = "homedecor_towel_rod.obj",
tiles = {
"homedecor_generic_terrycloth.png",
@ -72,7 +60,7 @@ homedecor.register("towel_rod", {
})
homedecor.register("medicine_cabinet", {
description = S("Medicine cabinet"),
description = S("Medicine Cabinet"),
mesh = "homedecor_medicine_cabinet.obj",
tiles = {
'default_wood.png',
@ -116,72 +104,3 @@ homedecor.register("medicine_cabinet_open", {
end,
})
-- convert old static nodes
homedecor.old_static_bathroom_tiles = {
"homedecor:tiles_1",
"homedecor:tiles_2",
"homedecor:tiles_3",
"homedecor:tiles_4",
"homedecor:tiles_red",
"homedecor:tiles_tan",
"homedecor:tiles_yellow",
"homedecor:tiles_green",
"homedecor:tiles_blue"
}
local old_to_color = {
"light_grey",
"grey",
"black",
"black"
}
minetest.register_lbm({
name = "homedecor:convert_bathroom_tiles",
label = "Convert bathroom tiles to use param2 color",
run_at_every_load = false,
nodenames = homedecor.old_static_bathroom_tiles,
action = function(pos, node)
local name = node.name
local newname = "homedecor:bathroom_tiles_light"
local a = string.find(name, "_")
local color = string.sub(name, a + 1)
if color == "tan" then
color = "yellow_s50"
elseif color == "1" or color == "2" or color == "3" or color == "4" then
if color == "4" then
newname = "homedecor:bathroom_tiles_medium"
end
color = old_to_color[tonumber(color)]
elseif color ~= "yellow" then
color = color.."_s50"
end
local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "extended")
minetest.set_node(pos, { name = newname, param2 = paletteidx })
local meta = minetest.get_meta(pos)
meta:set_string("dye", "unifieddyes:"..color)
meta:set_string("palette", "ext")
end
})
minetest.register_lbm({
name = "homedecor:recolor_bathroom_tiles",
label = "Convert bathroom tiles to use UD extended palette",
run_at_every_load = false,
nodenames = {
"homedecor:bathroom_tiles_light",
"homedecor:bathroom_tiles_medium",
"homedecor:bathroom_tiles_dark",
},
action = function(pos, node)
local meta = minetest.get_meta(pos)
if meta:get_string("palette") ~= "ext" then
minetest.swap_node(pos, { name = node.name, param2 = unifieddyes.convert_classic_palette[node.param2] })
meta:set_string("palette", "ext")
end
end
})

86
homedecor/bathroom_sanitation.lua Normal file → Executable file
View File

@ -1,5 +1,4 @@
local S = homedecor_i18n.gettext
local S = homedecor.gettext
local toilet_sbox = {
type = "fixed",
@ -18,16 +17,16 @@ homedecor.register("toilet", {
description = S("Toilet"),
mesh = "homedecor_toilet_closed.obj",
tiles = {
"homedecor_marble.png",
"homedecor_marble.png",
"homedecor_marble.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey }
"homedecor_marble.png^[colorize:#ffffff:175",
"homedecor_marble.png^[colorize:#ffffff:175",
"homedecor_marble.png^[colorize:#ffffff:175",
"homedecor_generic_metal_black.png^[brighten"
},
selection_box = toilet_sbox,
node_box = toilet_cbox,
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_punch = function (pos, node, puncher)
node.name = "homedecor:toilet_open"
minetest.set_node(pos, node)
end
@ -36,18 +35,18 @@ homedecor.register("toilet", {
homedecor.register("toilet_open", {
mesh = "homedecor_toilet_open.obj",
tiles = {
"homedecor_marble.png",
"homedecor_marble.png",
"homedecor_marble.png",
"homedecor_marble.png^[colorize:#ffffff:175",
"homedecor_marble.png^[colorize:#ffffff:175",
"homedecor_marble.png^[colorize:#ffffff:175",
"default_water.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey }
"homedecor_generic_metal_black.png^[brighten"
},
selection_box = toilet_sbox,
collision_box = toilet_cbox,
drop = "homedecor:toilet",
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_punch = function (pos, node, puncher)
node.name = "homedecor:toilet"
minetest.set_node(pos, node)
minetest.sound_play("homedecor_toilet_flush", {
@ -90,7 +89,7 @@ homedecor.register("sink", {
description = S("Bathroom Sink"),
mesh = "homedecor_bathroom_sink.obj",
tiles = {
"homedecor_marble.png",
"homedecor_marble.png^[colorize:#ffffff:175",
"homedecor_marble.png",
"default_water.png"
},
@ -115,13 +114,12 @@ homedecor.register("sink", {
--Taps
local function taps_on_rightclick(pos, node, clicker, itemstack, pointed_thing)
local function taps_on_rightclick(pos, node, clicker)
local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-1, z=pos.z})
if below and
below.name == "homedecor:shower_tray" or
below.name == "homedecor:sink" or
below.name == "homedecor:kitchen_cabinet_with_sink" or
below.name == "homedecor:kitchen_cabinet_with_sink_locked" then
below.name == "homedecor:kitchen_cabinet_with_sink" then
local particledef = {
outlet = { x = 0, y = -0.44, z = 0.28 },
velocity_x = { min = -0.1, max = 0.1 },
@ -131,16 +129,15 @@ local function taps_on_rightclick(pos, node, clicker, itemstack, pointed_thing)
}
homedecor.start_particle_spawner(pos, node, particledef, "homedecor_faucet")
end
return itemstack
end
homedecor.register("taps", {
description = S("Bathroom taps/faucet"),
mesh = "homedecor_bathroom_faucet.obj",
tiles = {
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"homedecor_generic_metal_black.png^[brighten",
"homedecor_generic_metal_bright.png",
"homedecor_generic_metal.png",
"homedecor_generic_metal_black.png^[colorize:#ffffff:200",
"homedecor_generic_metal_bright.png"
},
inventory_image = "3dforniture_taps_inv.png",
@ -163,7 +160,7 @@ homedecor.register("taps_brass", {
tiles = {
"homedecor_generic_metal_brass.png",
"homedecor_generic_metal_brass.png",
"homedecor_generic_metal.png",
"homedecor_generic_metal_black.png^[colorize:#ffffff:200",
"homedecor_generic_metal_brass.png"
},
inventory_image = "3dforniture_taps_brass_inv.png",
@ -219,16 +216,16 @@ homedecor.register("shower_head", {
drawtype = "mesh",
mesh = "homedecor_shower_head.obj",
tiles = {
"homedecor_generic_metal.png",
"homedecor_generic_metal_black.png^[brighten",
"homedecor_shower_head.png"
},
inventory_image = "homedecor_shower_head_inv.png",
description = S("Shower Head"),
description = "Shower Head",
groups = {snappy=3},
selection_box = sh_cbox,
walkable = false,
on_rotate = screwdriver.disallow,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_rightclick = function (pos, node, clicker)
local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-2.0, z=pos.z})
if below and below.name == "homedecor:shower_tray" then
local particledef = {
@ -240,53 +237,12 @@ homedecor.register("shower_head", {
}
homedecor.start_particle_spawner(pos, node, particledef, "homedecor_shower")
end
return itemstack
end,
on_destruct = function(pos)
homedecor.stop_particle_spawner(pos)
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 = {
type = "fixed",
fixed = { -8/16, -8/16, 1/16, 8/16, 8/16, 8/16 }
@ -303,7 +259,7 @@ homedecor.register("bathroom_set", {
"homedecor_bathroom_set_toothpaste.png",
},
inventory_image = "homedecor_bathroom_set_inv.png",
description = S("Bathroom sundries set"),
description = "Bathroom sundries set",
groups = {snappy=3},
selection_box = bs_cbox,
walkable = false,

334
homedecor/bedroom.lua Normal file → Executable file
View File

@ -1,16 +1,31 @@
local S = homedecor.gettext
local S = homedecor_i18n.gettext
local function N_(x) return x end
local bedcolors = {
{ "black", "#000000:200" }, --new cg72
{ "brown", "#603010:175" },
{ "blue", "#0000d0:150" },
{ "cyan", "#009fa7:150" }, --new cg72
{ "darkgrey", "#101010:175" },
{ "dark_green", "#007000:150" },
{ "green", "#00d000:150" }, --new cg72
{ "grey", "#101010:100" }, --new cg72
{ "magenta", "#e0048b:150" }, --new cg72
{ "orange", "#ff3000:150" },
{ "pink", "#ff80b0:150" },
{ "red", "#d00000:150" },
{ "violet", "#7000e0:150" },
{ "white", "#000000:000" }, --new cg72
{ "yellow", "#ffe000:150" }
}
local bed_sbox = {
type = "wallmounted",
wall_side = { -0.5, -0.5, -0.5, 0.5, 0.5, 1.5 }
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 1.5 }
}
local bed_cbox = {
type = "wallmounted",
wall_side = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -0.5, 0.5, -0.05, 1.5 },
{ -0.5, -0.5, 1.44, 0.5, 0.5, 1.5 },
{ -0.5, -0.5, -0.5, 0.5, 0.18, -0.44 },
@ -18,131 +33,133 @@ local bed_cbox = {
}
local kbed_sbox = {
type = "wallmounted",
wall_side = { -0.5, -0.5, -0.5, 1.5, 0.5, 1.5 }
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 1.5, 0.5, 1.5 }
}
local kbed_cbox = {
type = "wallmounted",
wall_side = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -0.5, 1.5, -0.05, 1.5 },
{ -0.5, -0.5, 1.44, 1.5, 0.5, 1.5 },
{ -0.5, -0.5, -0.5, 1.5, 0.18, -0.44 },
}
}
homedecor.register("bed_regular", {
mesh = "homedecor_bed_regular.obj",
tiles = {
{ name = "homedecor_bed_frame.png", color = 0xffffffff },
{ name = "default_wood.png", color = 0xffffffff },
{ name = "wool_white.png", color = 0xffffffff },
"wool_white.png",
{ name = "homedecor_bed_bottom.png", color = 0xffffffff },
"wool_white.png^[brighten", -- pillow
},
inventory_image = "homedecor_bed_inv.png",
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
description = S("Bed"),
groups = {snappy=3, ud_param2_colorable = 1},
selection_box = bed_sbox,
node_box = bed_cbox,
sounds = default.node_sound_wood_defaults(),
on_rotate = screwdriver.disallow,
after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
if not placer:get_player_control().sneak then
return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing)
end
end,
after_dig_node = function(pos)
homedecor.unextend_bed(pos)
end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local itemname = itemstack:get_name()
if itemname == "homedecor:bed_regular" then
homedecor.bed_expansion(pos, clicker, itemstack, pointed_thing, true)
return itemstack
else
-- if minetest.get_modpath("beds") then
-- beds.on_rightclick(pos, clicker)
-- end
return itemstack
end
for i in ipairs(bedcolors) do
local color = bedcolors[i][1]
local color2=color
local hue = bedcolors[i][2]
if color == "darkgrey" then
color2 = "dark_grey"
end
})
homedecor.register("bed_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_dig_node = function(pos)
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 = unifieddyes.fix_rotation_nsew,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local inv = digger:get_inventory()
if digger:get_player_control().sneak and inv:room_for_item("main", "bed_regular 1") then
inv:remove_item("main", "homedecor:bed_kingsize 1")
inv:add_item("main", "homedecor:bed_regular 2")
homedecor.register("bed_"..color.."_regular", {
mesh = "homedecor_bed_regular.obj",
tiles = {
"homedecor_bed_frame.png",
"default_wood.png",
"wool_white.png",
"wool_"..color2..".png",
"homedecor_bed_bottom.png",
"wool_"..color2..".png^[brighten", -- pillow
},
inventory_image = "homedecor_bed_inv.png^(homedecor_bed_overlay_inv.png^[colorize:"..hue..")",
description = S("Bed (%s)"):format(color),
groups = {snappy=3},
selection_box = bed_sbox,
collision_box = bed_cbox,
sounds = default.node_sound_wood_defaults(),
on_rotate = screwdriver.disallow,
after_place_node = function(pos, placer, itemstack, pointed_thing)
if not placer:get_player_control().sneak then
return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, color)
end
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
homedecor.unextend_bed(pos, color)
if minetest.get_modpath("beds") then -- MFF (crabman 7/04/2016) remove bed spawn on dig
local name = digger:get_player_name()
if not name or name == "" then return end
beds.spawn[name] = nil
beds.save_spawns()
end
end,
on_rightclick = function(pos, node, clicker)
if minetest.get_modpath("beds") then
beds.on_rightclick(pos, clicker)
else return end
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({ N_("mahogany"), N_("oak") }) do
homedecor.register("bed_"..color.."_extended", {
mesh = "homedecor_bed_extended.obj",
tiles = {
"homedecor_bed_frame.png",
"default_wood.png",
"wool_white.png",
"wool_"..color2..".png",
"homedecor_bed_bottom.png",
"wool_"..color2..".png^[brighten",
},
selection_box = bed_sbox,
collision_box = bed_cbox,
sounds = default.node_sound_wood_defaults(),
expand = { forward = "air" },
on_rotate = screwdriver.disallow,
after_dig_node = function(pos)
homedecor.unextend_bed(pos, color)
end,
on_rightclick = function(pos, node, clicker)
if minetest.get_modpath("beds") then
beds.on_rightclick(pos, clicker)
else return end
end,
drop = "homedecor:bed_"..color.."_regular"
})
homedecor.register("bed_"..color.."_kingsize", {
mesh = "homedecor_bed_kingsize.obj",
tiles = {
"homedecor_bed_frame.png",
"default_wood.png",
"wool_white.png",
"wool_"..color2..".png",
"homedecor_bed_bottom.png",
"wool_"..color2..".png^[brighten",
},
inventory_image = "homedecor_bed_kingsize_inv.png^(homedecor_bed_kingsize_overlay_inv.png^[colorize:"..hue..")",
groups = {snappy=3, not_in_creative_inventory=1},
description = S("Bed (%s, king sized)"):format(color),
groups = {snappy=3, not_in_creative_inventory=1},
selection_box = kbed_sbox,
collision_box = kbed_cbox,
sounds = default.node_sound_wood_defaults(),
on_rotate = screwdriver.disallow,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local inv = digger:get_inventory()
if digger:get_player_control().sneak and inv:room_for_item("main", "bed_"..color.."_regular 1") then
inv:remove_item("main", "homedecor:bed_"..color.."_kingsize 1")
inv:add_item("main", "homedecor:bed_"..color.."_regular 2")
end
end,
on_rightclick = function(pos, node, clicker)
if minetest.get_modpath("beds") then
beds.on_rightclick(pos, clicker)
else return 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
for _, w in pairs({"mahogany", "oak"}) do
homedecor.register("nightstand_"..w.."_one_drawer", {
description = S("Nightstand with One Drawer (@1)", S(w)),
description = S("Nightstand with One Drawer ("..w..")"),
tiles = { 'homedecor_nightstand_'..w..'_tb.png',
'homedecor_nightstand_'..w..'_tb.png^[transformFY',
'homedecor_nightstand_'..w..'_lr.png^[transformFX',
@ -153,7 +170,7 @@ for _, w in pairs({ N_("mahogany"), N_("oak") }) do
type = "fixed",
fixed = {
{ -8/16, 0, -30/64, 8/16, 8/16, 8/16 }, -- top half
{ -7/16, 1/16, -32/64, 7/16, 7/16, -29/64}, -- drawer face
{ -7/16, 1/16, -32/64, 7/16, 7/16, -29/64}, -- drawer face
{ -8/16, -8/16, -30/64, -7/16, 0, 8/16 }, -- left
{ 7/16, -8/16, -30/64, 8/16, 0, 8/16 }, -- right
{ -8/16, -8/16, 7/16, 8/16, 0, 8/16 }, -- back
@ -171,7 +188,7 @@ for _, w in pairs({ N_("mahogany"), N_("oak") }) do
})
homedecor.register("nightstand_"..w.."_two_drawers", {
description = S("Nightstand with Two Drawers (@1)", S(w)),
description = S("Nightstand with Two Drawers ("..w..")"),
tiles = { 'homedecor_nightstand_'..w..'_tb.png',
'homedecor_nightstand_'..w..'_tb.png^[transformFY',
'homedecor_nightstand_'..w..'_lr.png^[transformFX',
@ -196,78 +213,3 @@ for _, w in pairs({ N_("mahogany"), N_("oak") }) do
},
})
end
-- convert to param2 colorization
local bedcolors = {
"black",
"brown",
"blue",
"cyan",
"darkgrey",
"dark_green",
"green",
"grey",
"magenta",
"orange",
"pink",
"red",
"violet",
"white",
"yellow"
}
homedecor.old_bed_nodes = {}
for _, color in ipairs(bedcolors) do
table.insert(homedecor.old_bed_nodes, "homedecor:bed_"..color.."_regular")
table.insert(homedecor.old_bed_nodes, "homedecor:bed_"..color.."_extended")
table.insert(homedecor.old_bed_nodes, "homedecor:bed_"..color.."_kingsize")
end
minetest.register_lbm({
name = "homedecor:convert_beds",
label = "Convert homedecor static bed nodes to use param2 color",
run_at_every_load = 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
})

354
homedecor/books.lua Normal file → Executable file
View File

@ -1,155 +1,158 @@
local S = homedecor.gettext
local S = homedecor_i18n.gettext
local bookcolors = {
{ "red", "#c00000:150" },
{ "green", "#008000:150" },
{ "blue", "#4040c0:150" },
{ "violet", "#600070:150" },
{ "grey", "#202020:150" },
{ "brown", "#603010:175" }
}
local BOOK_FORMNAME = "homedecor:book_form"
local player_current_book = { }
local function book_dig(pos, node, digger)
if minetest.is_protected(pos, digger:get_player_name()) then return end
local meta = minetest.get_meta(pos)
local data = minetest.serialize({
title = meta:get_string("title") or "",
text = meta:get_string("text") or "",
owner = meta:get_string("owner") or "",
_recover = meta:get_string("_recover") or "",
})
local stack = ItemStack({
name = "homedecor:book",
metadata = data,
})
stack = digger:get_inventory():add_item("main", stack)
if not stack:is_empty() then
minetest.item_drop(stack, digger, pos)
end
minetest.remove_node(pos)
end
for c in ipairs(bookcolors) do
local color = bookcolors[c][1]
local color_d = S(bookcolors[c][1])
local hue = bookcolors[c][2]
local inv_img = "homedecor_book_inv.png^homedecor_book_trim_inv.png"
homedecor.register("book", {
description = S("Writable Book"),
mesh = "homedecor_book.obj",
tiles = {
"homedecor_book_cover.png",
{ name = "homedecor_book_edges.png", color = 0xffffffff },
{ name = "homedecor_book_cover_trim.png", color = 0xffffffff }
},
inventory_image = inv_img,
wield_image = inv_img,
groups = { snappy=3, oddly_breakable_by_hand=3, book=1, ud_param2_colorable = 1 },
walkable = false,
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
after_dig_node = unifieddyes.after_dig_node,
stack_max = 1,
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book_open", param2 = fdir })
end,
on_place = function(itemstack, placer, pointed_thing)
local plname = placer:get_player_name()
local pos = pointed_thing.under
local node = minetest.get_node_or_nil(pos)
local def = node and minetest.registered_nodes[node.name]
if not def or not def.buildable_to then
pos = pointed_thing.above
node = minetest.get_node_or_nil(pos)
def = node and minetest.registered_nodes[node.name]
if not def or not def.buildable_to then return itemstack end
end
if minetest.is_protected(pos, plname) then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
minetest.set_node(pos, {
name = "homedecor:book",
param2 = fdir,
local function book_dig(pos, node, digger)
if minetest.is_protected(pos, digger:get_player_name()) then return end
local meta = minetest.get_meta(pos)
local data = minetest.serialize({
title = meta:get_string("title") or "",
text = meta:get_string("text") or "",
owner = meta:get_string("owner") or "",
_recover = meta:get_string("_recover") or "",
})
local text = itemstack:get_metadata() or ""
local meta = minetest.get_meta(pos)
local data = minetest.deserialize(text) or {}
if type(data) ~= "table" then
data = {}
-- Store raw metadata in case some data is lost by the
-- transition to the new meta format, so it is not lost
-- and can be recovered if needed.
meta:set_string("_recover", text)
local stack = ItemStack({
name = "homedecor:book_"..color,
metadata = data,
})
stack = digger:get_inventory():add_item("main", stack)
if not stack:is_empty() then
minetest.item_drop(stack, digger, pos)
end
meta:set_string("title", data.title or "")
meta:set_string("text", data.text or "")
meta:set_string("owner", data.owner or "")
if data.title and data.title ~= "" then
meta:set_string("infotext", data.title)
end
if not homedecor.expect_infinite_stacks then
itemstack:take_item()
end
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
return itemstack
end,
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_dig = book_dig,
selection_box = {
type = "fixed",
fixed = {-0.2, -0.5, -0.25, 0.2, -0.35, 0.25}
}
})
minetest.remove_node(pos)
end
homedecor.register("book_open", {
mesh = "homedecor_book_open.obj",
tiles = {
"homedecor_book_cover.png",
{ name = "homedecor_book_edges.png", color = 0xffffffff },
{ name = "homedecor_book_pages.png", color = 0xffffffff }
},
groups = { snappy=3, oddly_breakable_by_hand=3, not_in_creative_inventory=1, ud_param2_colorable = 1 },
drop = "homedecor:book",
walkable = false,
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
after_place_node = unifieddyes.fix_rotation_nsew,
after_dig_node = unifieddyes.after_dig_node,
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_dig = book_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local meta = minetest.get_meta(pos)
local player_name = clicker:get_player_name()
local title = meta:get_string("title") or ""
local text = meta:get_string("text") or ""
local owner = meta:get_string("owner") or ""
local formspec
if owner == "" or owner == player_name then
formspec = "size[8,8]"..default.gui_bg..default.gui_bg_img..
"field[0.5,1;7.5,0;title;Book title :;"..
minetest.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;text;Book content :;"..
minetest.formspec_escape(text).."]"..
"button_exit[2.5,7.5;3,1;save;Save]"
else
formspec = "size[8,8]"..default.gui_bg..
"button_exit[7,0.25;1,0.5;close;X]"..
default.gui_bg_img..
"label[0.5,0.5;by "..owner.."]"..
"label[0.5,0;"..minetest.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;;"..minetest.formspec_escape(text)..";]"
end
player_current_book[player_name] = pos
minetest.show_formspec(player_name, BOOK_FORMNAME, formspec)
return itemstack
end,
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book", param2 = fdir })
minetest.sound_play("homedecor_book_close", {
pos=pos,
max_hear_distance = 3,
gain = 2,
local inv_img = "homedecor_book_inv.png^[colorize:"..hue.."^homedecor_book_trim_inv.png"
homedecor.register("book_"..color, {
description = S("Writable Book (%s)"):format(color_d),
mesh = "homedecor_book.obj",
tiles = {
"(homedecor_book_cover.png^[colorize:"..hue..")^homedecor_book_cover_trim.png",
"homedecor_book_edges.png"
},
inventory_image = inv_img,
wield_image = inv_img,
groups = { snappy=3, oddly_breakable_by_hand=3, book=1 },
walkable = false,
stack_max = 1,
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book_open_"..color, param2 = fdir })
end,
on_place = function(itemstack, placer, pointed_thing)
local plname = placer:get_player_name()
local pos = pointed_thing.under
local node = minetest.get_node_or_nil(pos)
local def = node and minetest.registered_nodes[node.name]
if not def or not def.buildable_to then
pos = pointed_thing.above
node = minetest.get_node_or_nil(pos)
def = node and minetest.registered_nodes[node.name]
if not def or not def.buildable_to then return itemstack end
end
if minetest.is_protected(pos, plname) then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
minetest.set_node(pos, {
name = "homedecor:book_"..color,
param2 = fdir,
})
end,
selection_box = {
type = "fixed",
fixed = {-0.35, -0.5, -0.25, 0.35, -0.4, 0.25}
}
})
local text = itemstack:get_metadata() or ""
local meta = minetest.get_meta(pos)
local data = minetest.deserialize(text) or {}
if type(data) ~= "table" then
data = {}
-- Store raw metadata in case some data is lost by the
-- transition to the new meta format, so it is not lost
-- and can be recovered if needed.
meta:set_string("_recover", text)
end
meta:set_string("title", data.title or "")
meta:set_string("text", data.text or "")
meta:set_string("owner", data.owner or "")
if data.title and data.title ~= "" then
meta:set_string("infotext", data.title)
end
if not homedecor.expect_infinite_stacks then
itemstack:take_item()
end
return itemstack
end,
on_dig = book_dig,
selection_box = {
type = "fixed",
fixed = {-0.2, -0.5, -0.25, 0.2, -0.35, 0.25}
}
})
homedecor.register("book_open_"..color, {
mesh = "homedecor_book_open.obj",
tiles = {
"(homedecor_book_cover.png^[colorize:"..hue..")^homedecor_book_cover_trim.png",
"homedecor_book_edges.png",
"homedecor_book_pages.png"
},
groups = { snappy=3, oddly_breakable_by_hand=3, not_in_creative_inventory=1 },
drop = "homedecor:book_"..color,
walkable = false,
on_dig = book_dig,
on_rightclick = function(pos, node, clicker)
local meta = minetest.get_meta(pos)
local player_name = clicker:get_player_name()
local title = meta:get_string("title") or ""
local text = meta:get_string("text") or ""
local owner = meta:get_string("owner") or ""
local formspec
if owner == "" or owner == player_name then
formspec = "size[8,8]"..default.gui_bg..default.gui_bg_img..
"field[0.5,1;7.5,0;title;Book title :;"..
minetest.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;text;Book content :;"..
minetest.formspec_escape(text).."]"..
"button_exit[2.5,7.5;3,1;save;Save]"
else
formspec = "size[8,8]"..default.gui_bg..
"button_exit[7,0.25;1,0.5;close;X]"..
default.gui_bg_img..
"label[0.5,0.5;by "..owner.."]"..
"label[0.5,0;"..minetest.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;;"..minetest.formspec_escape(text)..";]"
end
player_current_book[player_name] = pos
minetest.show_formspec(player_name, BOOK_FORMNAME, formspec)
end,
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book_"..color, param2 = fdir })
minetest.sound_play("homedecor_book_close", {
pos=pos,
max_hear_distance = 3,
gain = 2,
})
end,
selection_box = {
type = "fixed",
fixed = {-0.35, -0.5, -0.25, 0.35, -0.4, 0.25}
}
})
end
minetest.register_on_player_receive_fields(function(player, form_name, fields)
if form_name ~= BOOK_FORMNAME or not fields.save then
@ -165,71 +168,6 @@ minetest.register_on_player_receive_fields(function(player, form_name, fields)
if (fields.title or "") ~= "" then
meta:set_string("infotext", fields.title)
end
minetest.log("action", S("@1 has written in a book (title: \"@2\"): \"@3\" at location @4",
player:get_player_name(), fields.title, fields.text, minetest.pos_to_string(player:getpos())))
minetest.log("action", player:get_player_name().." has written in a book (title: \""..fields.title.."\"): \""..fields.text..
"\" at location: "..minetest.pos_to_string(player:getpos()))
end)
-- convert old static nodes to param2
local bookcolors = {
"red",
"green",
"blue",
"violet",
"grey",
"brown"
}
homedecor.old_static_books = {}
for _, color in ipairs(bookcolors) do
table.insert(homedecor.old_static_books, "homedecor:book_"..color)
table.insert(homedecor.old_static_books, "homedecor:book_open_"..color)
end
minetest.register_lbm({
name = "homedecor:convert_books",
label = "Convert homedecor books to use param2 color",
run_at_every_load = false,
nodenames = homedecor.old_static_books,
action = function(pos, node)
local name = node.name
local color = string.sub(name, string.find(name, "_", -7)+1)
local newname = "homedecor:book"
if string.find(name, "open") then
newname = "homedecor:book_open"
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
if color == "grey" then
color = "dark_grey"
elseif color == "violet" then
color = "dark_magenta"
elseif color == "brown" then
color = "dark_orange"
elseif color == "blue" then
color = "light_blue"
else
color = "medium_"..color
end
local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
local param2 = paletteidx + new_fdir
minetest.swap_node(pos, { name = newname, param2 = param2 })
local meta = minetest.get_meta(pos)
meta:set_string("dye", "unifieddyes:"..color)
end
})

80
homedecor/climate-control.lua Normal file → Executable file
View File

@ -1,6 +1,6 @@
-- Nodes that would affect the local temperature e.g. fans, heater, A/C
local S = homedecor_i18n.gettext
local S = homedecor.gettext
homedecor.register("air_conditioner", {
description = S("Air Conditioner"),
@ -24,24 +24,8 @@ minetest.register_entity("homedecor:mesh_desk_fan", {
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", {
description = S("Desk Fan"),
description = "Desk Fan",
groups = {oddly_breakable_by_hand=2},
node_box = {
type = "fixed",
@ -55,25 +39,55 @@ homedecor.register("desk_fan", {
selection_box = { type = "regular" },
on_rotate = screwdriver.disallow,
on_construct = function(pos)
local entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
local meta = minetest.get_meta(pos)
meta:set_string("active", "no")
add_mesh_desk_fan_entity(pos)
if entity_remove[1] == nil then
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,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local meta = minetest.get_meta(pos)
local entities = minetest.get_objects_inside_radius(pos, 0.1)
local entity = entities[1] or add_mesh_desk_fan_entity(pos)
if meta:get_string("active") == "no" then
meta:set_string("active", "yes")
entity:set_animation({x=0,y=96}, 24, 0)
else
meta:set_string("active", "no")
entity:set_animation({x=0,y=0}, 1, 0)
on_punch = function(pos)
local entity_anim = minetest.get_objects_inside_radius(pos, 0.1)
local speedy_meta = minetest.get_meta(pos)
if speedy_meta:get_string("active") == "no" then
speedy_meta:set_string("active", "yes")
elseif speedy_meta:get_string("active") == "yes" then
speedy_meta:set_string("active", "no")
end
if entity_anim[1] == nil then
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,
after_dig_node = function(pos)
local entities = minetest.get_objects_inside_radius(pos, 0.1)
if entities[1] then entities[1]:remove() end
local entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
entity_remove[1]:remove()
end,
})
@ -132,11 +146,11 @@ local r_cbox = homedecor.nodebox.slab_z(-0.25)
homedecor.register("radiator", {
mesh = "homedecor_radiator.obj",
tiles = {
"homedecor_generic_metal.png",
"homedecor_generic_metal_black.png^[colorize:#ffffff:200",
"homedecor_radiator_controls.png"
},
inventory_image = "homedecor_radiator_inv.png",
description = S("Radiator heater"),
description = "Radiator heater",
groups = {snappy=3},
selection_box = r_cbox,
collision_box = r_cbox,

28
homedecor/clocks.lua Normal file → Executable file
View File

@ -1,27 +1,25 @@
local S = homedecor_i18n.gettext
local clock_sbox = {
type = "fixed",
fixed = { -8/32, -8/32, 14/32, 8/32, 8/32, 16/32 }
}
local clock_materials = {
{ "plastic", S("Plastic analog clock"), "homedecor_generic_plastic.png" },
{ "wood", S("Wooden analog clock"), "default_wood.png" }
{ "plastic", "homedecor_generic_plastic_black.png^[colorize:#ffffff:220" },
{ "wood", "default_wood.png" }
}
for _, mat in ipairs(clock_materials) do
local name, desc, tex = unpack(mat)
homedecor.register("analog_clock_"..name, {
description = desc,
for i in ipairs(clock_materials) do
local m1 = clock_materials[i][1]
local m2 = clock_materials[i][2]
homedecor.register("analog_clock_"..m1, {
description = "Analog clock ("..m1..")",
mesh = "homedecor_analog_clock.obj",
tiles = {
"homedecor_analog_clock_face.png",
tex,
m2,
"homedecor_analog_clock_back.png"
},
inventory_image = "homedecor_analog_clock_"..name.."_inv.png",
inventory_image = "homedecor_analog_clock_"..m1.."_inv.png",
walkable = false,
selection_box = clock_sbox,
groups = {snappy=3},
@ -30,7 +28,7 @@ for _, mat in ipairs(clock_materials) do
end
homedecor.register("digital_clock", {
description = S("Digital clock"),
description = "Digital clock",
tiles = {
"homedecor_digital_clock_edges.png",
"homedecor_digital_clock_edges.png",
@ -52,7 +50,7 @@ homedecor.register("digital_clock", {
})
homedecor.register("alarm_clock", {
description = S("Alarm clock"),
description = "Alarm clock",
tiles = {
"homedecor_alarm_clock_top.png",
"homedecor_alarm_clock_bottom.png",
@ -79,12 +77,12 @@ local gf_cbox = {
}
homedecor.register("grandfather_clock", {
description = S("Grandfather Clock"),
description = "Grandfather Clock",
mesh = "homedecor_grandfather_clock.obj",
tiles = {
"default_glass.png",
"homedecor_grandfather_clock_face.png",
homedecor.lux_wood,
"homedecor_generic_wood_luxury.png",
"homedecor_grandfather_clock_face_edge.png",
"homedecor_generic_metal_brass.png"
},

11
homedecor/cobweb.lua Normal file → Executable file
View File

@ -1,8 +1,5 @@
local S = homedecor_i18n.gettext
minetest.register_node("homedecor:cobweb_corner", {
description = S("Cobweb"),
description = "Cobweb",
drawtype = "torchlike",
tiles = { "homedecor_cobweb_torchlike.png" },
inventory_image = "homedecor_cobweb.png",
@ -26,7 +23,7 @@ minetest.register_node("homedecor:cobweb_corner", {
})
minetest.register_node("homedecor:cobweb_centered", {
description = S("Cobweb"),
description = "Cobweb",
drawtype = "nodebox",
tiles = { "homedecor_cobweb.png" },
inventory_image = "homedecor_cobweb.png",
@ -53,7 +50,7 @@ minetest.register_node("homedecor:cobweb_centered", {
})
minetest.register_node("homedecor:cobweb_flat", {
description = S("Cobweb"),
description = "Cobweb",
drawtype = "nodebox",
tiles = { "homedecor_cobweb.png" },
inventory_image = "homedecor_cobweb.png",
@ -80,7 +77,7 @@ minetest.register_node("homedecor:cobweb_flat", {
})
minetest.register_node("homedecor:cobweb_plantlike", {
description = S("Cobweb"),
description = "Cobweb",
drawtype = "plantlike",
tiles = { "homedecor_cobweb_plantlike.png" },
inventory_image = "homedecor_cobweb.png",

0
homedecor/copyright.txt Normal file → Executable file
View File

609
homedecor/crafts.lua Normal file → Executable file

File diff suppressed because it is too large Load Diff

3
homedecor/depends.txt Normal file → Executable file
View File

@ -1,12 +1,11 @@
default
unifieddyes
homedecor_i18n
building_blocks?
signs_lib?
moreblocks?
technic?
dye?
bees?
intllib?
bucket?
beds?
flowers?

128
homedecor/doors_and_gates.lua Normal file → Executable file
View File

@ -1,13 +1,11 @@
-- Node definitions for Homedecor doors
local S = homedecor_i18n.gettext
local function N_(x) return x end
local S = homedecor.gettext
-- doors
local function isSolid(pos, adjust)
local adj = {x = adjust[1], y = adjust[2], z = adjust[3]}
local function isSolid(pos,adj)
local adj = {x=adj[1],y=adj[2],z=adj[3]}
local node = minetest.get_node(vector.add(pos,adj))
if node then
local idef = minetest.registered_nodes[minetest.get_node(vector.add(pos,adj)).name]
@ -44,12 +42,14 @@ local function calculateClosed(pos)
local node = minetest.get_node(pos)
-- the door is considered closed if it is closing off something.
local solids = 0
local direction = node.param2 % 6
local isTrap = direction == 0 or direction == 5
if isTrap then
-- 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
for level = 0, 1 do
local fail = false
local solids = countSolids(pos,node,level)
if solids == 8 then
return true
@ -99,6 +99,7 @@ local function calculateClosed(pos)
end
return false
end
error("What direction is this???",direction)
end
end
@ -121,17 +122,17 @@ end
local door_model_list = {
{ name = "closet_mahogany",
description = N_("Mahogany Closet Door (@1 opening)"),
description = S("Mahogany Closet Door"),
mesh = "homedecor_door_closet.obj"
},
{ name = "closet_oak",
description = N_("Oak Closet Door (@1 opening)"),
description = S("Oak Closet Door"),
mesh = "homedecor_door_closet.obj"
},
{ name = "exterior_fancy",
description = N_("Fancy Wood/Glass Door (@1 opening)"),
description = S("Fancy Wood/Glass Door"),
mesh = "homedecor_door_fancy.obj",
tiles = {
"homedecor_door_exterior_fancy.png",
@ -141,12 +142,12 @@ local door_model_list = {
},
{ name = "glass",
description = N_("Glass Office Door (@1 opening)"),
description = S("Glass Office Door"),
mesh = "homedecor_door_plain.obj"
},
{ name = "wood_glass_oak",
description = N_("Glass and Wood, Oak-colored (@1 opening)"),
description = S("Glass and Wood, Oak-colored"),
mesh = "homedecor_door_wood_glass.obj",
tiles = {
"homedecor_door_wood_glass_oak.png",
@ -155,7 +156,7 @@ local door_model_list = {
},
{ name = "wood_glass_mahogany",
description = N_("Glass and Wood, Mahogany-colored (@1 opening)"),
description = S("Glass and Wood, Mahogany-colored"),
mesh = "homedecor_door_wood_glass.obj",
tiles = {
"homedecor_door_wood_glass_mahogany.png",
@ -164,7 +165,7 @@ local door_model_list = {
},
{ name = "wood_glass_white",
description = N_("Glass and Wood, White (@1 opening)"),
description = S("Glass and Wood, White"),
mesh = "homedecor_door_wood_glass.obj",
tiles = {
"homedecor_door_wood_glass_white.png",
@ -173,22 +174,22 @@ local door_model_list = {
},
{ name = "wood_plain",
description = N_("Plain Wooden Door (@1 opening)"),
description = S("Plain Wooden Door"),
mesh = "homedecor_door_plain.obj"
},
{ name = "bedroom",
description = N_("White Bedroom Door (@1 opening)"),
description = S("White Bedroom Door"),
mesh = "homedecor_door_plain.obj"
},
{ name = "wrought_iron",
description = N_("Wrought Iron Gate/Door (@1 opening)"),
description = S("Wrought Iron Gate/Door"),
mesh = "homedecor_door_wrought_iron.obj"
},
{ name = "woodglass",
description = N_("Wooden door with glass insert (@1 opening)"),
description = S("Wooden door with glass insert"),
mesh = "homedecor_door_woodglass_typea.obj",
tiles = {
"homedecor_door_woodglass_typea.png",
@ -198,7 +199,7 @@ local door_model_list = {
},
{ name = "woodglass2",
description = N_("Wooden door with glass insert, type 2 (@1 opening)"),
description = S("Wooden door with glass insert, type 2"),
mesh = "homedecor_door_plain.obj",
usealpha = true
},
@ -209,9 +210,10 @@ local def_selbox = {
fixed = { -0.5, -0.5, 0.375, 0.5, 1.5, 0.5 }
}
local sides = { N_("left"), N_("right") }
local sides = {"left", "right"}
for i, side in ipairs(sides) do
for i in ipairs(sides) do
local side = sides[i]
for _, door_model in ipairs(door_model_list) do
@ -228,7 +230,7 @@ for i, side in ipairs(sides) do
end
minetest.register_node("homedecor:door_"..doorname.."_"..side, {
description = S(door_model.description, S(side)),
description = door_model.description.." "..S("(%s-opening)"):format(side),
drawtype = "mesh",
mesh = mesh,
tiles = door_model.tiles or { "homedecor_door_"..doorname..".png" },
@ -250,9 +252,8 @@ for i, side in ipairs(sides) do
on_construct = function(pos)
minetest.get_meta(pos):set_int("closed", 1)
end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_rightclick = function(pos, node, clicker)
homedecor.flip_door(pos, node, clicker, doorname, side)
return itemstack
end,
-- both left and right doors may be used for open or closed doors
-- so they have to have both action_on and action_off and just
@ -292,14 +293,8 @@ end
-- Gates
local gate_list = {
{ "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 gates_list = { "picket", "picket_white", "barbed_wire", "chainlink" }
local gate_names = { "Unpainted Picket", "White Picket", "Barbed Wire", "Chainlink" }
local gate_models_closed = {
{{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }},
@ -307,22 +302,17 @@ local gate_models_closed = {
{{ -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
{ 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, -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
{{ -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, -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, -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
{ -8/16, -3/16, 6/16, -6/16, 3/16, 8/16 }} -- the lump representing the lock
}
local gate_models_open = {
@ -331,26 +321,22 @@ local gate_models_open = {
{{ 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, 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, -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
{{ 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, -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
{ 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
{ 6/16, -3/16, -8/16, 8/16, 3/16, -6/16 }} -- the lump representing the lock
}
for i, g in ipairs(gate_list) do
for i in ipairs(gates_list) do
local gate, gatedesc = unpack(g)
local gate=gates_list[i]
local tiles = {
"homedecor_gate_"..gate.."_tb.png",
@ -385,7 +371,7 @@ for i, g in ipairs(gate_list) do
local def = {
drawtype = "nodebox",
description = gatedesc,
description = S(gate_names[i].." Fence Gate"),
tiles = tiles,
paramtype = "light",
groups = {snappy=3},
@ -399,13 +385,12 @@ for i, g in ipairs(gate_list) do
type = "fixed",
fixed = gate_models_closed[i]
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_rightclick = function(pos, node, clicker)
homedecor.flip_gate(pos, node, clicker, gate, "closed")
return itemstack
end,
mesecons = {
effector = {
action_on = function(pos,node) homedecor.flip_gate(pos,node,nil,gate, "closed") end
action_on = function(pos,node) homedecor.flip_gate(pos,node,player,gate, "closed") end
}
}
}
@ -420,20 +405,19 @@ for i, g in ipairs(gate_list) do
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.tiles = {
tiles[1].."^[transformR90",
tiles[2].."^[transformR270",
tiles[1],
tiles[2],
tiles[6],
tiles[5],
tiles[4],
tiles[3]
}
def.drop = "homedecor:gate_"..gate.."_closed"
def.on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
def.on_rightclick = function(pos, node, clicker)
homedecor.flip_gate(pos, node, clicker, gate, "open")
return itemstack
end
def.mesecons.effector = {
action_off = function(pos,node) homedecor.flip_gate(pos,node,nil,gate, "open") end
action_off = function(pos,node) homedecor.flip_gate(pos,node,player,gate, "open") end
}
minetest.register_node("homedecor:gate_"..gate.."_open", def)
@ -461,8 +445,8 @@ function homedecor.flip_door(pos, node, player, name, side, isClosed)
-- and if not isClosed, a closed door
isClosed = not isClosed
local rside
local nfdir
local rside = nil
local nfdir = nil
local ofdir = node.param2 or 0
if side == "left" then
rside = "right"
@ -498,7 +482,7 @@ function homedecor.flip_gate(pos, node, player, gate, oc)
-- since right facing gates use "open" nodes for closed, we need an
-- isClosed flag to tell if it's "really" closed.
local gateresult
local gateresult = nil
if oc == "closed" then
gateresult = "homedecor:gate_"..gate.."_open"
else
@ -534,11 +518,11 @@ local jp_cbox = {
}
minetest.register_node("homedecor:japanese_wall_top", {
description = S("Japanese wall (top)"),
description = "Japanese wall (top)",
drawtype = "mesh",
mesh = "homedecor_wall_japanese_top.obj",
tiles = {
homedecor.lux_wood,
"homedecor_generic_wood_luxury.png",
"homedecor_japanese_paper.png"
},
paramtype = "light",
@ -550,11 +534,11 @@ minetest.register_node("homedecor:japanese_wall_top", {
})
minetest.register_node("homedecor:japanese_wall_middle", {
description = S("Japanese wall"),
description = "Japanese wall",
drawtype = "mesh",
mesh = "homedecor_wall_japanese_middle.obj",
tiles = {
homedecor.lux_wood,
"homedecor_generic_wood_luxury.png",
"homedecor_japanese_paper.png"
},
paramtype = "light",
@ -566,11 +550,11 @@ minetest.register_node("homedecor:japanese_wall_middle", {
})
minetest.register_node("homedecor:japanese_wall_bottom", {
description = S("Japanese wall (bottom)"),
description = "Japanese wall (bottom)",
drawtype = "mesh",
mesh = "homedecor_wall_japanese_bottom.obj",
tiles = {
homedecor.lux_wood,
"homedecor_generic_wood_luxury.png",
"homedecor_japanese_paper.png"
},
paramtype = "light",
@ -590,7 +574,7 @@ minetest.register_node("homedecor:tatami_mat", {
"homedecor_tatami.png",
"homedecor_tatami.png"
},
description = S("Japanese tatami"),
description = "Japanese tatami",
drawtype = "nodebox",
paramtype = "light",
groups = {snappy=3},
@ -603,10 +587,10 @@ minetest.register_node("homedecor:tatami_mat", {
})
homedecor.register("door_japanese_closed", {
description = S("Japanese-style door"),
description = "Japanese-style door",
inventory_image = "homedecor_door_japanese_inv.png",
tiles = {
homedecor.lux_wood,
"homedecor_generic_wood_luxury.png",
"homedecor_japanese_paper.png"
},
mesh = "homedecor_door_japanese_closed.obj",
@ -621,15 +605,14 @@ homedecor.register("door_japanese_closed", {
fixed = {-0.5, -0.5, -0.0625, 0.5, 1.5, 0},
},
expand = { top = "placeholder" },
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_rightclick = function(pos, node, clicker)
minetest.set_node(pos, {name = "homedecor:door_japanese_open", param2 = node.param2})
return itemstack
end
})
homedecor.register("door_japanese_open", {
tiles = {
homedecor.lux_wood,
"homedecor_generic_wood_luxury.png",
"homedecor_japanese_paper.png"
},
mesh = "homedecor_door_japanese_open.obj",
@ -645,9 +628,8 @@ homedecor.register("door_japanese_open", {
fixed = {-1.5, -0.5, -0.0625, -0.5, 1.5, 0},
},
expand = { top = "placeholder" },
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_rightclick = function(pos, node, clicker)
minetest.set_node(pos, {name = "homedecor:door_japanese_closed", param2 = node.param2})
return itemstack
end,
drop = "homedecor:door_japanese_closed",
})

11
homedecor/electrics.lua Normal file → Executable file
View File

@ -1,8 +1,5 @@
local S = homedecor_i18n.gettext
homedecor.register("power_outlet", {
description = S("Power Outlet"),
description = "Power Outlet",
tiles = {
"homedecor_outlet_edges.png",
"homedecor_outlet_edges.png",
@ -29,7 +26,7 @@ homedecor.register("power_outlet", {
})
homedecor.register("light_switch", {
description = S("Light switch"),
description = "Light switch",
tiles = {
"homedecor_light_switch_edges.png",
"homedecor_light_switch_edges.png",
@ -61,7 +58,7 @@ homedecor.register("light_switch", {
homedecor.register("doorbell", {
tiles = { "homedecor_doorbell.png" },
inventory_image = "homedecor_doorbell_inv.png",
description = S("Doorbell"),
description = "Doorbell",
groups = {snappy=3},
walkable = false,
node_box = {
@ -71,7 +68,7 @@ homedecor.register("doorbell", {
{-0.03125, 0.0625, 0.45, 0.03125, 0.125, 0.4675}, -- NodeBox2
}
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_punch = function(pos, node, puncher, pointed_thing)
minetest.sound_play("homedecor_doorbell", {
pos = pos,
gain = 1.0,

18
homedecor/electronics.lua Normal file → Executable file
View File

@ -1,6 +1,6 @@
-- Various home electronics
local S = homedecor_i18n.gettext
local S = homedecor.gettext
homedecor.register("speaker", {
description = S("Large Stereo Speaker"),
@ -11,7 +11,7 @@ homedecor.register("speaker", {
},
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_punch = function(pos, node, puncher, pointed_thing)
minetest.set_node(pos, {name = "homedecor:speaker_open", param2 = node.param2})
end
})
@ -23,11 +23,11 @@ homedecor.register("speaker_open", {
"homedecor_speaker_sides.png",
"homedecor_speaker_driver.png",
"homedecor_speaker_open_front.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_black }
"homedecor_generic_metal_black.png"
},
groups = { snappy = 3, not_in_creative_inventory=1 },
sounds = default.node_sound_wood_defaults(),
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_punch = function(pos, node, puncher, pointed_thing)
minetest.set_node(pos, {name = "homedecor:speaker", param2 = node.param2})
end
})
@ -135,7 +135,7 @@ homedecor.register("telephone", {
"homedecor_telephone_cord.png",
},
inventory_image = "homedecor_telephone_inv.png",
description = S("Telephone"),
description = "Telephone",
groups = {snappy=3},
selection_box = tel_cbox,
walkable = false,
@ -149,9 +149,9 @@ minetest.register_abm({
chance = 15,
action = function(pos, node)
minetest.sound_play("homedecor_telephone_ringing", {
pos = pos,
gain = 1.0,
max_hear_distance = 5
})
pos = pos,
gain = 1.0,
max_hear_distance = 5
})
end
})

64
homedecor/exterior.lua Normal file → Executable file
View File

@ -1,7 +1,4 @@
local S = homedecor_i18n.gettext
local function N_(x) return x end
local S = homedecor.gettext
local bbq_cbox = {
type = "fixed",
@ -9,11 +6,11 @@ local bbq_cbox = {
}
homedecor.register("barbecue", {
description = S("Barbecue"),
description = "Barbecue",
mesh = "homedecor_barbecue.obj",
tiles = {
{ name = "homedecor_generic_metal.png" , color = homedecor.color_black },
{ name = "homedecor_embers.png",
"homedecor_generic_metal_black.png",
{ name="homedecor_embers.png",
animation={
type="vertical_frames",
aspect_w=16,
@ -53,7 +50,7 @@ homedecor.register("bench_large_1", {
"homedecor_generic_wood_old.png",
"homedecor_generic_metal_wrought_iron.png"
},
description = S("Garden Bench (style 1)"),
description = "Garden Bench (style 1)",
inventory_image = "homedecor_bench_large_1_inv.png",
groups = { snappy = 3 },
expand = { right="placeholder" },
@ -80,7 +77,7 @@ local bl2_cbox = {
}
homedecor.register("bench_large_2", {
description = S("Garden Bench (style 2)"),
description = "Garden Bench (style 2)",
mesh = "homedecor_bench_large_2.obj",
tiles = { "homedecor_generic_wood_old.png" },
inventory_image = "homedecor_bench_large_2_inv.png",
@ -103,7 +100,7 @@ local dc_cbox = {
homedecor.register("deckchair", {
mesh = "homedecor_deckchair.obj",
tiles = {"homedecor_deckchair.png"},
description = S("Deck Chair"),
description = "Deck Chair",
groups = { snappy = 3 },
expand = { forward="placeholder" },
sounds = default.node_sound_wood_defaults(),
@ -118,7 +115,7 @@ minetest.register_alias("homedecor:deckchair_head", "air")
homedecor.register("deckchair_striped_blue", {
mesh = "homedecor_deckchair.obj",
tiles = {"homedecor_deckchair_striped_blue.png"},
description = S("Deck Chair"),
description = "Deck Chair",
groups = { snappy = 3 },
expand = { forward="placeholder" },
sounds = default.node_sound_wood_defaults(),
@ -134,7 +131,7 @@ homedecor.register("doghouse", {
"default_wood.png",
"building_blocks_towel.png"
},
description = S("Doghouse"),
description = "Doghouse",
inventory_image = "homedecor_doghouse_inv.png",
selection_box = homedecor.nodebox.slab_y(1.5),
collision_box = homedecor.nodebox.slab_y(1.5),
@ -149,7 +146,7 @@ minetest.register_alias("homedecor:doghouse_base", "homedecor:doghouse")
homedecor.register("simple_bench", {
tiles = { "homedecor_generic_wood_old.png" },
description = S("Simple Bench"),
description = "Simple Bench",
groups = {snappy=3},
node_box = {
type = "fixed",
@ -163,7 +160,7 @@ homedecor.register("simple_bench", {
})
homedecor.register("stonepath", {
description = S("Garden stone path"),
description = "Garden stone path",
tiles = {
"default_stone.png"
},
@ -190,20 +187,17 @@ homedecor.register("stonepath", {
})
local lattice_colors = {
{ "wood", S("wood"), ".png^[colorize:#704214:180" },
{ "white_wood", S("white wood"), ".png" },
{ "wood_vegetal", S("wood, with vegetation"),
".png^[colorize:#704214:180^homedecor_lattice_vegetal.png" },
{ "white_wood_vegetal", S("white wood, with vegetation"),
".png^homedecor_lattice_vegetal.png" },
{"wood", ".png^[colorize:#704214:180"},
{"white_wood", ".png"},
{"wood_vegetal", ".png^[colorize:#704214:180^homedecor_lattice_vegetal.png"},
{"white_wood_vegetal", ".png^homedecor_lattice_vegetal.png"},
}
for _, c in ipairs(lattice_colors) do
local name, desc, texture = unpack(c)
homedecor.register("lattice_"..name, {
description = S("Garden Lattice (@1)", desc),
tiles = {"homedecor_lattice"..texture},
inventory_image = "homedecor_lattice"..texture,
for _, m in ipairs(lattice_colors) do
homedecor.register("lattice_"..m[1], {
description = "Garden Lattice ("..m[1]..")",
tiles = {"homedecor_lattice"..m[2]},
inventory_image = "homedecor_lattice"..m[2],
groups = { snappy=3 },
node_box = {
type = "fixed",
@ -224,7 +218,7 @@ homedecor.register("lattice_"..name, {
end
homedecor.register("swing", {
description = S("Tree's swing"),
description = "Tree's swing",
tiles = {
"homedecor_swing_top.png",
"homedecor_swing_top.png^[transformR180",
@ -274,6 +268,8 @@ homedecor.register("swing", {
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
for j = 0, height do -- then fill that space with ropes...
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 })
end
@ -319,14 +315,14 @@ homedecor.register("well", {
mesh = "homedecor_well.obj",
tiles = {
"homedecor_rope_texture.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"homedecor_generic_metal_black.png^[brighten",
"default_water.png",
"default_cobble.png",
"default_wood.png",
"homedecor_shingles_wood.png"
},
inventory_image = "homedecor_well_inv.png",
description = S("Water well"),
description = "Water well",
groups = { snappy = 3 },
selection_box = homedecor.nodebox.slab_y(2),
collision_box = homedecor.nodebox.slab_y(2),
@ -358,16 +354,16 @@ if minetest.get_modpath("bucket") then
end
homedecor.shrub_colors = {
N_("green"),
N_("red"),
N_("yellow"),
"green",
"red",
"yellow"
}
local shrub_cbox = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
for _, color in ipairs(homedecor.shrub_colors) do
minetest.register_node("homedecor:shrubbery_large_"..color, {
description = S("Shrubbery (@1)", S(color)),
description = S("Shrubbery ("..color..")"),
drawtype = "mesh",
mesh = "homedecor_cube.obj",
tiles = {"homedecor_shrubbery_"..color..".png"},
@ -378,7 +374,7 @@ for _, color in ipairs(homedecor.shrub_colors) do
})
minetest.register_node("homedecor:shrubbery_"..color, {
description = S("Shrubbery (@1)", S(color)),
description = S("Shrubbery ("..color..")"),
drawtype = "mesh",
mesh = "homedecor_shrubbery.obj",
tiles = {

39
homedecor/fences.lua Normal file → Executable file
View File

@ -14,22 +14,16 @@ if signs_modpath then
sign_post_model = signs_lib.sign_post_model.nodebox
end
local S = homedecor_i18n.gettext
local materials = {
{ S("brass"), "brass" },
{ S("wrought iron"), "wrought_iron" },
}
local S = homedecor.gettext
local materials = {"brass", "wrought_iron"}
for _, m in ipairs(materials) do
local desc, name = unpack(m)
homedecor.register("fence_"..name, {
description = S("Fence/railing (@1)", desc),
homedecor.register("fence_"..m, {
description = S("Fence/railing ("..m..")"),
drawtype = "fencelike",
tiles = {"homedecor_generic_metal_"..name..".png"},
inventory_image = "homedecor_fence_"..name..".png",
tiles = {"homedecor_generic_metal_"..m..".png"},
inventory_image = "homedecor_fence_"..m..".png",
selection_box = homedecor.nodebox.bar_y(1/7),
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
@ -37,17 +31,17 @@ homedecor.register("fence_"..name, {
-- brass/wrought iron with signs:
homedecor.register("fence_"..name.."_with_sign", {
description = S("Fence/railing with sign (@1)", desc),
homedecor.register("fence_"..m.."_with_sign", {
description = S("Fence/railing with sign ("..m..")"),
tiles = {
"homedecor_sign_"..name.."_post_top.png",
"homedecor_sign_"..name.."_post_bottom.png",
"homedecor_sign_"..name.."_post_side.png",
"homedecor_sign_"..name.."_post_side.png",
"homedecor_sign_"..name.."_post_back.png",
"homedecor_sign_"..name.."_post_front.png",
"homedecor_sign_"..m.."_post_top.png",
"homedecor_sign_"..m.."_post_bottom.png",
"homedecor_sign_"..m.."_post_side.png",
"homedecor_sign_"..m.."_post_side.png",
"homedecor_sign_"..m.."_post_back.png",
"homedecor_sign_"..m.."_post_front.png",
},
wield_image = "homedecor_sign_"..name.."_post.png",
wield_image = "homedecor_sign_"..m.."_post.png",
node_box = sign_post_model,
groups = {snappy=3,not_in_creative_inventory=1},
sounds = default.node_sound_wood_defaults(),
@ -56,7 +50,7 @@ homedecor.register("fence_"..name.."_with_sign", {
max_items = 2,
items = {
{ items = { "default:sign_wall" }},
{ items = { "homedecor:fence_"..name }},
{ items = { "homedecor:fence_"..m }},
},
},
})
@ -307,3 +301,4 @@ 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_wrought_iron", "homedecor:fence_wrought_iron_with_sign")
end

18
homedecor/foyer.lua Normal file → Executable file
View File

@ -1,10 +1,9 @@
local S = homedecor_i18n.gettext
local S = homedecor.gettext
homedecor.register("coatrack_wallmount", {
tiles = { homedecor.plain_wood },
inventory_image = "homedecor_coatrack_wallmount_inv.png",
description = S("Wall-mounted coat rack"),
description = "Coatrack (wallmounted)",
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
node_box = {
@ -30,7 +29,7 @@ homedecor.register("coat_tree", {
"homedecor_generic_wood_old.png"
},
inventory_image = "homedecor_coatrack_inv.png",
description = S("Coat tree"),
description = "Coat tree",
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
expand = { top="placeholder" },
@ -42,16 +41,9 @@ homedecor.register("coat_tree", {
on_rotate = screwdriver.rotate_simple
})
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)
for _, color in pairs({ "green", "brown", "grey" }) do
homedecor.register("welcome_mat_"..color, {
description = desc,
description = "Welcome Mat ("..color..")",
tiles = {
"homedecor_welcome_mat_"..color..".png",
"homedecor_welcome_mat_bottom.png",

218
homedecor/furniture.lua Normal file → Executable file
View File

@ -1,18 +1,21 @@
local S = homedecor_i18n.gettext
local S = homedecor.gettext
local table_colors = {
{ "", S("Table"), homedecor.plain_wood },
{ "_mahogany", S("Mahogany Table"), homedecor.mahogany_wood },
{ "_white", S("White Table"), homedecor.white_wood }
{ "", homedecor.plain_wood },
{ "_mahogany", homedecor.mahogany_wood },
{ "_white", homedecor.white_wood }
}
for _, t in ipairs(table_colors) do
local suffix, desc, texture = unpack(t)
for i in ipairs(table_colors) do
local desc = S("Table ("..i..")")
homedecor.register("table"..suffix, {
if i == 1 then
desc = S("Table")
end
homedecor.register("table"..table_colors[i][1], {
description = desc,
tiles = { texture },
tiles = { table_colors[i][2] },
node_box = {
type = "fixed",
fixed = {
@ -32,6 +35,16 @@ for _, t in ipairs(table_colors) do
})
end
local chaircolors = {
{ "", "plain" },
{ "black", "Black" },
{ "red", "Red" },
{ "pink", "Pink" },
{ "violet", "Violet" },
{ "blue", "Blue" },
{ "dark_green", "Dark Green" },
}
local kc_cbox = {
type = "fixed",
fixed = { -0.3125, -0.5, -0.3125, 0.3125, 0.5, 0.3125 },
@ -45,70 +58,62 @@ local ac_cbox = {
}
}
homedecor.register("kitchen_chair_wood", {
description = S("Kitchen chair"),
mesh = "homedecor_kitchen_chair.obj",
tiles = {
homedecor.plain_wood,
homedecor.plain_wood
},
inventory_image = "homedecor_chair_wood_inv.png",
paramtype2 = "wallmounted",
selection_box = kc_cbox,
collision_box = kc_cbox,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
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
})
for i in ipairs(chaircolors) do
homedecor.register("kitchen_chair_padded", {
description = S("Kitchen chair"),
mesh = "homedecor_kitchen_chair.obj",
tiles = {
local color = "_"..chaircolors[i][1]
local color2 = chaircolors[i][1]
local name = S(chaircolors[i][2])
local chairtiles = {
homedecor.plain_wood,
"wool_white.png",
},
inventory_image = "homedecor_chair_padded_inv.png",
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
selection_box = kc_cbox,
collision_box = kc_cbox,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, ud_param2_colorable = 1},
sounds = default.node_sound_wood_defaults(),
after_place_node = unifieddyes.fix_rotation_nsew,
after_dig_node = unifieddyes.after_dig_node,
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
})
"wool"..color..".png",
}
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 = unifieddyes.fix_rotation_nsew,
after_dig_node = unifieddyes.after_dig_node,
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
})
if chaircolors[i][1] == "" then
color = ""
chairtiles = {
homedecor.plain_wood,
homedecor.plain_wood
}
end
homedecor.register("chair"..color, {
description = S("Kitchen chair (%s)"):format(name),
mesh = "homedecor_kitchen_chair.obj",
tiles = chairtiles,
selection_box = kc_cbox,
collision_box = kc_cbox,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(),
on_rightclick = function(pos, node, clicker)
pos.y = pos.y+0 -- where do I put my ass ?
homedecor.sit(pos, node, clicker)
end
})
if color ~= "" then
homedecor.register("armchair"..color, {
description = S("Armchair (%s)"):format(name),
mesh = "forniture_armchair.obj",
tiles = {
"wool"..color..".png",
"wool_dark_grey.png",
"default_wood.png"
},
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
node_box = ac_cbox
})
minetest.register_craft({
output = "homedecor:armchair"..color.." 2",
recipe = {
{ "wool:"..color2,""},
{ "group:wood","group:wood" },
{ "wool:"..color2,"wool:"..color2 },
},
})
end
end
local ob_cbox = {
type = "fixed",
@ -116,7 +121,7 @@ local ob_cbox = {
}
minetest.register_node(":homedecor:openframe_bookshelf", {
description = S("Bookshelf (open-frame)"),
description = "Bookshelf (open-frame)",
drawtype = "mesh",
mesh = "homedecor_openframe_bookshelf.obj",
tiles = {
@ -132,7 +137,7 @@ minetest.register_node(":homedecor:openframe_bookshelf", {
})
homedecor.register("wall_shelf", {
description = S("Wall Shelf"),
description = "Wall Shelf",
tiles = {
"homedecor_wood_table_large_edges.png",
},
@ -157,72 +162,3 @@ minetest.register_alias("homedecor:armchair", "homedecor:armchair_black")
minetest.register_alias('table', 'homedecor:table')
minetest.register_alias('chair', 'homedecor:chair')
minetest.register_alias('armchair', 'homedecor:armchair')
-- conversion to param2 colorization
homedecor.old_static_chairs = {}
for _, color in ipairs(lrfurn.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
})

20
homedecor/furniture_medieval.lua Normal file → Executable file
View File

@ -1,9 +1,9 @@
local S = homedecor_i18n.gettext
local S = homedecor.gettext
homedecor.register("bars", {
description = S("Bars"),
tiles = { { name = "homedecor_generic_metal.png^[transformR270", color = homedecor.color_black } },
tiles = { "homedecor_generic_metal_black.png^[transformR270" },
node_box = {
type = "fixed",
fixed = {
@ -25,7 +25,7 @@ homedecor.register("bars", {
--L Binding Bars
homedecor.register("L_binding_bars", {
description = S("Binding Bars"),
tiles = { { name = "homedecor_generic_metal.png^[transformR270", color = homedecor.color_black } },
tiles = { "homedecor_generic_metal_black.png^[transformR270" },
node_box = {
type = "fixed",
fixed = {
@ -50,7 +50,7 @@ local chain_cbox = {
homedecor.register("chains", {
description = S("Chains"),
mesh = "forniture_chains.obj",
tiles = { { name = "homedecor_generic_metal.png", color = homedecor.color_black } },
tiles = { "homedecor_generic_metal_black.png" },
inventory_image="forniture_chains_inv.png",
selection_box = chain_cbox,
walkable = false,
@ -71,8 +71,8 @@ homedecor.register("torch_wall", {
length=1.0,
},
},
{ name = "homedecor_generic_metal.png", color = homedecor.color_black },
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"homedecor_generic_metal_black.png",
"homedecor_generic_metal_black.png^[brighten",
"forniture_coal.png",
},
inventory_image="forniture_torch_inv.png",
@ -93,12 +93,8 @@ local wl_cbox = {
homedecor.register("wall_lamp", {
description = S("Wall Lamp"),
mesh = "homedecor_wall_lamp.obj",
tiles = {
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
homedecor.lux_wood,
"homedecor_light.png",
"homedecor_generic_metal_wrought_iron.png"
},
tiles = {"homedecor_generic_metal_black.png^[brighten", "homedecor_generic_wood_luxury.png^[colorize:#000000:30",
"homedecor_light.png", "homedecor_generic_metal_wrought_iron.png"},
use_texture_alpha = true,
inventory_image = "homedecor_wall_lamp_inv.png",
groups = {snappy=3},

180
homedecor/furniture_recipes.lua Normal file → Executable file
View File

@ -1,6 +1,6 @@
minetest.register_craft({
output = "homedecor:table",
output = "homedecor:table", "homedecor:chair 2",
recipe = {
{ "group:wood","group:wood", "group:wood" },
{ "group:stick", "", "group:stick" },
@ -53,7 +53,7 @@ minetest.register_craft({
})
minetest.register_craft({
output = "homedecor:kitchen_chair_wood 2",
output = "homedecor:chair 2",
recipe = {
{ "group:stick",""},
{ "group:wood","group:wood" },
@ -61,35 +61,41 @@ minetest.register_craft({
},
})
minetest.register_craft({
output = "homedecor:armchair 2",
recipe = {
{ "wool:white",""},
{ "group:wood","group:wood" },
{ "wool:white","wool:white" },
},
})
minetest.register_craft({
type = "shapeless",
output = "homedecor:kitchen_chair_padded",
recipe = {
"homedecor:kitchen_chair_wood",
"wool:white",
},
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:kitchen_chair_wood",
recipe = "homedecor:chair",
burntime = 15,
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:kitchen_chair_padded",
burntime = 15,
})
local chaircolors = { "black", "red", "pink", "violet", "blue", "dark_green" }
for _, color in ipairs(chaircolors) do
minetest.register_craft({
type = "shapeless",
output = "homedecor:chair_"..color,
recipe = {
"homedecor:chair",
"wool:white",
"dye:"..color
},
})
minetest.register_craft({
type = "shapeless",
output = "homedecor:chair_"..color,
recipe = {
"homedecor:chair",
"wool:"..color
},
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:chair_"..color,
burntime = 15,
})
end
minetest.register_craft({
type = "fuel",
@ -98,9 +104,27 @@ minetest.register_craft({
})
minetest.register_craft({
output = "homedecor:standing_lamp_off",
output = "homedecor:table_lamp_white_off",
recipe = {
{"homedecor:table_lamp_off"},
{"default:paper","default:torch" ,"default:paper"},
{"","group:stick",""},
{"","stairs:slab_wood",""},
},
})
minetest.register_craft({
output = "homedecor:table_lamp_white_off",
recipe = {
{"default:paper","default:torch" ,"default:paper"},
{"","group:stick",""},
{"","moreblocks:slab_wood",""},
},
})
minetest.register_craft({
output = "homedecor:standing_lamp_white_off",
recipe = {
{"homedecor:table_lamp_white_off"},
{"group:stick"},
{"group:stick"},
},
@ -108,41 +132,71 @@ minetest.register_craft({
minetest.register_craft({
type = "fuel",
recipe = "homedecor:table_lamp_off",
recipe = "homedecor:table_lamp_white_off",
burntime = 10,
})
minetest.register_craft({
output = "homedecor:table_lamp_off",
recipe = {
{ "wool:white", "default:torch", "wool:white"},
{ "", "group:stick", ""},
{ "", "stairs:slab_wood", "" },
},
})
local lamp_colors = { "blue", "green", "pink", "red", "violet" }
minetest.register_craft({
output = "homedecor:table_lamp_off",
recipe = {
{ "cottages:wool", "default:torch", "cottages:wool"},
{ "", "group:stick", ""},
{ "", "stairs:slab_wood", "" },
},
})
for _, color in ipairs(lamp_colors) do
minetest.register_craft({
output = "homedecor:standing_lamp_off",
recipe = {
{ "homedecor:table_lamp_off"},
{ "group:stick"},
{ "group:stick"},
},
})
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({
output = "homedecor:toilet",
recipe = {
{ "","","bucket:bucket_water"},
{"","","bucket:bucket_water"},
{ "group:marble","group:marble", "group:marble" },
{ "", "bucket:bucket_empty", "" },
},
@ -183,24 +237,6 @@ 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({
output = "homedecor:bars 6",
recipe = {

88
homedecor/gastronomy.lua Normal file → Executable file
View File

@ -1,5 +1,4 @@
local S = homedecor_i18n.gettext
local S = homedecor.gettext
local cutlery_cbox = {
type = "fixed",
@ -14,7 +13,7 @@ homedecor.register("cutlery_set", {
mesh = "homedecor_cutlery_set.obj",
tiles = { "homedecor_cutlery_set.png" },
inventory_image = "homedecor_cutlery_set_inv.png",
description = S("Cutlery set"),
description = "Cutlery set",
groups = {snappy=3},
selection_box = cutlery_cbox,
walkable = false,
@ -35,19 +34,14 @@ local fbottle_cbox = {
}
}
local bottle_colors = {
{ "brown", S("Brown bottle"), S("Four brown bottles") },
{ "green", S("Green bottle"), S("Four green bottles") },
}
local bottle_colors = {"brown", "green"}
for _, b in ipairs(bottle_colors) do
local name, desc, desc4 = unpack(b)
homedecor.register("bottle_"..name, {
tiles = { "homedecor_bottle_"..name..".png" },
inventory_image = "homedecor_bottle_"..name.."_inv.png",
description = desc,
homedecor.register("bottle_"..b, {
tiles = { "homedecor_bottle_"..b..".png" },
inventory_image = "homedecor_bottle_"..b.."_inv.png",
description = "Bottle ("..b..")",
mesh = "homedecor_bottle.obj",
walkable = false,
groups = {snappy=3},
@ -57,13 +51,13 @@ for _, b in ipairs(bottle_colors) do
-- 4-bottle sets
homedecor.register("4_bottles_"..name, {
homedecor.register("4_bottles_"..b, {
tiles = {
"homedecor_bottle_"..name..".png",
"homedecor_bottle_"..name..".png"
"homedecor_bottle_"..b..".png",
"homedecor_bottle_"..b..".png"
},
inventory_image = "homedecor_4_bottles_"..name.."_inv.png",
description = desc4,
inventory_image = "homedecor_4_bottles_"..b.."_inv.png",
description = "Four "..b.." bottles",
mesh = "homedecor_4_bottles.obj",
walkable = false,
groups = {snappy=3},
@ -78,7 +72,7 @@ homedecor.register("4_bottles_multi", {
"homedecor_bottle_green.png"
},
inventory_image = "homedecor_4_bottles_multi_inv.png",
description = S("Four misc brown/green bottles"),
description = "Four misc brown/green bottles",
mesh = "homedecor_4_bottles.obj",
groups = {snappy=3},
walkable = false,
@ -88,7 +82,7 @@ homedecor.register("4_bottles_multi", {
local wine_cbox = homedecor.nodebox.slab_z(-0.75)
homedecor.register("wine_rack", {
description = S("Wine rack"),
description = "Wine Rack",
mesh = "homedecor_wine_rack.obj",
tiles = {
"homedecor_generic_wood_red.png",
@ -105,7 +99,7 @@ homedecor.register("wine_rack", {
})
homedecor.register("dartboard", {
description = S("Dartboard"),
description = "Dartboard",
mesh = "homedecor_dartboard.obj",
tiles = { "homedecor_dartboard.png" },
inventory_image = "homedecor_dartboard_inv.png",
@ -121,11 +115,11 @@ homedecor.register("dartboard", {
})
homedecor.register("beer_tap", {
description = S("Beer tap"),
description = "Beer tap",
mesh = "homedecor_beer_taps.obj",
tiles = {
"homedecor_generic_metal_bright.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_black }
"homedecor_generic_metal_black.png",
},
inventory_image = "homedecor_beertap_inv.png",
groups = { snappy=3 },
@ -134,20 +128,19 @@ homedecor.register("beer_tap", {
type = "fixed",
fixed = { -0.25, -0.5, -0.4375, 0.25, 0.235, 0 }
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local inv = clicker:get_inventory()
on_punch = function(pos, node, puncher, pointed_thing)
local wielditem = puncher:get_wielded_item()
local inv = puncher:get_inventory()
local wieldname = itemstack:get_name()
local wieldname = wielditem:get_name()
if wieldname == "vessels:drinking_glass" then
if inv:room_for_item("main", "homedecor:beer_mug 1") then
itemstack:take_item()
clicker:set_wielded_item(itemstack)
wielditem:take_item()
puncher:set_wielded_item(wielditem)
inv:add_item("main", "homedecor:beer_mug 1")
minetest.chat_send_player(clicker:get_player_name(),
S("Ahh, a frosty cold beer - look in your inventory for it!"))
minetest.chat_send_player(puncher:get_player_name(), "Ahh, a frosty cold beer - look in your inventory for it!")
else
minetest.chat_send_player(clicker:get_player_name(),
S("No room in your inventory to add a beer mug!"))
minetest.chat_send_player(puncher:get_player_name(), "No room in your inventory to add a beer mug!")
end
end
end
@ -168,7 +161,7 @@ local beer_cbox = {
}
homedecor.register("beer_mug", {
description = S("Beer mug"),
description = "Beer mug",
drawtype = "mesh",
mesh = "homedecor_beer_mug.obj",
tiles = { "homedecor_beer_mug.png" },
@ -177,24 +170,7 @@ homedecor.register("beer_mug", {
walkable = false,
sounds = default.node_sound_glass_defaults(),
selection_box = beer_cbox,
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
on_use = minetest.item_eat(2)
})
local svm_cbox = {
@ -203,7 +179,7 @@ local svm_cbox = {
}
homedecor.register("soda_machine", {
description = S("Soda vending machine"),
description = "Soda Vending Machine",
mesh = "homedecor_soda_machine.obj",
tiles = {"homedecor_soda_machine.png"},
groups = {snappy=3},
@ -212,21 +188,21 @@ homedecor.register("soda_machine", {
expand = { top="placeholder" },
sounds = default.node_sound_wood_defaults(),
on_rotate = screwdriver.rotate_simple,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local wielditem = clicker:get_wielded_item()
on_punch = function(pos, node, puncher, pointed_thing)
local wielditem = puncher:get_wielded_item()
local wieldname = wielditem:get_name()
local fdir_to_fwd = { {0, -1}, {-1, 0}, {0, 1}, {1, 0} }
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] }
if wieldname == "homedecor:coin" then
wielditem:take_item()
clicker:set_wielded_item(wielditem)
puncher:set_wielded_item(wielditem)
minetest.spawn_item(pos_drop, "homedecor:soda_can")
minetest.sound_play("insert_coin", {
pos=pos, max_hear_distance = 5
})
else
minetest.chat_send_player(clicker:get_player_name(), S("Please insert a coin in the machine."))
minetest.chat_send_player(puncher:get_player_name(), "Please insert a coin in the machine.")
end
end
})

115
homedecor/handlers/expansion.lua Normal file → Executable file
View File

@ -1,5 +1,4 @@
local S = homedecor_i18n.gettext
local S = homedecor.gettext
-- vectors to place one node next to or behind another
@ -24,38 +23,9 @@ homedecor.fdir_to_fwd = {
{ -1, 0 },
}
-- special case for wallmounted nodes
homedecor.wall_fdir_to_right = {
nil,
nil,
{ -1, 0 },
{ 1, 0 },
{ 0, -1 },
{ 0, 1 },
}
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 = "homedecor:expansion_placeholder"
minetest.register_node(placeholder_node, {
description = S("Expansion placeholder (you hacker you!)"),
description = "Expansion placeholder (you hacker you!)",
groups = { not_in_creative_inventory=1 },
drawtype = "airlike",
paramtype = "light",
@ -97,8 +67,8 @@ end
local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
local placer_name = placer:get_player_name() or ""
if is_buildable_to(placer_name, pos, pos2) then
local lfdir = fdir or minetest.dir_to_facedir(placer:get_look_dir())
minetest.set_node(pos, { name = node1, param2 = lfdir })
local fdir = fdir or minetest.dir_to_facedir(placer:get_look_dir())
minetest.set_node(pos, { name = node1, param2 = fdir })
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
local has_facedir = node2 ~= "air"
@ -106,7 +76,7 @@ local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
has_facedir = false
node2 = placeholder_node
end
minetest.set_node(pos2, { name = node2, param2 = (has_facedir and lfdir) or nil })
minetest.set_node(pos2, { name = node2, param2 = (has_facedir and fdir) or nil })
-- call after_place_node of the placed node if available
local ctrl_node_def = minetest.registered_nodes[node1]
@ -121,18 +91,18 @@ local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
return itemstack
end
local function rightclick_pointed_thing(pos, placer, itemstack, pointed_thing)
local function rightclick_pointed_thing(pos, placer, itemstack)
local node = minetest.get_node_or_nil(pos)
if not node then return false end
local def = minetest.registered_nodes[node.name]
if not def or not def.on_rightclick then return false end
return def.on_rightclick(pos, node, placer, itemstack, pointed_thing) or itemstack
return def.on_rightclick(pos, node, placer, itemstack) or itemstack
end
-- Stack one node above another
-- leave the last argument nil if it's one 2m high node
function homedecor.stack_vertically(itemstack, placer, pointed_thing, node1, node2)
local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack, pointed_thing)
local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack)
if rightclick_result then return rightclick_result end
local pos, def = select_node(pointed_thing)
@ -147,7 +117,7 @@ end
-- 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)
local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack, pointed_thing)
local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack)
if rightclick_result then return rightclick_result end
local pos, def = select_node(pointed_thing)
@ -166,7 +136,7 @@ function homedecor.stack_wing(itemstack, placer, pointed_thing, node1, node2, no
end
function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2, dir)
local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack, pointed_thing)
local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack)
if rightclick_result then return rightclick_result end
local pos, def = select_node(pointed_thing)
@ -180,13 +150,13 @@ function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2
return stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
end
function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks)
function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, color)
local thisnode = minetest.get_node(pos)
local fdir = thisnode.param2
local fxd = homedecor.wall_fdir_to_fwd[fdir+1][1]
local fzd = homedecor.wall_fdir_to_fwd[fdir+1][2]
local fxd = homedecor.fdir_to_fwd[fdir+1][1]
local fzd = homedecor.fdir_to_fwd[fdir+1][2]
local forwardpos = {x=pos.x+fxd, y=pos.y, z=pos.z+fzd}
local forwardnode = minetest.get_node(forwardpos)
@ -195,65 +165,70 @@ function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks
local placer_name = placer:get_player_name()
if not (def and def.buildable_to) then
minetest.chat_send_player( placer:get_player_name(),
S("Not enough room - the space for the headboard is occupied!"))
minetest.chat_send_player( placer:get_player_name(), "Not enough room - the space for the headboard is occupied!" )
minetest.set_node(pos, {name = "air"})
return true
end
if minetest.is_protected(forwardpos, placer_name) then
minetest.chat_send_player( placer:get_player_name(),
S("Someone already owns the spot where the headboard goes."))
minetest.chat_send_player( placer:get_player_name(), "Someone already owns the spot where the headboard goes." )
return true
end
minetest.set_node(forwardpos, {name = "air"})
local lxd = homedecor.wall_fdir_to_left[fdir+1][1]
local lzd = homedecor.wall_fdir_to_left[fdir+1][2]
local lxd = homedecor.fdir_to_left[fdir+1][1]
local lzd = homedecor.fdir_to_left[fdir+1][2]
local leftpos = {x=pos.x+lxd, y=pos.y, z=pos.z+lzd}
local leftnode = minetest.get_node(leftpos)
local rxd = homedecor.wall_fdir_to_right[fdir+1][1]
local rzd = homedecor.wall_fdir_to_right[fdir+1][2]
local rxd = homedecor.fdir_to_right[fdir+1][1]
local rzd = homedecor.fdir_to_right[fdir+1][2]
local rightpos = {x=pos.x+rxd, y=pos.y, z=pos.z+rzd}
local rightnode = minetest.get_node(rightpos)
if leftnode.name == "homedecor:bed_regular" then
if leftnode.name == "homedecor:bed_"..color.."_regular" then
local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
minetest.set_node(pos, {name = "air"})
minetest.set_node(leftpos, { name = newname, param2 = fdir})
elseif rightnode.name == "homedecor:bed_regular" then
elseif rightnode.name == "homedecor:bed_"..color.."_regular" then
local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
minetest.set_node(rightpos, {name = "air"})
minetest.set_node(pos, { name = newname, param2 = fdir})
end
local toppos = {x=pos.x, y=pos.y+1.0, z=pos.z}
local topposfwd = {x=toppos.x+fxd, y=toppos.y, z=toppos.z+fzd}
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 trybunks and is_buildable_to(placer_name, toppos, topposfwd) then
local newname = string.gsub(thisnode.name, "_regular", "_extended")
minetest.set_node(toppos, { name = thisnode.name, param2 = fdir})
minetest.set_node(pos, { name = newname, param2 = fdir})
itemstack:take_item()
if string.find(topnode.name, "homedecor:bed_.*_regular$") then
if fdir == topnode.param2 then
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 fdir == bottomnode.param2 then
local newname = string.gsub(bottomnode.name, "_regular", "_extended")
minetest.set_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newname, param2 = fdir})
end
end
end
function homedecor.unextend_bed(pos)
function homedecor.unextend_bed(pos, color)
local bottomnode = minetest.get_node({x=pos.x, y=pos.y-1.0, z=pos.z})
local fdir = bottomnode.param2
if bottomnode.name == "homedecor:bed_extended" then
if string.find(bottomnode.name, "homedecor:bed_.*_extended$") then
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})
end
end
function homedecor.place_banister(itemstack, placer, pointed_thing)
local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack, pointed_thing)
local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack)
if rightclick_result then return rightclick_result end
local pos, _ = select_node(pointed_thing)
local pos, def = select_node(pointed_thing)
if not pos then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
@ -265,12 +240,12 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
local placer_name = placer:get_player_name()
if not (adef and adef.buildable_to) then
minetest.chat_send_player(placer_name, S("Not enough room - the upper space is occupied!" ))
minetest.chat_send_player(placer_name, "Not enough room - the upper space is occupied!" )
return itemstack
end
if minetest.is_protected(abovepos, placer_name) then
minetest.chat_send_player(placer_name, S("Someone already owns that spot."))
minetest.chat_send_player(placer_name, "Someone already owns that spot." )
return itemstack
end
@ -295,19 +270,20 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
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 fwd_node = minetest.get_node(fwd_pos)
local fwd_node = minetest.get_node(fwd_pos)
local left_node = minetest.get_node(left_pos)
local right_node = minetest.get_node(right_pos)
local left_fwd_node = minetest.get_node(left_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 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 left_fwd_above_node = minetest.get_node(left_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 right_fwd_below_node = minetest.get_node(right_fwd_below_pos)
local left_fwd_below_node = minetest.get_node(left_fwd_below_pos)
local new_place_name = itemstack:get_name()
local n = 0
-- try to place a diagonal one on the side of blocks stacked like stairs
-- or follow an existing diagonal with another.
@ -383,3 +359,4 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
itemstack:take_item()
return itemstack
end

50
homedecor/handlers/furnaces.lua Normal file → Executable file
View File

@ -1,6 +1,6 @@
-- This code supplies an oven/stove. Basically it's just a copy of the default furnace with different textures.
local S = homedecor_i18n.gettext
local S = homedecor.gettext
local function swap_node(pos, name)
local node = minetest.get_node(pos)
@ -30,11 +30,7 @@ local function make_formspec(furnacedef, percent)
"list[current_name;fuel;2,3;1,1;]"..
"list[current_name;src;2,1;1,1;]"..
"list[current_name;dst;5,1;"..w..","..h..";]"..
"list[current_player;main;0,5;8,4;]"..
"listring[current_name;dst]"..
"listring[current_player;main]"..
"listring[current_name;src]"..
"listring[current_player;main]"
"list[current_player;main;0,5;8,4;]"
end
--[[
@ -88,7 +84,7 @@ function homedecor.register_furnace(name, furnacedef)
furnacedef.cook_speed = furnacedef.cook_speed or 1
local description = furnacedef.description or S("Furnace")
local description = furnacedef.description or "Furnace"
local furnace_construct = function(pos)
local meta = minetest.get_meta(pos)
@ -106,7 +102,7 @@ function homedecor.register_furnace(name, furnacedef)
if listname == "fuel" then
if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
if inv:is_empty("src") then
meta:set_string("infotext", S("@1 (empty)", description))
meta:set_string("infotext", S("%s is empty"):format(description))
end
return stack:get_count()
else
@ -125,7 +121,7 @@ function homedecor.register_furnace(name, furnacedef)
if to_list == "fuel" then
if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
if inv:is_empty("src") then
meta:set_string("infotext", S("@1 (empty)", description))
meta:set_string("infotext", S("%s is empty"):format(description))
end
return count
else
@ -151,7 +147,7 @@ function homedecor.register_furnace(name, furnacedef)
}
local def_active = {
description = S("@1 (active)", description),
description = description .. " (active)",
tiles = make_tiles(furnacedef.tiles_active, furnacedef.tile_format, true),
light_source = 8,
drop = "homedecor:" .. name,
@ -171,28 +167,28 @@ function homedecor.register_furnace(name, furnacedef)
end
end
local n_active = name.."_active"
local name_active = name.."_active"
homedecor.register(name, def)
homedecor.register(n_active, def_active)
homedecor.register(name_active, def_active)
local nname, name_active = "homedecor:"..name, "homedecor:"..n_active
local name, name_active = "homedecor:"..name, "homedecor:"..name_active
minetest.register_abm({
nodenames = {nname, name_active, nname.."_locked", name_active.."_locked"},
nodenames = {name, name_active, name.."_locked", name_active.."_locked"},
label = "furnaces",
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local meta = minetest.get_meta(pos)
for i, pname in ipairs({
for i, name in ipairs({
"fuel_totaltime",
"fuel_time",
"src_totaltime",
"src_time"
}) do
if meta:get_string(pname) == "" then
meta:set_float(pname, 0.0)
if meta:get_string(name) == "" then
meta:set_float(name, 0.0)
end
end
@ -226,12 +222,12 @@ function homedecor.register_furnace(name, furnacedef)
-- XXX: Quick patch, make it better in the future.
local locked = node.name:find("_locked$") and "_locked" or ""
local desc = minetest.registered_nodes[nname..locked].description
local desc = minetest.registered_nodes[name..locked].description
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
local percent = math.floor(meta:get_float("fuel_time") /
meta:get_float("fuel_totaltime") * 100)
meta:set_string("infotext", S("@1 (active: @2%)", desc, percent))
meta:set_string("infotext",S("%s active: %d%%"):format(desc,percent))
swap_node(pos,name_active..locked)
meta:set_string("formspec", make_formspec(furnacedef, percent))
return
@ -239,9 +235,9 @@ function homedecor.register_furnace(name, furnacedef)
local fuel = nil
local afterfuel
cooked = nil
local cooked = nil
local fuellist = inv:get_list("fuel")
srclist = inv:get_list("src")
local srclist = inv:get_list("src")
if srclist then
cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
@ -251,24 +247,24 @@ function homedecor.register_furnace(name, furnacedef)
end
if (not fuel) or (fuel.time <= 0) then
meta:set_string("infotext", S("@1 (out of fuel)", desc))
swap_node(pos, nname..locked)
meta:set_string("infotext",desc..S(": Out of fuel"))
swap_node(pos, name..locked)
meta:set_string("formspec", make_formspec(furnacedef, 0))
return
end
if cooked.item:is_empty() then
if was_active then
meta:set_string("infotext", S("@1 (empty)", desc))
swap_node(pos, nname..locked)
meta:set_string("infotext",S("%s is empty"):format(desc))
swap_node(pos, name..locked)
meta:set_string("formspec", make_formspec(furnacedef, 0))
end
return
end
if not inv:room_for_item("dst", cooked.item) then
meta:set_string("infotext", S("@1 (output bins are full)", desc))
swap_node(pos, nname..locked)
meta:set_string("infotext", desc..S(": output bins are full"))
swap_node(pos, name..locked)
meta:set_string("formspec", make_formspec(furnacedef, 0))
return
end

0
homedecor/handlers/init.lua Normal file → Executable file
View File

90
homedecor/handlers/inventory.lua Normal file → Executable file
View File

@ -1,5 +1,4 @@
local S = homedecor_i18n.gettext
local S = homedecor.gettext
local default_can_dig = function(pos,player)
local meta = minetest.get_meta(pos)
@ -9,47 +8,38 @@ end
local background = default.gui_bg .. default.gui_bg_img .. default.gui_slots
local default_inventory_formspecs = {
["4"]="size[8,6]".. background ..
"list[context;main;2,0;4,1;]" ..
"list[current_player;main;0,2;8,4;]" ..
"listring[]",
"list[context;main;2,0;4,1;]"..
"list[current_player;main;0,2;8,4;]",
["6"]="size[8,6]".. background ..
"list[context;main;1,0;6,1;]"..
"list[current_player;main;0,2;8,4;]" ..
"listring[]",
"list[current_player;main;0,2;8,4;]",
["8"]="size[8,6]".. background ..
"list[context;main;0,0;8,1;]"..
"list[current_player;main;0,2;8,4;]" ..
"listring[]",
"list[current_player;main;0,2;8,4;]",
["12"]="size[8,7]".. background ..
"list[context;main;1,0;6,2;]"..
"list[current_player;main;0,3;8,4;]" ..
"listring[]",
"list[current_player;main;0,3;8,4;]",
["16"]="size[8,7]".. background ..
"list[context;main;0,0;8,2;]"..
"list[current_player;main;0,3;8,4;]" ..
"listring[]",
"list[current_player;main;0,3;8,4;]",
["24"]="size[8,8]".. background ..
"list[context;main;0,0;8,3;]"..
"list[current_player;main;0,4;8,4;]" ..
"listring[]",
"list[current_player;main;0,4;8,4;]",
["32"]="size[8,9]".. background ..
"list[context;main;0,0.3;8,4;]"..
"list[current_player;main;0,4.85;8,1;]"..
"list[current_player;main;0,6.08;8,3;8]"..
"listring[context;main]" ..
"listring[current_player;main]" ..
default.get_hotbar_bg(0,4.85),
["50"]="size[10,10]".. background ..
"list[context;main;0,0;10,5;]"..
"list[current_player;main;1,6;8,4;]" ..
"listring[]",
"list[current_player;main;1,6;8,4;]",
}
local function get_formspec_by_size(size)
@ -85,18 +75,18 @@ function homedecor.handle_inventory(name, def, original_def)
def.can_dig = def.can_dig or default_can_dig
def.on_metadata_inventory_move = def.on_metadata_inventory_move or function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", S("@1 moves stuff in @2 at @3",
minetest.log("action", S("%s moves stuff in %s at %s"):format(
player:get_player_name(), name, minetest.pos_to_string(pos)
))
end
def.on_metadata_inventory_put = def.on_metadata_inventory_put or function(pos, listname, index, stack, player)
minetest.log("action", S("@1 moves @2 to @3 at @4",
player:get_player_name(), stack:get_name(), name, minetest.pos_to_string(pos)
minetest.log("action", S("%s moves stuff to %s at %s"):format(
player:get_player_name(), name, minetest.pos_to_string(pos)
))
end
def.on_metadata_inventory_take = def.on_metadata_inventory_take or function(pos, listname, index, stack, player)
minetest.log("action", S("@1 takes @2 from @3 at @4",
player:get_player_name(), stack:get_name(), name, minetest.pos_to_string(pos)
minetest.log("action", S("%s takes stuff from %s at %s"):format(
player:get_player_name(), name, minetest.pos_to_string(pos)
))
end
@ -108,7 +98,7 @@ function homedecor.handle_inventory(name, def, original_def)
local owner = placer:get_player_name() or ""
meta:set_string("owner", owner)
meta:set_string("infotext", S("@1 (owned by @2)", def.infotext or def.description, owner))
meta:set_string("infotext", S("%s (owned by %s)"):format(def.infotext or def.description, owner))
return after_place_node and after_place_node(pos, placer)
end
@ -118,17 +108,15 @@ function homedecor.handle_inventory(name, def, original_def)
local owner = meta:get_string("owner")
local playername = player:get_player_name()
if playername == owner or
minetest.check_player_privs(playername, "protection_bypass") then
return allow_move and
allow_move(pos, from_list, from_index, to_list, to_index, count, player) or
count
if (playername ~= owner) then
minetest.log("action", string.format("%s tried to access a %s belonging to %s at %s",
playername, name, owner, minetest.pos_to_string(pos)
))
return 0
end
minetest.log("action", S("@1 tried to access a @2 belonging to @3 at @4",
playername, name, owner, minetest.pos_to_string(pos)
))
return 0
return allow_move and allow_move(pos, from_list, from_index, to_list, to_index, count, player)
or count
end
local allow_put = def.allow_metadata_inventory_put
@ -137,16 +125,14 @@ function homedecor.handle_inventory(name, def, original_def)
local owner = meta:get_string("owner")
local playername = player:get_player_name()
if playername == owner or
minetest.check_player_privs(playername, "protection_bypass") then
return allow_put and allow_put(pos, listname, index, stack, player) or
stack:get_count()
if (playername ~= owner) then
minetest.log("action", string.format("%s tried to access a %s belonging to %s at %s",
playername, name, owner, minetest.pos_to_string(pos)
))
return 0
end
minetest.log("action", S("@1 tried to access a @2 belonging to @3 at @4",
playername, name, owner, minetest.pos_to_string(pos)
))
return 0
return allow_put and allow_put(pos, listname, index, stack, player)
or stack:get_count()
end
local allow_take = def.allow_metadata_inventory_take
@ -155,23 +141,21 @@ function homedecor.handle_inventory(name, def, original_def)
local owner = meta:get_string("owner")
local playername = player:get_player_name()
if playername == owner or
minetest.check_player_privs(playername, "protection_bypass") then
return allow_take and allow_take(pos, listname, index, stack, player) or
stack:get_count()
if (playername ~= owner) then
minetest.log("action", string.format("%s tried to access a %s belonging to %s at %s",
playername, name, owner, minetest.pos_to_string(pos)
))
return 0
end
minetest.log("action", S("@1 tried to access a @2 belonging to @3 at @4",
playername, name, owner, minetest.pos_to_string(pos)
))
return 0
return allow_take and allow_take(pos, listname, index, stack, player)
or stack:get_count()
end
end
local lockable = inventory.lockable
if lockable then
local locked_def = table.copy(original_def)
locked_def.description = S("@1 (Locked)", def.description or name)
locked_def.description = S("Locked %s"):format(def.description or name)
local locked_inventory = locked_def.inventory
locked_inventory.locked = true

3
homedecor/handlers/nodeboxes.lua Normal file → Executable file
View File

@ -57,3 +57,6 @@ mt.__index = function(table, key)
error("unexpected datatype " .. tostring(type(ref)) .. " while looking for " .. key)
end
setmetatable(homedecor.nodebox, mt)

2
homedecor/handlers/registration.lua Normal file → Executable file
View File

@ -1,5 +1,5 @@
homedecor = homedecor or {}
local S = homedecor.gettext
local placeholder_node = "homedecor:expansion_placeholder"
--wrapper around minetest.register_node that sets sane defaults and interprets some specialized settings

4
homedecor/handlers/sit.lua Normal file → Executable file
View File

@ -1,6 +1,5 @@
function homedecor.sit(pos, node, clicker)
return -- delete it when the engine is stabler for the player's physics
--[[
do return end -- delete it when the engine is stabler for the player's physics
local meta = minetest.get_meta(pos)
local param2 = node.param2
local name = clicker:get_player_name()
@ -30,5 +29,4 @@ function homedecor.sit(pos, node, clicker)
clicker:set_look_yaw(4.75)
else return end
end
--]]
end

9
homedecor/handlers/water_particles.lua Normal file → Executable file
View File

@ -25,8 +25,8 @@ function homedecor.start_particle_spawner(pos, node, particledef, soundname)
if id ~= 0 then
if s_handle then
minetest.after(0, function(handle)
minetest.sound_stop(handle)
minetest.after(0, function(s_handle)
minetest.sound_stop(s_handle)
end, s_handle)
end
minetest.delete_particlespawner(id)
@ -104,11 +104,12 @@ function homedecor.stop_particle_spawner(pos)
end
if s_handle then
minetest.after(0, function(handle)
minetest.sound_stop(handle)
minetest.after(0, function(s_handle)
minetest.sound_stop(s_handle)
end, s_handle)
end
this_spawner_meta:set_int("active", nil)
this_spawner_meta:set_int("sound", nil)
end

30
homedecor/init.lua Normal file → Executable file
View File

@ -9,11 +9,12 @@
local modpath = minetest.get_modpath("homedecor")
local S = homedecor_i18n.gettext
homedecor = {
modpath = modpath,
-- Boilerplate to support localized strings if intllib mod is installed.
gettext = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end,
-- infinite stacks
expect_infinite_stacks = minetest.setting_getbool("creative_mode") and not minetest.get_modpath("unified_inventory")
}
@ -31,6 +32,9 @@ function homedecor.find_ceiling(itemstack, placer, pointed_thing)
itemstack, pointed_thing)
return
end
local pitch = placer:get_look_pitch()
local fdir = core.dir_to_facedir(placer:get_look_dir())
local wield_name = itemstack:get_name()
local above = pointed_thing.above
local under = pointed_thing.under
@ -46,6 +50,7 @@ function homedecor.find_ceiling(itemstack, placer, pointed_thing)
if undef and undef.buildable_to then
pos = pointed_thing.under
node = unode
iswall = false
end
if core.is_protected(pos, placer:get_player_name()) then
@ -63,15 +68,18 @@ end
screwdriver = screwdriver or {}
homedecor.plain_wood = { name = "homedecor_generic_wood_plain.png", color = 0xffa76820 }
homedecor.mahogany_wood = { name = "homedecor_generic_wood_plain.png", color = 0xff7d2506 }
homedecor.white_wood = "homedecor_generic_wood_plain.png"
homedecor.dark_wood = { name = "homedecor_generic_wood_plain.png", color = 0xff39240f }
homedecor.lux_wood = { name = "homedecor_generic_wood_luxury.png", color = 0xff643f23 }
homedecor.plain_wood = "homedecor_generic_wood_plain.png^"..
"(homedecor_generic_wood_boards_overlay.png^[colorize:#a7682020:100)"
homedecor.mahogany_wood = "(homedecor_generic_wood_plain.png^[colorize:#401010:125)^"..
"(homedecor_generic_wood_boards_overlay.png^[colorize:#66493880:200)"
homedecor.white_wood = "(homedecor_generic_wood_plain.png^[colorize:#e0f0ff:200)^"..
"(homedecor_generic_wood_boards_overlay.png^[colorize:#ffffff:200)"
homedecor.dark_wood = "(homedecor_generic_wood_plain.png^[colorize:#140900:200)^"..
"(homedecor_generic_wood_boards_overlay.png^[colorize:#21110180:180)"
homedecor.color_black = 0xff303030
homedecor.color_dark_grey = 0xff606060
homedecor.color_med_grey = 0xffa0a0a0
-- load different handler subsystems
dofile(modpath.."/handlers/init.lua")
@ -123,4 +131,4 @@ dofile(modpath.."/wardrobe.lua")
dofile(modpath.."/crafts.lua")
print("[HomeDecor] " .. S("Loaded!"))
print("[HomeDecor] " .. homedecor.gettext("Loaded!"))

21
homedecor/kitchen_appliances.lua Normal file → Executable file
View File

@ -1,8 +1,6 @@
-- This file supplies refrigerators
local S = homedecor_i18n.gettext
local function N_(x) return x end
local S = homedecor.gettext
-- steel-textured fridge
homedecor.register("refrigerator_steel", {
@ -50,7 +48,6 @@ minetest.register_alias("homedecor:refrigerator_steel_top", "air")
minetest.register_alias("homedecor:refrigerator_white_bottom_locked", "homedecor:refrigerator_white_locked")
minetest.register_alias("homedecor:refrigerator_white_top_locked", "air")
minetest.register_alias("homedecor:refrigerator_locked", "homedecor:refrigerator_white_locked")
minetest.register_alias("homedecor:refrigerator_steel_bottom_locked", "homedecor:refrigerator_steel_locked")
minetest.register_alias("homedecor:refrigerator_steel_top_locked", "air")
@ -114,7 +111,7 @@ homedecor.register("coffee_maker", {
"homedecor_coffeemaker_cup.png",
"homedecor_coffeemaker_case.png",
},
description = S("Coffee Maker"),
description = "Coffee Maker",
inventory_image = "homedecor_coffeemaker_inv.png",
walkable = false,
groups = {snappy=3},
@ -161,7 +158,7 @@ minetest.register_abm({
})
homedecor.register("toaster", {
description = S("Toaster"),
description = "Toaster",
tiles = { "homedecor_toaster_sides.png" },
inventory_image = "homedecor_toaster_inv.png",
walkable = false,
@ -172,7 +169,7 @@ homedecor.register("toaster", {
{-0.0625, -0.5, -0.125, 0.125, -0.3125, 0.125}, -- NodeBox1
},
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_rightclick = function(pos, node, clicker)
local fdir = node.param2
minetest.set_node(pos, { name = "homedecor:toaster_loaf", param2 = fdir })
minetest.sound_play("toaster", {
@ -180,7 +177,6 @@ homedecor.register("toaster", {
gain = 1.0,
max_hear_distance = 5
})
return itemstack
end
})
@ -203,17 +199,16 @@ homedecor.register("toaster_loaf", {
{0.0625, -0.3125, -0.0935, 0.0935, -0.25, 0.0935}, -- NodeBox3
},
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_rightclick = function(pos, node, clicker)
local fdir = node.param2
minetest.set_node(pos, { name = "homedecor:toaster", param2 = fdir })
return itemstack
end,
drop = "homedecor:toaster"
})
homedecor.register("dishwasher", {
description = S("Dishwasher"),
description = "Dishwasher",
drawtype = "nodebox",
tiles = {
"homedecor_dishwasher_top.png",
@ -237,11 +232,11 @@ homedecor.register("dishwasher", {
groups = { snappy = 3 },
})
local materials = { N_("granite"), N_("marble"), N_("steel"), N_("wood") }
local materials = {"granite", "marble", "steel", "wood"}
for _, m in ipairs(materials) do
homedecor.register("dishwasher_"..m, {
description = S("Dishwasher (@1)", S(m)),
description = "Dishwasher ("..m..")",
tiles = {
"homedecor_kitchen_cabinet_top_"..m..".png",
"homedecor_dishwasher_bottom.png",

21
homedecor/kitchen_furniture.lua Normal file → Executable file
View File

@ -1,21 +1,18 @@
-- This file supplies Kitchen cabinets and kitchen sink
local S = homedecor_i18n.gettext
local S = homedecor.gettext
local counter_materials = { "", "granite", "marble", "steel" }
local cabinet_sides = "(default_wood.png^[transformR90)^homedecor_kitchen_cabinet_bevel.png"
local cabinet_bottom = "(default_wood.png^[colorize:#000000:100)^(homedecor_kitchen_cabinet_bevel.png^[colorize:#46321580)"
local function N_(x) return x end
local counter_materials = { "", N_("granite"), N_("marble"), N_("steel") }
for _, mat in ipairs(counter_materials) do
local desc = S("Kitchen Cabinet")
local material = ""
if mat ~= "" then
desc = S("Kitchen Cabinet (@1 top)", S(mat))
desc = S("Kitchen Cabinet ("..mat.." top)")
material = "_"..mat
end
@ -96,7 +93,7 @@ local cp_cbox = {
}
homedecor.register("copper_pans", {
description = S("Copper pans"),
description = "Copper pans",
mesh = "homedecor_copper_pans.obj",
tiles = { "homedecor_polished_copper.png" },
inventory_image = "homedecor_copper_pans_inv.png",
@ -115,17 +112,16 @@ homedecor.register("kitchen_faucet", {
mesh = "homedecor_kitchen_faucet.obj",
tiles = { "homedecor_generic_metal_bright.png" },
inventory_image = "homedecor_kitchen_faucet_inv.png",
description = S("Kitchen Faucet"),
description = "Kitchen Faucet",
groups = {snappy=3},
selection_box = kf_cbox,
walkable = false,
on_rotate = screwdriver.disallow,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_rightclick = function(pos, node, clicker)
local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-1, z=pos.z})
if below and
below.name == "homedecor:sink" or
below.name == "homedecor:kitchen_cabinet_with_sink" or
below.name == "homedecor:kitchen_cabinet_with_sink_locked" then
below.name == "homedecor:kitchen_cabinet_with_sink" then
local particledef = {
outlet = { x = 0, y = -0.19, z = 0.13 },
velocity_x = { min = -0.05, max = 0.05 },
@ -135,7 +131,6 @@ homedecor.register("kitchen_faucet", {
}
homedecor.start_particle_spawner(pos, node, particledef, "homedecor_faucet")
end
return itemstack
end,
on_destruct = homedecor.stop_particle_spawner
})
@ -147,7 +142,7 @@ homedecor.register("paper_towel", {
"default_wood.png"
},
inventory_image = "homedecor_paper_towel_inv.png",
description = S("Paper towels"),
description = "Paper towels",
groups = { snappy=3 },
walkable = false,
selection_box = {

2
homedecor/laundry.lua Normal file → Executable file
View File

@ -52,7 +52,7 @@ homedecor.register("ironing_board", {
mesh = "homedecor_ironing_board.obj",
tiles = {
"wool_grey.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"homedecor_generic_metal_black.png^[brighten"
},
expand = {right = "placeholder"},
groups = { snappy = 3 },

534
homedecor/lighting.lua Normal file → Executable file
View File

@ -1,6 +1,63 @@
-- This file supplies glowlights
local S = homedecor_i18n.gettext
local dirs1 = { 20, 23, 22, 21 }
local dirs2 = { 9, 18, 7, 12 }
local S = homedecor.gettext
local colors = {"yellow","white"}
for i in ipairs(colors) do
local color = colors[i]
minetest.register_abm({
nodenames = { "homedecor:glowlight_thin_"..color },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
minetest.set_node(pos, {name = "homedecor:glowlight_quarter_"..color, param2 = 20})
end,
})
minetest.register_abm({
nodenames = { "homedecor:glowlight_thick_"..color },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
minetest.set_node(pos, {name = "homedecor:glowlight_half_"..color, param2 = 20})
end,
})
minetest.register_abm({
nodenames = { "homedecor:glowlight_thin_"..color.."_wall" },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2 or 0
local nfdir = dirs2[fdir+1]
minetest.set_node(pos, {name = "homedecor:glowlight_quarter_"..color, param2 = nfdir})
end,
})
minetest.register_abm({
nodenames = { "homedecor:glowlight_thick_"..color.."_wall" },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2 or 0
local nfdir = dirs2[fdir+1]
minetest.set_node(pos, {name = "homedecor:glowlight_half_"..color, param2 = nfdir})
end,
})
minetest.register_abm({
nodenames = { "homedecor:glowlight_small_cube_"..color.."_ceiling" },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
minetest.set_node(pos, {name = "homedecor:glowlight_small_cube_"..color, param2 = 20})
end,
})
local glowlight_nodebox = {
half = homedecor.nodebox.slab_y(1/2),
@ -11,92 +68,66 @@ local glowlight_nodebox = {
},
}
minetest.register_node("homedecor:glowlight_half", {
description = S("Thick Glowlight"),
homedecor.register("glowlight_half_"..color, {
description = S("Thick Glowlight ("..color..")"),
tiles = {
"homedecor_glowlight_top.png",
"homedecor_glowlight_bottom.png",
"homedecor_glowlight_thick_sides.png",
"homedecor_glowlight_thick_sides.png",
"homedecor_glowlight_thick_sides.png",
"homedecor_glowlight_thick_sides.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
selection_box = {
type = "wallmounted",
wall_top = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 },
wall_bottom = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 },
wall_side = { -0.5, -0.5, -0.5, 0, 0.5, 0.5 }
"homedecor_glowlight_"..color.."_top.png",
"homedecor_glowlight_"..color.."_bottom.png",
"homedecor_glowlight_thick_"..color.."_sides.png",
"homedecor_glowlight_thick_"..color.."_sides.png",
"homedecor_glowlight_thick_"..color.."_sides.png",
"homedecor_glowlight_thick_"..color.."_sides.png"
},
selection_box = glowlight_nodebox.half,
node_box = glowlight_nodebox.half,
groups = { snappy = 3, ud_param2_colorable = 1 },
groups = { snappy = 3 },
light_source = default.LIGHT_MAX,
sounds = default.node_sound_glass_defaults(),
after_place_node = unifieddyes.fix_rotation,
after_dig_node = unifieddyes.after_dig_node
on_place = minetest.rotate_node
})
minetest.register_node("homedecor:glowlight_quarter", {
description = S("Thin Glowlight"),
homedecor.register("glowlight_quarter_"..color, {
description = S("Thin Glowlight ("..color..")"),
tiles = {
"homedecor_glowlight_top.png",
"homedecor_glowlight_bottom.png",
"homedecor_glowlight_thin_sides.png",
"homedecor_glowlight_thin_sides.png",
"homedecor_glowlight_thin_sides.png",
"homedecor_glowlight_thin_sides.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
selection_box = {
type = "wallmounted",
wall_top = { -0.5, 0.25, -0.5, 0.5, 0.5, 0.5 },
wall_bottom = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 },
wall_side = { -0.5, -0.5, -0.5, -0.25, 0.5, 0.5 }
"homedecor_glowlight_"..color.."_top.png",
"homedecor_glowlight_"..color.."_bottom.png",
"homedecor_glowlight_thin_"..color.."_sides.png",
"homedecor_glowlight_thin_"..color.."_sides.png",
"homedecor_glowlight_thin_"..color.."_sides.png",
"homedecor_glowlight_thin_"..color.."_sides.png"
},
selection_box = glowlight_nodebox.quarter,
node_box = glowlight_nodebox.quarter,
groups = { snappy = 3, ud_param2_colorable = 1 },
groups = { snappy = 3 },
light_source = default.LIGHT_MAX-1,
sounds = default.node_sound_glass_defaults(),
after_place_node = unifieddyes.fix_rotation,
after_dig_node = unifieddyes.after_dig_node
on_place = minetest.rotate_node
})
minetest.register_node("homedecor:glowlight_small_cube", {
description = S("Small Glowlight Cube"),
-- Glowlight "cubes"
homedecor.register("glowlight_small_cube_"..color, {
description = S("Small Glowlight Cube ("..color..")"),
tiles = {
"homedecor_glowlight_cube_tb.png",
"homedecor_glowlight_cube_tb.png",
"homedecor_glowlight_cube_sides.png",
"homedecor_glowlight_cube_sides.png",
"homedecor_glowlight_cube_sides.png",
"homedecor_glowlight_cube_sides.png"
},
paramtype = "light",
paramtype2 = "colorwallmounted",
drawtype = "nodebox",
palette = "unifieddyes_palette_colorwallmounted.png",
selection_box = {
type = "wallmounted",
wall_top = { -0.25, 0, -0.25, 0.25, 0.5, 0.25 },
wall_bottom = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 },
wall_side = { -0.5, -0.25, -0.25, 0, 0.25, 0.25 }
"homedecor_glowlight_cube_"..color.."_tb.png",
"homedecor_glowlight_cube_"..color.."_tb.png",
"homedecor_glowlight_cube_"..color.."_sides.png",
"homedecor_glowlight_cube_"..color.."_sides.png",
"homedecor_glowlight_cube_"..color.."_sides.png",
"homedecor_glowlight_cube_"..color.."_sides.png"
},
selection_box = glowlight_nodebox.small_cube,
node_box = glowlight_nodebox.small_cube,
groups = { snappy = 3, ud_param2_colorable = 1 },
groups = { snappy = 3 },
light_source = default.LIGHT_MAX-1,
sounds = default.node_sound_glass_defaults(),
after_place_node = unifieddyes.fix_rotation,
after_dig_node = unifieddyes.after_dig_node
on_place = minetest.rotate_node
})
end
homedecor.register("plasma_lamp", {
description = S("Plasma Lamp"),
description = "Plasma Lamp",
drawtype = "glasslike_framed",
tiles = {"default_gold_block.png","homedecor_glass_face_clean.png"},
special_tiles = {
@ -116,10 +147,10 @@ homedecor.register("plasma_lamp", {
})
homedecor.register("plasma_ball", {
description = S("Plasma Ball"),
description = "Plasma Ball",
mesh = "homedecor_plasma_ball.obj",
tiles = {
"homedecor_generic_plastic.png",
"homedecor_generic_plastic_black.png",
{
name = "homedecor_plasma_ball_streamers.png",
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0},
@ -249,10 +280,10 @@ homedecor.register("oil_lamp", {
mesh = "homedecor_oil_lamp.obj",
tiles = {
"homedecor_generic_metal_brass.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_black },
{ name = "homedecor_generic_metal.png", color = 0xffa00000 },
"homedecor_generic_metal_black.png",
"homedecor_generic_metal_black.png^[colorize:#ff0000:160",
"homedecor_oil_lamp_wick.png",
{ name = "homedecor_generic_metal.png", color = 0xffa00000 },
"homedecor_generic_metal_black.png^[colorize:#ff0000:150",
"homedecor_oil_lamp_glass.png",
},
use_texture_alpha = true,
@ -325,7 +356,7 @@ homedecor.register("ceiling_lantern", {
tiles = { "homedecor_light.png", "homedecor_generic_metal_wrought_iron.png" },
use_texture_alpha = true,
inventory_image = "homedecor_ceiling_lantern_inv.png",
description = S("Ceiling Lantern"),
description = "Ceiling Lantern",
groups = {snappy=3},
light_source = 11,
selection_box = cl_cbox,
@ -361,31 +392,17 @@ homedecor.register("lattice_lantern_small", {
on_place = minetest.rotate_node
})
local brightness_tab = {
0xffd0d0d0,
0xffd8d8d8,
0xffe0e0e0,
0xffe8e8e8,
0xffffffff,
}
local repl = { off="low", low="med", med="hi", hi="max", max="off", }
-- table lamps and standing lamps
local repl = {
["off"] ="low",
["low"] ="med",
["med"] ="hi",
["hi"] ="max",
["max"] ="off",
}
local brights_tab = { 0, 50, 100, 150, 200 }
local lamp_colors = {
"white",
"blue",
"green",
"pink",
"red",
"violet",
{"white", "#ffffffe0:175"},
{"blue", "#2626c6e0:200"},
{"green", "#27a927e0:200"},
{"pink", "#ff8fb7e0:200"},
{"red", "#ad2323e0:200"},
{"violet", "#7f29d7e0:200"}
}
local tlamp_cbox = {
@ -398,109 +415,111 @@ local slamp_cbox = {
fixed = { -0.25, -0.5, -0.25, 0.25, 1.5, 0.25 }
}
local function reg_lamp(suffix, nxt, light, brightness)
local function reg_lamp(suffix, nxt, tilesuffix, light, color)
local lampcolor = "_"..color[1]
local colordesc = " ("..color[1]..")"
local woolcolor = color[1]
local invcolor = color[2]
local wool_brighten = (light or 0) * 7
local bulb_brighten = (light or 0) * 14
local wool_brighten = (light or 0) * 15
if color == "" then
lampcolor = ""
colordesc = " (white)"
woolcolor = "white"
end
homedecor.register("table_lamp_"..suffix, {
description = S("Table Lamp"),
homedecor.register("table_lamp"..lampcolor.."_"..suffix, {
description = S("Table Lamp "..colordesc),
mesh = "homedecor_table_lamp.obj",
tiles = {
"wool_grey.png^[colorize:#ffffff:"..wool_brighten,
{ name = "homedecor_table_standing_lamp_lightbulb.png", color = brightness_tab[brightness] },
{ name = "homedecor_generic_wood_red.png", color = 0xffffffff },
{ name = "homedecor_generic_metal.png", color = homedecor.color_black },
"wool_"..woolcolor..".png^[colorize:#ffffff:"..wool_brighten,
"homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:"..bulb_brighten,
"homedecor_generic_wood_red.png",
"homedecor_generic_metal_black.png^[brighten",
},
inventory_image = "homedecor_table_lamp_foot_inv.png^homedecor_table_lamp_top_inv.png",
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
inventory_image = "homedecor_table_lamp_foot_inv.png^(homedecor_table_lamp_top_inv.png^[colorize:"..invcolor..")",
walkable = false,
light_source = light,
selection_box = tlamp_cbox,
sounds = default.node_sound_wood_defaults(),
groups = {cracky=2,oddly_breakable_by_hand=1, ud_param2_colorable = 1,
groups = {cracky=2,oddly_breakable_by_hand=1,
not_in_creative_inventory=((light ~= nil) and 1) or nil,
},
drop = "homedecor:table_lamp_off",
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
node.name = "homedecor:table_lamp_"..repl[suffix]
drop = "homedecor:table_lamp"..lampcolor.."_off",
on_punch = function(pos, node, puncher)
node.name = "homedecor:table_lamp"..lampcolor.."_"..repl[suffix]
minetest.set_node(pos, node)
end,
after_dig_node = unifieddyes.after_dig_node
})
homedecor.register("standing_lamp_"..suffix, {
description = S("Standing Lamp"),
-- standing lamps
homedecor.register("standing_lamp"..lampcolor.."_"..suffix, {
description = S("Standing Lamp"..colordesc),
mesh = "homedecor_standing_lamp.obj",
tiles = {
"wool_grey.png^[colorize:#ffffff:"..wool_brighten,
{ name = "homedecor_table_standing_lamp_lightbulb.png", color = brightness_tab[brightness] },
{ name = "homedecor_generic_wood_red.png", color = 0xffffffff },
{ name = "homedecor_generic_metal.png", color = homedecor.color_black },
"wool_"..woolcolor..".png^[colorize:#ffffff:"..wool_brighten,
"homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:"..bulb_brighten,
"homedecor_generic_wood_red.png",
"homedecor_generic_metal_black.png^[brighten",
},
inventory_image = "homedecor_standing_lamp_foot_inv.png^homedecor_standing_lamp_top_inv.png",
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
inventory_image = "homedecor_standing_lamp_foot_inv.png^(homedecor_standing_lamp_top_inv.png^[colorize:"..invcolor..")",
walkable = false,
light_source = light,
groups = {cracky=2,oddly_breakable_by_hand=1, ud_param2_colorable = 1,
groups = {cracky=2,oddly_breakable_by_hand=1,
not_in_creative_inventory=((light ~= nil) and 1) or nil,
},
selection_box = slamp_cbox,
sounds = default.node_sound_wood_defaults(),
on_rotate = screwdriver.rotate_simple,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
node.name = "homedecor:standing_lamp_"..repl[suffix]
on_punch = function(pos, node, puncher)
node.name = "homedecor:standing_lamp"..lampcolor.."_"..repl[suffix]
minetest.set_node(pos, node)
end,
after_dig_node = unifieddyes.after_dig_node,
expand = { top="placeholder" },
})
minetest.register_alias("homedecor:standing_lamp_bottom"..lampcolor.."_"..suffix, "homedecor:standing_lamp"..lampcolor.."_"..suffix)
minetest.register_alias("homedecor:standing_lamp_top"..lampcolor.."_"..suffix, "air")
-- for old maps that had the original 3dforniture mod
minetest.register_alias("3dforniture:table_lamp_"..suffix, "homedecor:table_lamp_"..suffix)
if lampcolor == "" then
minetest.register_alias("3dforniture:table_lamp_"..suffix, "homedecor:table_lamp_"..suffix)
end
end
reg_lamp("off", "low", nil, 1 )
reg_lamp("low", "med", 3, 2 )
reg_lamp("med", "hi", 7, 3 )
reg_lamp("hi", "max", 11, 4 )
reg_lamp("max", "off", 14, 5 )
-- "gooseneck" style desk lamps
for _, color in ipairs(lamp_colors) do
reg_lamp("off", "low", "", nil, color )
reg_lamp("low", "med", "l", 3, color )
reg_lamp("med", "hi", "m", 7, color )
reg_lamp("hi", "max", "h", 11, color )
reg_lamp("max", "off", "x", 14, color )
end
local dlamp_cbox = {
type = "wallmounted",
wall_side = { -0.2, -0.5, -0.15, 0.32, 0.12, 0.15 },
type = "fixed",
fixed = { -0.2, -0.5, -0.15, 0.32, 0.12, 0.15 },
}
homedecor.register("desk_lamp", {
description = S("Desk Lamp"),
mesh = "homedecor_desk_lamp.obj",
tiles = {
"homedecor_generic_metal.png",
"homedecor_generic_metal.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
{ name = "homedecor_table_standing_lamp_lightbulb.png", color = brightness_tab[5] },
},
inventory_image = "homedecor_desk_lamp_inv.png",
paramtype = "light",
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
selection_box = dlamp_cbox,
node_box = dlamp_cbox,
walkable = false,
groups = {snappy=3, ud_param2_colorable = 1},
after_place_node = unifieddyes.fix_rotation_nsew,
after_dig_node = unifieddyes.after_dig_node,
on_rotate = unifieddyes.fix_after_screwdriver_nsew
})
local dlamp_colors = { "red","blue","green","violet" }
-- "kitchen"/"dining room" ceiling lamp
for _, color in ipairs(dlamp_colors) do
homedecor.register("desk_lamp_"..color, {
description = S("Desk Lamp ("..color..")"),
mesh = "homedecor_desk_lamp.obj",
tiles = {
"homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:200",
"homedecor_generic_metal_black.png^[colorize:"..color..":150",
"homedecor_generic_metal_black.png",
"homedecor_generic_metal_black.png^[colorize:"..color..":150"
},
inventory_image = "homedecor_desk_lamp_stem_inv.png^(homedecor_desk_lamp_metal_inv.png^[colorize:"..color..":140)",
selection_box = dlamp_cbox,
walkable = false,
groups = {snappy=3},
})
end
homedecor.register("ceiling_lamp", {
description = S("Ceiling Lamp"),
@ -508,14 +527,14 @@ homedecor.register("ceiling_lamp", {
tiles = {
"homedecor_generic_metal_brass.png",
"homedecor_ceiling_lamp_glass.png",
"homedecor_table_standing_lamp_lightbulb.png",
{ name = "homedecor_generic_plastic.png", color = 0xff442d04 },
"homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:200",
"homedecor_generic_plastic_black.png^[colorize:#442d04:200",
},
inventory_image = "homedecor_ceiling_lamp_inv.png",
light_source = default.LIGHT_MAX,
groups = {snappy=3},
walkable = false,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_punch = function(pos, node, puncher)
minetest.set_node(pos, {name = "homedecor:ceiling_lamp_off"})
end,
})
@ -526,200 +545,13 @@ homedecor.register("ceiling_lamp_off", {
tiles = {
"homedecor_generic_metal_brass.png",
"homedecor_ceiling_lamp_glass.png",
{ "homedecor_table_standing_lamp_lightbulb.png", color = 0xffd0d0d0 },
{ name = "homedecor_generic_plastic.png", color = 0xff442d04 },
"homedecor_table_standing_lamp_lightbulb.png",
"homedecor_generic_plastic_black.png^[colorize:#442d04:200",
},
groups = {snappy=3, not_in_creative_inventory=1},
walkable = false,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_punch = function(pos, node, puncher)
minetest.set_node(pos, {name = "homedecor:ceiling_lamp"})
end,
drop = "homedecor:ceiling_lamp"
})
-- conversion LBM for param2 coloring
homedecor.old_static_nodes = {
"homedecor:glowlight_quarter_white",
"homedecor:glowlight_quarter_yellow",
"homedecor:glowlight_half_white",
"homedecor:glowlight_half_yellow",
"homedecor:glowlight_small_cube_white",
"homedecor:glowlight_small_cube_yellow"
}
local lamp_power = {"off", "low", "med", "hi", "max"}
for _, power in ipairs(lamp_power) do
for _, color in ipairs(lamp_colors) do
table.insert(homedecor.old_static_nodes, "homedecor:table_lamp_"..color.."_"..power)
table.insert(homedecor.old_static_nodes, "homedecor:standing_lamp_"..color.."_"..power)
end
end
minetest.register_lbm({
name = "homedecor:convert_lighting",
label = "Convert homedecor glowlights, table lamps, and standing lamps to use param2 color",
run_at_every_load = false,
nodenames = homedecor.old_static_nodes,
action = function(pos, node)
local name = node.name
local newname
local color
if string.find(name, "small_cube") then
newname = "homedecor:glowlight_small_cube"
elseif string.find(name, "glowlight_half") then
newname = "homedecor:glowlight_half"
elseif string.find(name, "glowlight_quarter") then
newname = "homedecor:glowlight_quarter"
end
local lampname
if string.find(name, "standing_lamp") then
lampname = "homedecor:standing_lamp"
elseif string.find(name, "table_lamp") then
lampname = "homedecor:table_lamp"
end
if lampname then
newname = lampname
if string.find(name, "_off") then
newname = newname.."_off"
elseif string.find(name, "_low") then
newname = newname.."_low"
elseif string.find(name, "_med") then
newname = newname.."_med"
elseif string.find(name, "_hi") then
newname = newname.."_hi"
elseif string.find(name, "_max") then
newname = newname.."_max"
end
end
if string.find(name, "red") then
color = "red"
elseif string.find(name, "pink") then
color = "pink"
elseif string.find(name, "green") then
color = "green"
elseif string.find(name, "blue") then
color = "blue"
elseif string.find(name, "yellow") then
color = "yellow"
elseif string.find(name, "violet") then
color = "violet"
else
color = "white"
end
local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, "extended")
local old_fdir
local new_node = newname
local new_fdir = 1
local param2
if string.find(name, "glowlight") then
paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
old_fdir = math.floor(node.param2 / 4)
if old_fdir == 5 then
new_fdir = 0
elseif old_fdir == 1 then
new_fdir = 5
elseif old_fdir == 2 then
new_fdir = 4
elseif old_fdir == 3 then
new_fdir = 3
elseif old_fdir == 4 then
new_fdir = 2
elseif old_fdir == 0 then
new_fdir = 1
end
param2 = paletteidx + new_fdir
else
param2 = paletteidx
end
local meta = minetest.get_meta(pos)
if string.find(name, "table_lamp") or string.find(name, "standing_lamp") then
meta:set_string("palette", "ext")
end
minetest.set_node(pos, { name = new_node, param2 = param2 })
meta:set_string("dye", "unifieddyes:"..color)
end
})
-- this one's for the small "gooseneck" desk lamps
homedecor.old_static_desk_lamps = {
"homedecor:desk_lamp_red",
"homedecor:desk_lamp_blue",
"homedecor:desk_lamp_green",
"homedecor:desk_lamp_violet",
}
minetest.register_lbm({
name = "homedecor:convert_desk_lamps",
label = "Convert homedecor desk lamps to use param2 color",
run_at_every_load = false,
nodenames = homedecor.old_static_desk_lamps,
action = function(pos, node)
local name = node.name
local color = string.sub(name, string.find(name, "_", -8) + 1)
if color == "green" then
color = "medium_green"
elseif color == "violet" then
color = "magenta"
end
local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
local old_fdir = math.floor(node.param2 % 32)
local new_fdir = 3
if old_fdir == 0 then
new_fdir = 3
elseif old_fdir == 1 then
new_fdir = 4
elseif old_fdir == 2 then
new_fdir = 2
elseif old_fdir == 3 then
new_fdir = 5
end
local param2 = paletteidx + new_fdir
minetest.set_node(pos, { name = "homedecor:desk_lamp", param2 = param2 })
local meta = minetest.get_meta(pos)
meta:set_string("dye", "unifieddyes:"..color)
end
})
minetest.register_lbm({
name = "homedecor:recolor_lighting",
label = "Convert some kinds of lights to use UD extended palette",
run_at_every_load = false,
nodenames = {
"homedecor:table_lamp_off",
"homedecor:table_lamp_low",
"homedecor:table_lamp_med",
"homedecor:table_lamp_hi",
"homedecor:table_lamp_max",
"homedecor:standing_lamp_off",
"homedecor:standing_lamp_low",
"homedecor:standing_lamp_med",
"homedecor:standing_lamp_hi",
"homedecor:standing_lamp_max",
},
action = function(pos, node)
local meta = minetest.get_meta(pos)
if meta:get_string("palette") ~= "ext" then
minetest.swap_node(pos, { name = node.name, param2 = unifieddyes.convert_classic_palette[node.param2] })
meta:set_string("palette", "ext")
end
end
})

0
homedecor/listnodes.sh Normal file → Executable file
View File

221
homedecor/locale/de.txt Executable file
View File

@ -0,0 +1,221 @@
# Translation by Xanthin
### Special strings ###
### kitchen_cabinet.lua ###
Kitchen Cabinet = Kuechenschrank
## 1: Player name, 2: position
%s moves stuff in kitchen cabinet at %s = %s bewegt etwas im Kuechenschrank bei %s
%s moves stuff to kitchen cabinet at %s = %s legt etwas in den Kuechenschrank bei %s
%s takes stuff from kitchen cabinet at %s = %s nimmt etwas aus dem Kuechenschrank bei %s
Half-height Kitchen Cabinet (on ceiling) = Halbhoher Kuechenschrank (haengend)
Under-sink cabinet = Unterschrank
Kitchen Cabinet with sink = Unterschrank mit Spuele
### door_models.lua ###
Mahogany Closet Door = Wandschranktuer aus Mahagoni
Oak Closet Door = Wandschranktuer aus Eiche
Fancy Wood/Glass Door = Schicke Holz/Glastuer
Glass Office Door = Glasbuerotuer
Glass and Wood, Mahogany-colored = Glas-Holz-Tuer, mahagonifarben
Glass and Wood, Oak-colored = Glas-Holz-Tuer, eichefarben
Glass and Wood, White = Glas-Holz-Tuer, weiss
Plain Wooden Door = Einfache Holztuer
left = links
right = rechts
## 1: Side the doors opens to
#deaktiviert, weil es nicht funktioniert
#(Top Half, %s-opening) = (obere Haelfte, %soeffnend)
#(%s-opening) = (%soeffnend)
### door_nodes.lua ###
Not enough space above that spot to place a door! = Es gibt nicht genug Raum ueber dieser Stelle um die Tuer zu platzieren!
### crafts.lua ###
Brass Ingot = Messingbarren
Bucket of white paint = Eimer mit weisser Farbe
Legs for Small Utility table = Tischbeine fuer kleinen Arbeitsplatte
Plastic sheet = Kunststoffplatte
Silicon lump = Silikonklumpen
Simple Integrated Circuit = Einfacher integrierter Schaltkreis
Small Wooden Drawer = Kleiner Holzschubkasten
Terracotta Roof Tile = Terrakottadachziegel
Titanium Dioxide = Titandioxid
Uncooked Terracotta Base = Ungebrannte Terrakotta
Unprocessed Plastic base = Unverarbeitetes Plastik
### door_models.lua ###
### door_nodes.lua ###
### fences.lua ###
Barbed Wire Fence = Stacheldrahtzaun
Barbed Wire Fence Corner = Stacheldrahtzaunecke
Barbed Wire Fence Gate = Stacheldrahtzauntor
Brass Fence/railing = Messingzaun/Gelaender
Brass Fence/railing with sign = Messingzaun/Gelaender mit Schild
Chainlink Fence = Maschendrahtzaun
Chainlink Fence Corner = Maschendrahtzaunecke
Chainlink Fence Gate = Maschendrahtzauntor
Unpainted Picket Fence = Unlackierter Lattenenzaun
Unpainted Picket Fence Corner = Unlackierte Lattenenzaunecke
Unpainted Picket Fence Gate = Unlackiertes Lattenzauntor
White Picket Fence = Weisser Lattenzaun
White Picket Fence Corner = Weisse Lattenzaunecke
White Picket Fence Gate = Weisses Lattenzauntor
Wooden Privacy Fence = Sichtschutzzaun aus Holz
Wooden Privacy Fence Corner = Sichtschutzzaunecke aus Holz
Wrought Iron Fence/railing = Schmiedeeiserner Zaun/Gelaender
Wrought Iron Fence/railing with sign = Schmiedeeiserner Zaun/Gelaender mit Schild
want to simply place the wielded item like usual. = Moechte einfach den getragenen Gegenstand wie gewohnt platzieren.
### furniture.lua ###
Table = Tisch
Chair = Stuhl
Black = schwarz
Red = rot
Pink = rosa
Violet = violett
Blue = blau
Dark Green = dunkelgruen
## 1: Color name
Armchair (%s) = Sessel (%s)
Table Lamp = Tischlampe
### furniture_medieval.lua ###
Bars = Gitterstaebe
Binding Bars = Eckverbindung fuer Gitterstaebe
Chains = Ketten
Wall Torch = Wandfackel
### furniture_bathroom.lua ###
Toilet = Toilette
Sink = Waschbecken
Taps = Wasserhahn
Shower Tray = Duschtasse
Shower Head = Duschbrause
### init.lua ###
Loaded! = Geladen!
Air Conditioner = Klimaanlage
Asphalt Shingles = Asphaltschindeln
Asphalt Shingles (outer corner) = Asphaltschindeln (Aussenecke)
Asphalt Shingles (inner corner) = Asphaltschindeln (Innenecke)
Black Plastic Flower Pot = Schwarzer Plastikblumentopf
Brass Pole = Messingstange
Brass Table Legs = Messingtischbeine
Wrought Iron Table Legs = Schmiedeeiserne Tischbeine
red = rot
green = gruen
blue = blau
white = weiss
pink = rosa
violet = violett
## 1: Color name
Curtains (%s) = Vorhaenge (%s)
Drop-Ceiling Tile = Deckenplatte
Glass Skylight = Glasdachfenster
Glass Skylight Frosted = Milchglasdachfenster
Glass Table (Small, Round) = Glastischplatte (klein, rund)
Glass Table (Small, Square) = Glastischplatte (klein, quadratisch)
Glass Table Piece (large) = Glastischplatte (gross)
Green Plastic Flower Pot = Gruener Plastikblumentopf
Large Area Rug = Grosser Teppich
Glass Table Piece (large) = Glastischplatte (gross)
Large Stereo Speaker = Grosser Lautsprecher
Legs for Utility Table = Tischbeine fuer Arbeitsplatte
Projection Screen Material = Projektorleinwand
Small Surround Speaker = Kleiner Lautsprecher
Small Throw Rug = Kleiner Teppich
Stereo Receiver = Stereoanlage
Terracotta Flower Pot = Terrakottablumentopf
Terracotta Shingles = Terrakottaschindeln
Terracotta Shingles (outer corner) = Terrakottaschindeln (Aussenecke)
Terracotta Shingles (inner corner) = Terrakottaschindeln (Innenecke)
Textured Ceiling Paint = Deckenfarbe (Raufaser)
Utility Table = Arbeitsplatte
Utility table mk2 = Arbeitsplatte Modell 2
Wooden Shutter (Black) = Holzjalousie (schwarz)
Wooden Shutter (Dark grey) = Holzjalousie (dunkelgrau)
Wooden Shutter (Forest green) = Holzjalousie (waldgruen)
Wooden Shutter (Grey) = Holzjalousie (grau)
Wooden Shutter (Light blue) = Holzjalousie (hellblau)
Wooden Shutter (Violet) = Holzjalousie (violett)
Wooden Shutter (Red) = Holzjalousie (rot)
Wooden Shutter (Mahogany) = Holzjalousie (mahagoni)
Wooden Shutter (Unpainted oak) = Holzjalousie (eiche)
Wooden Shutter (White) = Holzjalousie (weiss)
Wooden Shutter (Yellow) = Holzjalousie (gelb)
Wood Table Piece (large)= Holztischplatte (gross)
Wood Table (Small, Round) = Holztischplatte (klein, rund)
Wood Table (Small, Square) = Holztischplatte (klein, quadratisch)
Wood Shingles = Holzschindeln
Wood Shingles (outer corner) = Holzschindeln (Aussenecke)
Wood Shingles (inner corner) = Holzschindeln (Innenecke)
Wrought Iron Pole = Schmiedeeiserne Stange
someone = jemand
## 1: Player name
Sorry, %s owns that spot. = Tut mir leid, %s gehoert diese Stelle.
### lighting.lua ###
White Glowlight (small cube) = Weisse Gluehlampe (kleiner Wuerfel)
White Glowlight (small cube, on ceiling) = Weisse Gluehlampe (kleiner Wuerfel, an der Decke)
White Glowlight (thick) = Weisse Gluehlampe (dick)
White Glowlight (thick, on wall) = Weisse Gluehlampe (dick, an der Wand)
White Glowlight (thin) = Weisse Gluehlampe (duenn)
White Glowlight (thin, on wall) = Weisse Gluehlampe (duenn, an der Wand)
Yellow Glowlight (small cube) = Gelbe Gluehlampe (kleiner Wuerfel)
Yellow Glowlight (small cube, on ceiling) = Gelbe Gluehlampe (kleiner Wuerfel, an der Decke)
Yellow Glowlight (thick) = Gelbe Gluehlampe (dick)
Yellow Glowlight (thick, on wall) = Gelbe Gluehlampe (dick, an der Wand)
Yellow Glowlight (thin) = Gelbe Gluehlampe (duenn)
Yellow Glowlight (thin, on wall) = Gelbe Gluehlampe (duenn, an der Wand)
### locked.lua ###
## 1: Item description, 2: Owner name
%s (owned by %s) = %s (gehoert %s)
## 1: Player name, 2: Item description, 3: Owner name, 4: Position
%s tried to access a %s belonging to %s at %s = %s versuchte Zugang zu %s von %s zu bekommen bei %s
## 1: Item description
%s (Locked) = %s (verschlossen)
Locked Fridge = Verschlossener Kuehlschrank
Locked Cabinet = Verschlossener Schrank
Locked Nightstand = Verschlossener Nachttisch
Locked Oven = Verschlossener Herd
Locked Oven (active) = Verschlossener Herd (aktiv)
Locked Microwave Oven = Verschlossene Mikrowelle
Locked Microwave Oven (active) = Verschlossene Mikrowelle (aktiv)
### nightstands.lua ###
Mahogany Nightstand with One Drawer = Mahagoninachttisch mit einer Schublade
Mahogany Nightstand with Two Drawers = Mahagoninachttisch mit zwei Schubladen
Oak Nightstand with One Drawer = Eichenachttisch mit einer Schublade
Oak Nightstand with Two Drawers = Eichenachttisch mit zwei Schubladen
## 1: Player name, 2: position
%s moves stuff in nightstand at %s = %s bewegt etwas im Nachttisch
%s moves stuff to nightstand at %s = %s legt etwas in den Nachttisch
%s takes stuff from nightstand at %s = %s nimmt etwas aus dem Nachttisch
One-drawer Nightstand = Nachttisch mit einer Schublade
Two-drawer Nightstand = Nachttisch mit zwei Schubladen
### oven.lua ###
Oven = Herd
Microwave Oven = Mikrowelle
## 1: Item description, 2: Percentage
%s active: %d%% = %s ist aktiv: %d%%
## 1: Item description
%s is empty = %s ist leer
: Out of fuel = : kein Brennmaterial vorhanden
: output bins are full = : Produktfelder sind voll
### refrigerator.lua ###
Refrigerator = Kuehlschrank
## 1: Player name, 2: position
%s moves stuff in refrigerator at %s = %s bewegt etwas im Kuehlschrank bei %s
%s moves stuff to refrigerator at %s = %s legt etwas in den Kuehlschrank bei %s
%s takes stuff from refrigerator at %s = %s nimmt etwas aus dem Kuehlschrank bei %s
Not enough vertical space to place a refrigerator! = Es gibt nicht genug Raum ueber dieser Stelle um den Kuehlschrank zu platzieren!
### television.lua ###
Small CRT Television = Kleiner Roehrenfernseher

192
homedecor/locale/es.txt Executable file
View File

@ -0,0 +1,192 @@
#
# Language: Español
# Author: Diego Martínez <lkaezadl3@gmail.com>
#
### kitchen_cabinet.lua ###
Kitchen Cabinet = Gabinete de Cocina
## 1: Player name, 2: position
%s moves stuff in kitchen cabinet at %s = %s mueve cosas en gabinete de cocina en %s
%s moves stuff to kitchen cabinet at %s = %s mueve cosas al gabinete de cocina en %s
%s takes stuff from kitchen cabinet at %s = %s toma cosas del gabinete de cocina en %s
Half-height Kitchen Cabinet (on ceiling) = Gabinete de cocina de media altura (en techo)
Under-sink cabinet = Gabinete con Lavabo
Kitchen Cabinet with sink = Gabinete de cocina con lavabo
### door_models.lua ###
Mahogany Closet Door = Puerta de Armario de Caoba
Oak Closet Door = Puerta de Armario de Roble
Fancy Wood/Glass Door = Puerta de Madera y Cristal de Lujo
Glass Office Door = Puerta de Oficina de Cristal
Glass and Wood, Mahogany-colored = Cristal y Madera, color Caoba
Glass and Wood, Oak-colored = Cristal y Madera, color Roble
Glass and Wood, White = Cristal y Madera, color Blanco
Plain Wooden Door = Puerta Simple de Madera
left = izquierda
right = derecha
## 1: Side the doors opens to
(Top Half, %s-opening) = (Parte Superior, abre a la %s)
(%s-opening) = (abre a la %s)
### door_nodes.lua ###
Not enough vertical space to place a door! = ¡No hay suficiente espacio vertical para colocar una puerta!
### crafts.lua ###
Brass Ingot = Lingote de Latón
Bucket of white paint = Cubo de Pintura Blanca
Legs for Small Utility table = Patas de Mesa Utilitaria Pequeña
Plastic sheet = Lámina de Plástico
Silicon lump = Terrón de Silicio
Simple Integrated Circuit = Circuito Integrado Simple
Small Wooden Drawer = Cajón Pequeño de Madera
Terracotta Roof Tile = Teja de Terracota
Titanium Dioxide = Dióxido de Titanio
Uncooked Terracotta Base = Base de Terracota sin Cocer
Unprocessed Plastic base = Base de Plástico sin Procesar
### fences.lua ###
Barbed Wire Fence = Cerca de Alambre de Púas
Barbed Wire Fence Gate = Portón de Cerca de Alambre de Púas
Brass Fence/railing = Cerca/Barandilla de Latón
Brass Fence/railing with sign = Cerca/Barandilla de Latón con Letrero
Chainlink Fence = Cerca de Cadenas
Chainlink Fence Gate = Portón de Cerca de Cadenas
Chainlink Fence Gate (open) = Portón de Cerca de Cadenas (Abierto)
Unpainted Picket Fence = Cerca de Piquete sin pintar
Unpainted Picket Fence Gate = Portón de Cerca de Piquete sin pintar
White Picket Fence = Cerca de Piquete blanca
White Picket Fence Gate = Portón de Cerca de Piquete blanca
Wooden Privacy Fence = Cerca privada de madera
Wrought Iron Fence/railing = Cerca/Barandilla de Hierro Forjado
Wrought Iron Fence/railing with sign = Cerca/Barandilla de Hierro Forjado con Letrero
want to simply place the wielded item like usual. = solo se desea colocar el objeto empuñado normalmente.
### furniture_medieval.lua ###
Bars = Barras
Binding Bars = Barras de Unión
Chains = Cadenas
Wall Torch = Antorcha de Pared
### furniture_bathroom.lua ###
Toilet = Inodoro
Sink = Lavabo
Taps = Grifo
Shower Tray = Piso de Ducha
Shower Head = Ducha
### init.lua ###
Loaded! = ¡Cargado!
Asphalt Shingles = Tejas de Asfalto
Black Plastic Flower Pot = Florero de Plástico Negro
Brass Pole = Poste de Latón
Brass Table Legs = Patas de Mesa de Latón
red = rojas
green = verdes
blue = azules
white = blancas
pink = rosas
violet = violetas
## 1: Color name
Curtains (%s) = Cortinas (%s)
Drop-Ceiling Tile = Cielorraso
Glass Skylight = Claraboya de Cristal
Glass Table (Small, Round) = Mesa de Cristal (Pequeña, Redonda)
Glass Table (Small, Square) = Mesa de Cristal (Pequeña, Cuadrada)
Green Plastic Flower Pot = Florero de Plástico Negro
Large Area Rug = Manta Grande
Large Glass Table Piece = Pieza de Mesa de Cristal Grande
Large Stereo Speaker = Altavoz de Estéreo Grande
Legs for Utility Table = Patas de Mesa Utilitaria
Projection Screen Material = Material de Pantalla de Proyección
Small Surround Speaker = Pequeño Altavoz Envolvente
Small Throw Rug = Manta Pequeña
Stereo Receiver = Receptor Estéreo
Terracotta Flower Pot = Florero de Terracota
Terracotta Roofing = Tejado de Terracota
Textured Ceiling Paint = Pintura Texturada para Techo
Utility Table = Mesa Utilitaria
Utility table mk2 = Mesa Utilitaria mk2
Wooden Shutter (Black) = Obturador de Madera (Negro)
Wooden Shutter (Dark Grey) = Obturador de Madera (Gris Oscuro)
Wooden Shutter (Forest Green) = Obturador de Madera (Verde Bosque)
Wooden Shutter (Grey) = Obturador de Madera (Gris)
Wooden Shutter (Light Blue) = Obturador de Madera (Azul Claro)
Wooden Shutter (Purple) = Obturador de Madera (Púrpura)
Wooden Shutter (Red) = Obturador de Madera (Rojo)
Wooden Shutter (Unpainted Mahogany) = Obturador de Madera (Caoba sin Pintar)
Wooden Shutter (Unpainted Oak) = Obturador de Madera (Roble sin Pintar)
Wooden Shutter (White) = Obturador de Madera (Blanco)
Wooden Shutter (Yellow) = Obturador de Madera (Amarillo)
Wooden Tabletop piece = Pieza de Mesa de Madera
Wooden Tabletop (Small, Round) = Pieza de Mesa de Madera (Pequeña, Redonda)
Wooden Tabletop (Small, Square) = Pieza de Mesa de Madera (Pequeña, Cuadrada)
Wood Shingles = Tejas de Madera
Wrought Iron Pole = Poste de Hierro Forjado
someone = alguien
## 1: Player name
Sorry, %s owns that spot. = Lo siento, %s es dueño de ése lugar.
### lighting.lua ###
White Glowlight (small cube) = Luz Blanca (cubo pequeño)
White Glowlight (small cube, on ceiling) = Luz Blanca (cubo pequeño, en techo)
White Glowlight (thick) = Luz Blanca (Gruesa)
White Glowlight (thick, on wall) = Luz Blanca (Gruesa, en pared)
White Glowlight (thin) = Luz Blanca (Fina)
White Glowlight (thin, on wall) = Luz Blanca (Fina, en pared)
Yellow Glowlight (small cube) = Luz Amarilla (cubo pequeño)
Yellow Glowlight (small cube, on ceiling) = Luz Amarilla (cubo pequeño, en techo)
Yellow Glowlight (thick) = Luz Amarilla (Gruesa)
Yellow Glowlight (thick, on wall) = Luz Amarilla (Gruesa, en pared)
Yellow Glowlight (thin) = Luz Amarilla (Fina)
Yellow Glowlight (thin, on wall) = Luz Amarilla (Fina, en pared)
### locked.lua ###
## 1: Item description, 2: Owner name
%s (owned by %s) = %s (propiedad de %s)
## 1: Player name, 2: Item description, 3: Owner name, 4: Position
%s tried to access a %s belonging to %s at %s = %s ha intentado acceder un(a) %s propiedad de %s en %s
## 1: Item description
%s (Locked) = %s (Cerrado)
Locked Cabinet = Gabinete Cerrado
Locked Nightstand = Mesa de Noche Cerrada
Locked Fridge = Refri Cerrado
Locked Oven = Estufa Cerrada
### nightstands.lua ###
Mahogany Nightstand with One Drawer = Mesa de Noche de Caoba, un Cajón
Mahogany Nightstand with Two Drawers = Mesa de Noche de Caoba, dos Cajones
Oak Nightstand with One Drawer = Mesa de Noche de Roble, un Cajón
Oak Nightstand with Two Drawers = Mesa de Noche de Roble, dos Cajones
## 1: Player name, 2: position
%s moves stuff in nightstand at %s = %s mueve cosas en mesa de noche en %s
%s moves stuff to nightstand at %s = %s mueve cosas hacia mesa de noche en %s
%s takes stuff from nightstand at %s = %s mueve cosas desde mesa de noche en %s
One-drawer Nightstand = Mesa de Noche de un Cajón
Two-drawer Nightstand = Mesa de Noche de dos Cajones
### oven.lua ###
Oven = Estufa
## 1: Percentage
Oven active: %d%% = Estufa activa: %d%%
Oven out of fuel = Estufa sin combustible
Oven is empty = Estufavacía
### refrigerator.lua ###
Refrigerator = Refrigerador
## 1: Player name, 2: position
%s moves stuff in refrigerator at %s = %s mueve cosas en refrigerador en %s
%s moves stuff to refrigerator at %s = %s mueve cosas hacia refrigerador en %s
%s takes stuff from refrigerator at %s = %s mueve cosas desde refrigerador en %s
Not enough vertical space to place a refrigerator! = ¡No hay suficiente espacio vertical para colocar un refrigerador!
### television.lua ###
Small CRT Television = Pequeña Televisión CRT
### signs_lib.lua ###
%s wrote "%s" to sign at %s = %s ha escrito "%s" en el letrero en %s
Reading cached character database. = Leyendo base de datos de catacteres.
Font seems to have changed. Rebuilding cache. = La fuente parece haber cambiado. Reconstruyendo información guardada.
Could not find font line height in cached DB. Trying brute force. = No se pudo encontrar la altura de línea en la base de datos. Intentando con fuerza bruta.
Registered %s and %s = Registrados %s y %s
signs loaded = letreros cargados

178
homedecor/locale/fr.txt Executable file
View File

@ -0,0 +1,178 @@
#
# Language: Français
# Author: Calinou
#
### kitchen_cabinet.lua ###
Kitchen Cabinet = Meuble de cuisine
## 1: Player name, 2: position
%s moves stuff in kitchen cabinet at %s = %s déplace des objets dans un meuble de cuisine à %s
%s moves stuff to kitchen cabinet at %s = %s édplace des objets vers un meuble de cuisine à %s
%s takes stuff from kitchen cabinet at %s = %s prend des objets d'un meuble de cuisine à %s
Half-height Kitchen Cabinet (on ceiling) = Meuble de cuisine réduit en hauteur (sur le plafond)
Under-sink cabinet = Meuble sous évier
Kitchen Cabinet with sink = Meuble de cuisine avec lavabo
### door_models.lua ###
Mahogany Closet Door = Porte en bois d'acajou
Oak Closet Door = Porte en bois de chêne
Fancy Wood/Glass Door = Porte artistique en bois et verre
Glass Office Door = Porte en verre
Glass and Wood, Mahogany-colored = Porte couleur acajou en bois et verre
Glass and Wood, Oak-colored = Porte couleur chêne en bois et verre
Glass and Wood, White = Porte blanche en bois et verre
Plain Wooden Door = Porte en bois simple
left = gauche
right = droite
## 1: Side the doors opens to
(Top Half, %s-opening) = (partie supérieur, charnière à %s)
(%s-opening) = (charnière à %s)
### door_nodes.lua ###
Not enough vertical space to place a door! = Pas assez d'espace vertical pour placer une porte !
### crafts.lua ###
Brass Ingot = Lingot de laiton
Bucket of white paint = Seau de peinture blanche
Legs for Small Utility table = Pieds pour table basse
Plastic sheet = Bout de plastique
Silicon lump = Silicone
Simple Integrated Circuit = Circuit intégré simple
Small Wooden Drawer = Petit tiroir en bois
Terracotta Roof Tile = Tuile de toit en terre cuite
Titanium Dioxide = Dioxide de titane
Uncooked Terracotta Base = Base de terre non cuite
Unprocessed Plastic base = Base de plastique non transformée
### fences.lua ###
Barbed Wire Fence = Barrière en fil barbelé
Barbed Wire Fence Gate = Porte de barrière en fil barbelé
Brass Fence/railing = Barrière en laiton
Brass Fence/railing with sign = Barrière en laiton avec pancarte
Chainlink Fence = Grillage
Chainlink Fence Gate = Porte de grillage
Chainlink Fence Gate (open) = Porte de grillage (ouverte)
Unpainted Picket Fence = Barrière en piquets non peinte
Unpainted Picket Fence Gate = Porte de barrière en piquets non peinte
White Picket Fence = Barrière en piquets blanche
White Picket Fence Gate = Porte de barrière en piquets blanche
Wooden Privacy Fence = Barrière en bois
Wrought Iron Fence/railing = Barrière en fer forgé
Wrought Iron Fence/railing with sign = Barrière en fer forgé avec pancarte
want to simply place the wielded item like usual. = veut simplement placer l'objet comme d'habitude.
### init.lua ###
Loaded! = Chargé !
Asphalt Shingles = Bardeaux d'asphalte
Black Plastic Flower Pot = Pot de fleur en plastique noir
Brass Pole = Barre en laiton
Brass Table Legs = Pieds de table en laiton
red = rouges
green = vertes
blue = bleues
white = blanches
pink = roses
violet = violettes
## 1: Color name
Curtains (%s) = Volets (%s)
Drop-Ceiling Tile = Dalle suspendue au plafond
Glass Skylight = Verre
Glass Table (Small, Round) = Table en verre (petite, ronde)
Glass Table (Small, Square) = Table en verre (petite, carrée)
Green Plastic Flower Pot = Pot de fleur en plastique vert
Large Area Rug = Grande couverture
Large Glass Table Piece = Grand bout de verre de table
Large Stereo Speaker = Grand haut-parleur stéréo
Legs for Utility Table = Pieds pour table basse
Projection Screen Material = Matériel pour projecteur
Small Surround Speaker = Petit haut-parleur surround
Small Throw Rug = Petite couverture
Stereo Receiver = Récepteur stéréo
Terracotta Flower Pot = Pot de fleur en terre cuite
Terracotta Roofing = Tuile en terre cuite
Textured Ceiling Paint = Papier peint avec motif pour plafond
Utility Table = Table basse
Utility table mk2 = Table basse MK2
Wooden Shutter (Black) = Volet en bois (noir)
Wooden Shutter (Dark Grey) = Volet en bois (gris foncé)
Wooden Shutter (Forest Green) = Volet en bois (vert foncé)
Wooden Shutter (Grey) = Volet en bois (gris)
Wooden Shutter (Light Blue) = Volet en bois (bleu clair)
Wooden Shutter (Purple) = Volet en bois (violet)
Wooden Shutter (Red) = Volet en bois (rouge)
Wooden Shutter (Unpainted Mahogany) = Volet en bois (acajou non peint)
Wooden Shutter (Unpainted Oak) = Volet en bois (chêne non peint)
Wooden Shutter (White) = Volet en bois (blanc)
Wooden Shutter (Yellow) = Volet en bois (jaune)
Wooden Tabletop piece = Bout de dessus de table
Wooden Tabletop (Small, Round) = Dessus de table (petit, rond)
Wooden Tabletop (Small, Square) = Dessus de table (petit, carré)
Wood Shingles = Bardeaux de bois
Wrought Iron Pole = Barre de fer forgé
someone = quelqu'un
## 1: Player name
Sorry, %s owns that spot. = Désolé, %s est propriétaire de cette zone.
### lighting.lua ###
White Glowlight (small cube) = Lampe blanche (petit cube)
White Glowlight (small cube, on ceiling) = Lampe blanche (petit cube, sur le plafond)
White Glowlight (thick) = Lampe blanche (épaisse)
White Glowlight (thick, on wall) = Lampe blanche (épaisse, sur le mur)
White Glowlight (thin) = Lampe blanche (fine)
White Glowlight (thin, on wall) = Lampe blanche (fine, sur le mur)
Yellow Glowlight (small cube) = Lampe jaune (petit cube)
Yellow Glowlight (small cube, on ceiling) = Lampe jaune (petit cube, sur le plafond)
Yellow Glowlight (thick) = Lampe jaune (épaisse)
Yellow Glowlight (thick, on wall) = Lampe jaune (épaisse, sur le mur)
Yellow Glowlight (thin) = Lampe jaune (fine)
Yellow Glowlight (thin, on wall) = Lampe jaune (fine, sur le mur)
### locked.lua ###
## 1: Item description, 2: Owner name
%s (owned by %s) = %s (propriété de %s)
## 1: Player name, 2: Item description, 3: Owner name, 4: Position
%s tried to access a %s belonging to %s at %s = %s a essayé d'accéder à %s qui est propriété de %s à %s
## 1: Item description
%s (Locked) = %s (verrouillé)
Locked Cabinet = Meuble verrouillé
Locked Nightstand = Table de chevet verrouillée
Locked Fridge = Réfrégirateur verrouillé
Locked Oven = Four verrouillé
### nightstands.lua ###
Mahogany Nightstand with One Drawer = Table de chevet en acajou avec un tiroir
Mahogany Nightstand with Two Drawers = Table de chevet en acajou avec deux tiroirs
Oak Nightstand with One Drawer = Table de chevet en chêne avec un tiroir
Oak Nightstand with Two Drawers = Table de chevet en chêne avec deux tiroirs
## 1: Player name, 2: position
%s moves stuff in nightstand at %s = %s déplace des objets dans une table de chevet à %s
%s moves stuff to nightstand at %s = %s déplace des objets vers une table de chevet à %s
%s takes stuff from nightstand at %s = %s prend des objets d'une table de chevet à %s
One-drawer Nightstand = Table de chevet avec un tiroir
Two-drawer Nightstand = Table de chevet avec deux tiroirs
### oven.lua ###
Oven = Four
## 1: Percentage
Oven active: %d%% = Four actif : %d%%
Oven out of fuel = Four sans carburant
Oven is empty = Four vide
### refrigerator.lua ###
Refrigerator = Réfrégirateur
## 1: Player name, 2: position
%s moves stuff in refrigerator at %s = %s déplace des objets dans un réfrégirateur à %s
%s moves stuff to refrigerator at %s = %s déplace des objets vers un réfrégirateur à %s
%s takes stuff from refrigerator at %s = %s prend des objets d'un réfrégirateur à %s
Not enough vertical space to place a refrigerator! = Pas assez d'espace vertical pour placer un réfrégirateur !
### television.lua ###
Small CRT Television = Petite télévision à tube cathodique
### signs_lib.lua ###
E: character map file not found = E: fichier de table de caractère non trouvé
## 1: Full String, 2: pos in string, 3: current char at pos
W: unknown symbol in '%s' at %d (probably %s) = A: symbole inconnu dans '%s' dans %d (probablement %s)
%s wrote "%s" to sign at %s =
signs loaded =

196
homedecor/locale/pt.txt Executable file
View File

@ -0,0 +1,196 @@
# Brazilian Portuguese translation of homedecor
# Last update: 2013/11/10
# Last translator: Aracnus <frederico@teia.bio.br>
### Special strings ###
### kitchen_cabinet.lua ###
Kitchen Cabinet = Armário de cozinha
## 1: Player name, 2: position
%s moves stuff in kitchen cabinet at %s = %s moveu itens no armário de cozinha em %s
%s moves stuff to kitchen cabinet at %s = %s moveu itens para o armário de cozinha em %s
%s takes stuff from kitchen cabinet at %s = %s retirou itens do armário de cozinha em %s
Half-height Kitchen Cabinet (on ceiling) = Meio armário de cozinha (no teto)
Under-sink cabinet = Armário sob a pia
Kitchen Cabinet with sink = Armário de cozinha com pia
### door_models.lua ###
Mahogany Closet Door = Porta do armário de mogno
Oak Closet Door = Porta do armário de carvalho
Fancy Wood/Glass Door = Porta de madeira/vidro trabalhada
Glass Office Door = Porta de escritório de vidro
Glass and Wood, Mahogany-colored = Vidro e madeira (mogno)
Glass and Wood, Oak-colored = Vidro e madeira (carvalho)
Glass and Wood, White = Vidro e madeira (branca)
Plain Wooden Door = Porta de madeira simples
left = esquerda
right = direita
## 1: Side the doors opens to
(Top Half, %s-opening) = (Metade superior, abre para %s)
(%s-opening) = (abre para %s)
### door_nodes.lua ###
Not enough vertical space to place a door! = Não existe espaço vertical suficiente para colocar uma porta.
### crafts.lua ###
Brass Ingot = Lingote de bronze
Bucket of white paint = Balde de tinta branca
Legs for Small Utility table = Pernas para mesa pequena
Plastic sheet = Folha de plástico
Silicon lump = Massa de silício
Simple Integrated Circuit = Circuito integrado simples
Small Wooden Drawer = Gaveta pequena de madeira
Terracotta Roof Tile = Telha de terracota
Titanium Dioxide = Dióxido de titânio
Uncooked Terracotta Base = Base bruta de terracota
Unprocessed Plastic base = Base de plástico não processada
### door_models.lua ###
### door_nodes.lua ###
### fences.lua ###
Barbed Wire Fence = Cerca de arame farpado
Barbed Wire Fence Gate = Portão da cerca de arame farpado
Brass Fence/railing = Cerca/corrimão de bronze
Brass Fence/railing with sign = Cerca/corrimão de bronze, com placa
Chainlink Fence = Cerca de tela de arame
Chainlink Fence Gate = Portão da cerca de tela de arame
Chainlink Fence Gate (open) = Portão da cerca de tela de arame (aberto)
Unpainted Picket Fence = Cerca de tábuas não pintada
Unpainted Picket Fence Gate = Portão da cerca de madeira não pintado
White Picket Fence = Cerca de madeira branca
White Picket Fence Gate = Portão da cerca de madeira branco
Wooden Privacy Fence = Cerca fechada de mandeira
Wrought Iron Fence/railing = Cerca/corrimão de ferro forjado
Wrought Iron Fence/railing with sign = Cerca/corrimão de ferro forjado, com placa
want to simply place the wielded item like usual. = quer somente colocar o item empunhado normalmente.
### furniture_medieval.lua ###
Bars = Barras
Binding Bars = Barras do canto
Chains = Correntes
Wall Torch = Tocha de parede
### furniture_bathroom.lua ###
Toilet = Vaso sanitário
Sink = Pia
Taps = Torneira
Shower Tray = Ralo do chuveiro
Shower Head = Chuveiro
### init.lua ###
Loaded! = Carregado!
Asphalt Shingles = Telhas de asfalto
Black Plastic Flower Pot = Vaso de flor de plástico preto
Brass Pole = Poste de bronze
Brass Table Legs = Pernas da mesa de bronze
red = vermelho
green = verde
blue = azul
white = branco
pink = rosa
violet = violeta
## 1: Color name
Curtains (%s) = Cortina (%s)
Drop-Ceiling Tile = Placa de teto
Glass Skylight = Claraboia de vidro
Glass Table (Small, Round) = Mesa de vidro (pequena, redonda)
Glass Table (Small, Square) = Mesa de vidro (pequena, quadrada)
Green Plastic Flower Pot = Vaso de flor de plástico verde
Large Area Rug = Tapete grande
Large Glass Table Piece = Pedaço da mesa grande de vidro
Large Stereo Speaker = Auto-falante grande
Legs for Utility Table = Pernas para mesa
Projection Screen Material = Material de tela de projeção
Small Surround Speaker = Auto-falante pequeno
Small Throw Rug = Tapete pequeno
Stereo Receiver = Aparelho de som
Terracotta Flower Pot = Vaso de flor de terracota
Terracotta Roofing = Telhado de terracota
Textured Ceiling Paint = Pintura texturizada do teto
Utility Table = Mesa de trabalho
Utility table mk2 = Mesa de trabalho mk2
Wooden Shutter (Black) = Persiana de madeira (preta)
Wooden Shutter (Dark Grey) = Persiana de madeira (cinza escura)
Wooden Shutter (Forest Green) = Persiana de madeira (verde)
Wooden Shutter (Grey) = Persiana de madeira (cinza)
Wooden Shutter (Light Blue) = Persiana de madeira (azul clara)
Wooden Shutter (Purple) = Persiana de madeira (roxa)
Wooden Shutter (Red) = Persiana de madeira (vermelha)
Wooden Shutter (Unpainted Mahogany) = Persiana de madeira (mogno)
Wooden Shutter (Unpainted Oak) = Persiana de madeira (carvalho)
Wooden Shutter (White) = Persiana de madeira (branca)
Wooden Shutter (Yellow) = Persiana de madeira (amarela)
Wooden Tabletop piece = Pedaço do tampo da mesa
Wooden Tabletop (Small, Round) = Tampo da mesa (pequeno, arredondado)
Wooden Tabletop (Small, Square) = Tampo da mesa (pequeno, quadrado)
Wood Shingles = Telhas de madeira
Wrought Iron Pole = Poste de ferro forjado
someone = alguém
## 1: Player name
Sorry, %s owns that spot. = Desculpe, mas esse local pertence a %s.
### lighting.lua ###
White Glowlight (small cube) = Arandela branca (cubo pequeno)
White Glowlight (small cube, on ceiling) = Arandela branca (cubo pequeno, na parede)
White Glowlight (thick) = Arandela branca (grossa)
White Glowlight (thick, on wall) = Arandela branca (grossa, na parede)
White Glowlight (thin) = Arandela branca (fina)
White Glowlight (thin, on wall) = Arandela branca (fina, na parede)
Yellow Glowlight (small cube) = Arandela amarela (cubo pequeno)
Yellow Glowlight (small cube, on ceiling) = Arandela amarela (cubo pequeno, na parede)
Yellow Glowlight (thick) = Arandela amarela (grossa)
Yellow Glowlight (thick, on wall) = Arandela amarela (grossa, na parede)
Yellow Glowlight (thin) = Arandela amarela (fina)
Yellow Glowlight (thin, on wall) = Arandela amarela (fina, na parede)
### locked.lua ###
## 1: Item description, 2: Owner name
%s (owned by %s) = %s (pertence a %s)
## 1: Player name, 2: Item description, 3: Owner name, 4: Position
%s tried to access a %s belonging to %s at %s = %s tentou acessar %s pertencente a %s em %s
## 1: Item description
%s (Locked) = %s (trancado)
Locked Cabinet = Armário trancado
Locked Nightstand = Criado-mudo trancado
### nightstands.lua ###
Mahogany Nightstand with One Drawer = Criado-mudo de mogno, com uma gaveta
Mahogany Nightstand with Two Drawers = Criado-mudo de mogno, com duas gavetas
Oak Nightstand with One Drawer = Criado-mudo de carvalho, com uma gaveta
Oak Nightstand with Two Drawers = Criado-mudo de carvalho, com duas gavetas
## 1: Player name, 2: position
%s moves stuff in nightstand at %s = %s moveu item(ns) no criado-mudo em %s
%s moves stuff to nightstand at %s = %s moveu item(ns) para o criado-mudo em %s
%s takes stuff from nightstand at %s = %s tirou item(ns) do criado-mudo em %s
One-drawer Nightstand = Criado-mudo com uma gaveta
Two-drawer Nightstand = Criado-mudo com duas gavetas
### oven.lua ###
Oven = Forno
## 1: Percentage
Oven active: %d%% = Forno ativo: %d%%
Oven out of fuel = O forno está sem combustível
Oven is empty = O forno está vazio
### refrigerator.lua ###
Refrigerator = Geladeira
## 1: Player name, 2: position
%s moves stuff in refrigerator at %s = %s moveu item(ns) na geladeira em %s
%s moves stuff to refrigerator at %s = %s moveu item(ns) para a geladeira em %s
%s takes stuff from refrigerator at %s = %s tirou item(ns) da geladeira em %s
Not enough vertical space to place a refrigerator! = Não existe espaço vertical suficiente para adicionar uma geladeira.
### television.lua ###
Small CRT Television = TV de tubo pequena
### signs_lib.lua ###
%s wrote "%s" to sign at %s = %s escreveu "%s" na placa em %s
Reading cached character database. = Lendo banco de dados de caracteres no cache.
Font seems to have changed. Rebuilding cache. = Aparentemente as fontes foram alteradas. Reconstruindo o cache.
Could not find font line height in cached DB. Trying brute force. = Não foi possível encontrar a altura da linha da fonte no cache do BD. Tentando na marra.
Registered %s and %s = %s e %s registrados
signs loaded = placas carregadas

230
homedecor/locale/template.txt Executable file
View File

@ -0,0 +1,230 @@
##########################
# Template language file #
##########################
### Special strings ###
### kitchen_cabinet.lua ###
Kitchen Cabinet =
## 1: Player name, 2: position
%s moves stuff in kitchen cabinet at %s =
%s moves stuff to kitchen cabinet at %s =
%s takes stuff from kitchen cabinet at %s =
Half-height Kitchen Cabinet (on ceiling) =
Under-sink cabinet =
Kitchen Cabinet with sink =
### door_models.lua ###
Mahogany Closet Door =
Oak Closet Door =
Fancy Wood/Glass Door =
Glass Office Door =
Glass and Wood, Mahogany-colored =
Glass and Wood, Oak-colored =
Glass and Wood, White =
Plain Wooden Door =
left =
right =
## 1: Side the doors opens to
(Top Half, %s-opening) =
(%s-opening) =
### door_nodes.lua ###
Not enough space above that spot to place a door! =
### crafts.lua ###
Brass Ingot =
Bucket of white paint =
Legs for Small Utility table =
Plastic sheet =
Silicon lump =
Simple Integrated Circuit =
Small Wooden Drawer =
Terracotta Roof Tile =
Titanium Dioxide =
Uncooked Terracotta Base =
Unprocessed Plastic base =
### door_models.lua ###
### door_nodes.lua ###
### fences.lua ###
Barbed Wire Fence =
Barbed Wire Fence Corner =
Barbed Wire Fence Gate =
Brass Fence/railing =
Brass Fence/railing with sign =
Chainlink Fence =
Chainlink Fence Corner =
Chainlink Fence Gate =
Unpainted Picket Fence =
Unpainted Picket Fence Corner =
Unpainted Picket Fence Gate =
White Picket Fence =
White Picket Fence Corner =
White Picket Fence Gate =
Wooden Privacy Fence =
Wooden Privacy Fence Corner =
Wrought Iron Fence/railing =
Wrought Iron Fence/railing with sign =
want to simply place the wielded item like usual. =
### furniture.lua ###
Table =
Chair =
Black =
Red =
Pink =
Violet =
Blue =
Dark Green =
## 1: Color name
Armchair (%s) =
Table Lamp =
### furniture_medieval.lua ###
Bars =
Binding Bars =
Chains =
Wall Torch =
### furniture_bathroom.lua ###
Toilet =
Sink =
Taps =
Shower Tray =
Shower Head =
### init.lua ###
Loaded! =
Air Conditioner =
Asphalt Shingles =
Asphalt Shingles (outer corner) =
Asphalt Shingles (inner corner) =
Black Plastic Flower Pot =
Brass Pole =
Brass Table Legs =
Wrought Iron Table Legs =
red =
green =
blue =
white =
pink =
violet =
## 1: Color name
Curtains (%s) =
Drop-Ceiling Tile =
Glass Skylight =
Glass Skylight Frosted =
Glass Table (Small, Round) =
Glass Table (Small, Square) =
Glass Table Piece (large) =
Green Plastic Flower Pot =
Large Area Rug =
Glass Table Piece (large) =
Large Stereo Speaker =
Legs for Utility Table =
Projection Screen Material =
Small Surround Speaker =
Small Throw Rug =
Stereo Receiver =
Terracotta Flower Pot =
Terracotta Shingles =
Terracotta Shingles (outer corner) =
Terracotta Shingles (inner corner) =
Textured Ceiling Paint =
Utility Table =
Utility table mk2 =
Wooden Shutter (Black) =
Wooden Shutter (Dark grey) =
Wooden Shutter (Forest green) =
Wooden Shutter (Grey) =
Wooden Shutter (Light blue) =
Wooden Shutter (Violet) =
Wooden Shutter (Red) =
Wooden Shutter (Mahogany) =
Wooden Shutter (Unpainted oak) =
Wooden Shutter (White) =
Wooden Shutter (Yellow) =
Wood Table Piece (large)=
Wood Table (Small, Round) =
Wood Table (Small, Square) =
Wood Shingles =
Wood Shingles (outer corner) =
Wood Shingles (inner corner) =
Wrought Iron Pole =
someone =
## 1: Player name
Sorry, %s owns that spot. =
### lighting.lua ###
White Glowlight (small cube) =
White Glowlight (small cube, on ceiling) =
White Glowlight (thick) =
White Glowlight (thick, on wall) =
White Glowlight (thin) =
White Glowlight (thin, on wall) =
Yellow Glowlight (small cube) =
Yellow Glowlight (small cube, on ceiling) =
Yellow Glowlight (thick) =
Yellow Glowlight (thick, on wall) =
Yellow Glowlight (thin) =
Yellow Glowlight (thin, on wall) =
### locked.lua ###
## 1: Item description, 2: Owner name
%s (owned by %s) =
## 1: Player name, 2: Item description, 3: Owner name, 4: Position
%s tried to access a %s belonging to %s at %s =
## 1: Item description
%s (Locked) =
Locked Fridge =
Locked Cabinet =
Locked Nightstand =
Locked Oven =
Locked Oven (active) =
Locked Microwave Oven =
Locked Microwave Oven (active) =
### nightstands.lua ###
Mahogany Nightstand with One Drawer =
Mahogany Nightstand with Two Drawers =
Oak Nightstand with One Drawer =
Oak Nightstand with Two Drawers =
## 1: Player name, 2: position
%s moves stuff in nightstand at %s =
%s moves stuff to nightstand at %s =
%s takes stuff from nightstand at %s =
One-drawer Nightstand =
Two-drawer Nightstand =
### oven.lua ###
Oven =
Microwave Oven =
## 1: Item description, 2: Percentage
%s active: %d%% =
## 1: Item description
%s is empty =
: Out of fuel =
: output bins are full =
### refrigerator.lua ###
Refrigerator =
## 1: Player name, 2: position
%s moves stuff in refrigerator at %s =
%s moves stuff to refrigerator at %s =
%s takes stuff from refrigerator at %s =
Not enough vertical space to place a refrigerator! =
### television.lua ###
Small CRT Television =
### signs_lib.lua ###
%s wrote "%s" to sign at %s =
Reading cached character database. =
Font seems to have changed. Rebuilding cache. =
Could not find font line height in cached DB. Trying brute force. =
Registered %s and %s =
signs loaded =

116
homedecor/misc-nodes.lua Normal file → Executable file
View File

@ -1,7 +1,4 @@
local S = homedecor_i18n.gettext
local function N_(x) return x end
local S = homedecor.gettext
homedecor.register("ceiling_paint", {
description = S("Textured Ceiling Paint"),
@ -28,13 +25,14 @@ homedecor.register("ceiling_tile", {
})
local rug_types = {
{ N_("small"), "homedecor_small_rug.obj" },
{ N_("large"), homedecor.box.slab_y(0.0625) },
{ N_("persian"), homedecor.box.slab_y(0.0625) },
{ "small", "homedecor_small_rug.obj" },
{ "large", homedecor.box.slab_y(0.0625)},
{ "persian", homedecor.box.slab_y(0.0625)}
}
for _, rt in ipairs(rug_types) do
local s, m = unpack(rt)
for i in ipairs(rug_types) do
s = rug_types[i][1]
m = rug_types[i][2]
local mesh = m
local nodebox = nil
@ -54,7 +52,7 @@ for _, rt in ipairs(rug_types) do
end
homedecor.register("rug_"..s, {
description = S("Rug (@1)", S(s)),
description = S("Rug ("..s..")"),
mesh = mesh,
tiles = tiles,
node_box = nodebox,
@ -66,15 +64,15 @@ for _, rt in ipairs(rug_types) do
})
end
local pot_colors = { N_("black"), N_("green"), N_("terracotta") }
local pot_colors = {"black", "green", "terracotta"}
for _, p in ipairs(pot_colors) do
homedecor.register("flower_pot_"..p, {
description = S("Flower Pot (@1)", S(p)),
description = S("Flower Pot ("..p..")"),
mesh = "homedecor_flowerpot.obj",
tiles = {
"homedecor_flower_pot_"..p..".png",
{ name = "default_dirt.png", color = 0xff505050 },
"default_dirt.png^[colorize:#000000:175"
},
groups = { snappy = 3, potting_soil=1 },
sounds = default.node_sound_stone_defaults(),
@ -82,25 +80,27 @@ homedecor.register("flower_pot_"..p, {
end
local flowers_list = {
{ S("Rose"), "rose", "flowers:rose" },
{ S("Tulip"), "tulip", "flowers:tulip" },
{ S("Yellow Dandelion"), "dandelion_yellow", "flowers:dandelion_yellow" },
{ S("White Dandelion"), "dandelion_white", "flowers:dandelion_white" },
{ S("Blue Geranium"), "geranium", "flowers:geranium" },
{ S("Viola"), "viola", "flowers:viola" },
{ S("Cactus"), "cactus", "default:cactus" },
{ S("Bonsai"), "bonsai", "default:sapling" }
{ "Rose", "rose", "flowers:rose" },
{ "Tulip", "tulip", "flowers:tulip" },
{ "Yellow Dandelion", "dandelion_yellow", "flowers:dandelion_yellow" },
{ "White Dandelion", "dandelion_white", "flowers:dandelion_white" },
{ "Blue Geranium", "geranium", "flowers:geranium" },
{ "Viola", "viola", "flowers:viola" },
{ "Cactus", "cactus", "default:cactus" },
{ "Bonsai", "bonsai", "default:sapling" }
}
for _, f in ipairs(flowers_list) do
local flowerdesc, flower, craftwith = unpack(f)
for i in ipairs(flowers_list) do
local flowerdesc = flowers_list[i][1]
local flower = flowers_list[i][2]
local craftwith = flowers_list[i][3]
homedecor.register("potted_"..flower, {
description = S("Potted flower (@1)", flowerdesc),
description = S("Potted flower ("..flowerdesc..")"),
mesh = "homedecor_potted_plant.obj",
tiles = {
"homedecor_flower_pot_terracotta.png",
{ name = "default_dirt.png", color = 0xff303030 },
"default_dirt.png^[colorize:#000000:175",
"flowers_"..flower..".png"
},
walkable = false,
@ -164,10 +164,10 @@ local ft_cbox = {
}
homedecor.register("fishtank", {
description = S("Fishtank"),
description = "Fishtank",
mesh = "homedecor_fishtank.obj",
tiles = {
{ name = "homedecor_generic_plastic.png", color = homedecor.color_black },
"homedecor_generic_plastic_black.png",
"homedecor_fishtank_filter.png",
"homedecor_fishtank_fishes.png",
"homedecor_fishtank_gravel.png",
@ -179,17 +179,16 @@ homedecor.register("fishtank", {
collision_box = ft_cbox,
groups = {cracky=3,oddly_breakable_by_hand=3},
sounds = default.node_sound_glass_defaults(),
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_rightclick = function(pos, node, clicker)
minetest.set_node(pos, {name = "homedecor:fishtank_lighted", param2 = node.param2})
return itemstack
end
})
homedecor.register("fishtank_lighted", {
description = S("Fishtank (lighted)"),
description = "Fishtank (lighted)",
mesh = "homedecor_fishtank.obj",
tiles = {
{ name = "homedecor_generic_plastic.png", color = homedecor.color_black },
"homedecor_generic_plastic_black.png",
"homedecor_fishtank_filter.png",
"homedecor_fishtank_fishes_lighted.png",
"homedecor_fishtank_gravel_lighted.png",
@ -202,9 +201,8 @@ homedecor.register("fishtank_lighted", {
collision_box = ft_cbox,
groups = {cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
sounds = default.node_sound_glass_defaults(),
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
on_rightclick = function(pos, node, clicker)
minetest.set_node(pos, {name = "homedecor:fishtank", param2 = node.param2})
return itemstack
end,
drop = "homedecor:fishtank",
})
@ -244,7 +242,7 @@ homedecor.register("cardboard_box", {
})
homedecor.register("dvd_cd_cabinet", {
description = S("DVD/CD cabinet"),
description = "DVD/CD cabinet",
mesh = "homedecor_dvd_cabinet.obj",
tiles = {
"default_wood.png",
@ -268,9 +266,9 @@ homedecor.register("pool_table", {
"homedecor_pool_table_baize.png",
"homedecor_pool_table_pockets.png",
"homedecor_pool_table_balls.png",
homedecor.lux_wood,
"homedecor_generic_wood_luxury.png^[colorize:#000000:90"
},
description = S("Pool Table"),
description = "Pool Table",
inventory_image = "homedecor_pool_table_inv.png",
groups = {snappy=3},
selection_box = pooltable_cbox,
@ -290,12 +288,12 @@ local piano_cbox = {
homedecor.register("piano", {
mesh = "homedecor_piano.obj",
tiles = {
{ name = "homedecor_generic_wood_luxury.png", color = homedecor.color_black },
"homedecor_generic_wood_luxury.png^[colorize:#000000:175",
"homedecor_piano_keys.png",
"homedecor_generic_metal_brass.png",
},
inventory_image = "homedecor_piano_inv.png",
description = S("Piano"),
description = "Piano",
groups = { snappy = 3 },
selection_box = piano_cbox,
collision_box = piano_cbox,
@ -313,7 +311,7 @@ local tr_cbox = {
}
homedecor.register("trophy", {
description = S("Trophy"),
description = "Trophy",
mesh = "homedecor_trophy.obj",
tiles = {
"default_wood.png",
@ -331,12 +329,12 @@ local sb_cbox = {
}
homedecor.register("sportbench", {
description = S("Sport bench"),
description = "Sport bench",
mesh = "homedecor_sport_bench.obj",
tiles = {
"homedecor_generic_metal_wrought_iron.png",
"homedecor_generic_metal_bright.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_black },
"homedecor_generic_metal_black.png",
"wool_black.png"
},
inventory_image = "homedecor_sport_bench_inv.png",
@ -356,7 +354,7 @@ homedecor.register("skateboard", {
mesh = "homedecor_skateboard.obj",
tiles = { "homedecor_skateboard.png" },
inventory_image = "homedecor_skateboard_inv.png",
description = S("Skateboard"),
description = "Skateboard",
groups = {snappy=3},
selection_box = skate_cbox,
walkable = false,
@ -365,13 +363,13 @@ homedecor.register("skateboard", {
})
homedecor.register("tool_cabinet", {
description = S("Metal tool cabinet and work table"),
description = "Metal tool cabinet and work table",
mesh = "homedecor_tool_cabinet.obj",
tiles = {
{ name = "homedecor_generic_metal.png", color = 0xffd00000 },
"homedecor_generic_metal_black.png^[colorize:#ff0000:150",
"homedecor_tool_cabinet_drawers.png",
{ name = "homedecor_generic_metal.png", color = 0xff006000 },
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"homedecor_generic_metal_black.png^[colorize:#006000:150",
"homedecor_generic_metal_black.png^[brighten",
"homedecor_generic_metal_bright.png",
"homedecor_tool_cabinet_misc.png",
},
@ -400,7 +398,7 @@ for _, i in ipairs(n) do
mesh = "homedecor_picture_frame.obj",
tiles = {
"homedecor_picture_frame_image"..i..".png",
homedecor.lux_wood,
"homedecor_generic_wood_luxury.png^[colorize:#000000:50",
"homedecor_picture_frame_back.png",
},
inventory_image = "homedecor_picture_frame"..i.."_inv.png",
@ -421,7 +419,7 @@ local p_cbox = {
for i = 1,20 do
homedecor.register("painting_"..i, {
description = S("Decorative painting #@1", i),
description = "Decorative painting #"..i,
mesh = "homedecor_painting.obj",
tiles = {
"default_wood.png",
@ -437,7 +435,7 @@ end
homedecor.banister_materials = {
{ "wood",
S("wood"),
"wood",
"default_wood.png",
"default_wood.png",
"group:wood",
@ -446,7 +444,7 @@ homedecor.banister_materials = {
""
},
{ "white_dark",
S("dark topped"),
"dark topped",
homedecor.white_wood,
homedecor.dark_wood,
"group:wood",
@ -455,7 +453,7 @@ homedecor.banister_materials = {
"dye:white"
},
{ "brass",
S("brass"),
"brass",
homedecor.white_wood,
"homedecor_generic_metal_brass.png",
"technic:brass_ingot",
@ -464,7 +462,7 @@ homedecor.banister_materials = {
"dye:white"
},
{ "wrought_iron",
S("wrought iron"),
"wrought iron",
"homedecor_generic_metal_wrought_iron.png",
"homedecor_generic_metal_wrought_iron.png",
"homedecor:pole_wrought_iron",
@ -476,11 +474,9 @@ homedecor.banister_materials = {
for _, side in ipairs({"diagonal_left", "diagonal_right", "horizontal"}) do
local sidedesc = side:match("^diagonal") and S("diagonal") or S("horizontal")
for i in ipairs(homedecor.banister_materials) do
for _, mat in ipairs(homedecor.banister_materials) do
local name, matdesc, tile1, tile2 = unpack(mat)
local name = homedecor.banister_materials[i][1]
local nodename = "banister_"..name.."_"..side
local groups = { snappy = 3, not_in_creative_inventory = 1 }
@ -500,11 +496,11 @@ for _, side in ipairs({"diagonal_left", "diagonal_right", "horizontal"}) do
end
homedecor.register(nodename, {
description = S("Banister for Stairs (@1, @2)", matdesc, sidedesc),
description = S("Banister for Stairs ("..homedecor.banister_materials[i][2]..", "..side..")"),
mesh = "homedecor_banister_"..side..".obj",
tiles = {
tile1,
tile2,
homedecor.banister_materials[i][3],
homedecor.banister_materials[i][4]
},
inventory_image = "homedecor_banister_"..name.."_inv.png",
groups = groups,
@ -573,7 +569,7 @@ homedecor.register("spiral_staircase", {
if #minetest.find_nodes_in_area(minp, maxp, "air") < 11 then
minetest.set_node(pos, {name = "air"})
minetest.chat_send_player(placer:get_player_name(), S("not enough space"))
minetest.chat_send_player(placer:get_player_name(), "This object takes up a 2x3x2 block of space (the bottom step goes in the forward-right corner), and some of it is occupied!" )
return true
end

360
homedecor/models/forniture_armchair.obj Normal file → Executable file
View File

@ -1,142 +1,142 @@
# Blender v2.72 (sub 0) OBJ File: 'forniture-armchair.blend'
# Blender v2.73 (sub 0) OBJ File: 'forniture-armchair.blend'
# www.blender.org
o chair_Cylinder
v 0.500000 -0.375000 -0.437500
v 0.500000 -0.375000 0.039062
v 0.437500 -0.375000 0.101562
v -0.035156 -0.375000 0.101562
v -0.035156 -0.375000 0.437500
v -0.097656 -0.375000 0.500000
v -0.375000 0.375000 0.500000
v 0.375000 -0.312500 -0.187500
v -0.097656 0.375000 0.500000
v -0.035156 0.375000 0.437500
v 0.375000 0.312500 -0.187500
v -0.035156 0.375000 0.101562
v 0.437500 0.375000 0.101562
v 0.500000 0.375000 0.039062
v -0.375000 -0.375000 0.500000
v 0.500000 0.375000 -0.437500
v 0.500000 0.437500 -0.437500
v 0.375000 0.500000 -0.437500
v -0.097656 0.500000 0.437500
v 0.500000 0.437500 0.039062
v -0.437500 -0.437500 0.500000
v 0.437500 0.437500 0.101562
v -0.097656 -0.437500 0.500000
v -0.035156 0.437500 0.101562
v -0.035156 -0.437500 0.437500
v -0.035156 0.437500 0.437500
v -0.035156 -0.437500 0.101562
v -0.097656 0.437500 0.500000
v 0.437500 -0.437500 0.101562
v -0.437500 0.437500 0.500000
v 0.500000 -0.437500 0.039062
v -0.097656 -0.500000 0.437500
v 0.375000 -0.437500 -0.500000
v 0.375000 0.039062 -0.500000
v 0.375000 0.101562 -0.437500
v 0.375000 0.101562 0.035156
v 0.375000 0.437500 0.035156
v 0.375000 0.500000 0.097656
v -0.375000 0.500000 0.375000
v 0.312500 -0.187500 -0.375000
v -0.375000 0.500000 0.097656
v -0.375000 0.437500 0.035156
v -0.312500 -0.187500 -0.375000
v -0.375000 0.101562 0.035156
v -0.375000 0.101562 -0.437500
v -0.375000 0.039062 -0.500000
v 0.375000 0.500000 0.375000
v -0.375000 -0.437500 -0.500000
v -0.437500 -0.437500 -0.500000
v -0.500000 -0.437500 -0.375000
v -0.500000 0.437500 0.097656
v -0.437500 0.039062 -0.500000
v 0.437500 0.500000 0.437500
v -0.437500 0.101562 -0.437500
v 0.437500 0.500000 0.097656
v -0.437500 0.101562 0.035156
v 0.437500 0.437500 0.035156
v -0.437500 0.437500 0.035156
v 0.437500 0.101562 0.035156
v -0.437500 0.500000 0.097656
v 0.437500 0.101562 -0.437500
v -0.437500 0.500000 0.437500
v 0.437500 0.039062 -0.500000
v 0.500000 0.437500 0.097656
v 0.437500 -0.437500 -0.500000
v -0.312500 -0.437500 -0.375000
v 0.500000 0.437500 0.500000
v 0.500000 -0.437500 0.500000
v 0.312500 -0.437500 -0.375000
v -0.500000 0.437500 0.500000
v -0.500000 -0.437500 0.500000
v -0.500000 0.039062 0.097656
v 0.500000 0.039062 0.097656
v -0.500000 0.039062 -0.437500
v 0.500000 0.039062 -0.437500
v -0.500000 -0.437500 -0.437500
v 0.500000 -0.437500 -0.437500
v 0.375000 0.312500 -0.437500
v -0.500000 -0.500000 0.437500
v -0.500000 -0.500000 -0.437500
v 0.375000 -0.312500 -0.437500
v -0.500000 0.500000 0.437500
v -0.500000 0.500000 -0.437500
v -0.097656 0.500000 0.039062
v -0.097656 -0.500000 0.039062
v 0.437500 0.500000 0.039062
v 0.437500 -0.500000 0.039062
v 0.437500 0.500000 -0.437500
v 0.437500 -0.500000 -0.437500
v -0.097656 -0.312500 0.437500
v -0.097656 -0.312500 0.039062
v 0.437500 -0.312500 0.039062
v 0.437500 -0.312500 -0.437500
v -0.097656 0.312500 0.437500
v 0.375000 -0.500000 -0.437500
v -0.097656 0.312500 0.039062
v 0.437500 0.312500 0.039062
v 0.437500 0.312500 -0.437500
v -0.312500 -0.312500 -0.125000
v -0.312500 0.312500 -0.125000
v -0.312500 -0.312500 0.437500
v -0.312500 0.312500 0.437500
v 0.187500 -0.312500 -0.109375
v 0.187500 0.312500 -0.109375
v -0.285156 -0.312500 0.156250
v -0.285156 0.312500 0.156250
v 0.312500 -0.312500 -0.125000
v -0.250000 0.312500 -0.109375
v -0.296875 -0.312500 -0.062500
v -0.296875 0.312500 0.375000
v -0.250000 -0.312500 -0.109375
v 0.312500 0.312500 -0.125000
v -0.296875 -0.312500 0.375000
v -0.296875 0.312500 -0.062500
v -0.031250 -0.312500 -0.101562
v -0.031250 0.312500 -0.101562
v -0.343750 0.432138 -0.500000
v -0.343750 0.432138 -0.437500
v -0.343750 0.380361 -0.500000
v -0.343750 0.380361 -0.437500
v -0.380362 0.343750 -0.500000
v -0.380362 0.343750 -0.437500
v -0.432139 0.343750 -0.500000
v -0.432139 0.343750 -0.437500
v -0.468750 0.380361 -0.500000
v -0.468750 0.380361 -0.437500
v -0.468750 0.432138 -0.500000
v -0.468750 0.432138 -0.437500
v -0.432139 0.468750 -0.500000
v -0.432139 0.468750 -0.437500
v -0.380362 0.468750 -0.500000
v -0.380362 0.468750 -0.437500
v -0.380361 -0.343750 -0.437500
v -0.380361 -0.343750 -0.500000
v -0.432138 -0.343750 -0.437500
v -0.432138 -0.343750 -0.500000
v -0.468750 -0.380362 -0.437500
v -0.468750 -0.380362 -0.500000
v -0.468750 -0.432139 -0.437500
v -0.468750 -0.432139 -0.500000
v -0.432138 -0.468750 -0.437500
v -0.432138 -0.468750 -0.500000
v -0.380361 -0.468750 -0.437500
v -0.380361 -0.468750 -0.500000
v -0.343750 -0.432139 -0.437500
v -0.343750 -0.432139 -0.500000
v -0.343750 -0.380362 -0.437500
v -0.343750 -0.380362 -0.500000
v 0.468750 0.432139 -0.500000
v 0.468750 0.432139 -0.437500
v 0.468750 0.380362 -0.500000
v 0.468750 0.380362 -0.437500
v 0.432138 0.343750 -0.500000
v 0.432138 0.343750 -0.437500
v 0.380361 0.343750 -0.500000
v 0.380361 0.343750 -0.437500
v 0.343750 0.380362 -0.500000
v 0.343750 0.380362 -0.437500
v 0.343750 0.432139 -0.500000
v 0.343750 0.432139 -0.437500
v 0.380361 0.468750 -0.500000
v 0.380361 0.468750 -0.437500
v 0.432138 0.468750 -0.500000
v 0.432138 0.468750 -0.437500
v 0.432139 -0.343750 -0.437500
v 0.432139 -0.343750 -0.500000
v 0.380362 -0.343750 -0.437500
v 0.380362 -0.343750 -0.500000
v 0.343750 -0.380361 -0.437500
v 0.343750 -0.380361 -0.500000
v 0.343750 -0.432138 -0.437500
v 0.343750 -0.432138 -0.500000
v 0.380362 -0.468750 -0.437500
v 0.380362 -0.468750 -0.500000
v 0.432139 -0.468750 -0.437500
v 0.432139 -0.468750 -0.500000
v 0.468750 -0.432138 -0.437500
v 0.468750 -0.432138 -0.500000
v 0.468750 -0.380361 -0.437500
v 0.468750 -0.380361 -0.500000
v 0.312500 0.437500 0.097656
v 0.312500 0.039062 0.097656
v 0.312500 0.039062 -0.437500
v 0.312500 -0.437500 -0.437500
v -0.312500 0.437500 0.097656
v 0.500000 -0.437500 -0.375000
v -0.312500 0.039062 0.097656
v -0.312500 0.039062 -0.437500
v -0.312500 -0.437500 -0.437500
v 0.312500 -0.125000 0.312500
v -0.312500 -0.125000 0.312500
v 0.312500 0.437500 0.312500
v -0.312500 0.437500 0.312500
v 0.312500 -0.109375 -0.187500
v -0.312500 -0.109375 -0.187500
v 0.312500 0.156250 0.285156
v -0.312500 0.156250 0.285156
v 0.312500 -0.125000 -0.312500
v -0.312500 -0.109375 0.250000
v 0.312500 -0.062500 0.296875
v -0.312500 0.375000 0.296875
v 0.312500 -0.109375 0.250000
v -0.312500 -0.125000 -0.312500
v 0.312500 0.375000 0.296875
v -0.312500 -0.062500 0.296875
v 0.312500 -0.101562 0.031250
v -0.312500 -0.101562 0.031250
v -0.432138 -0.500000 0.343750
v -0.432138 -0.437500 0.343750
v -0.380362 -0.500000 0.343750
v -0.380362 -0.437500 0.343750
v -0.343750 -0.500000 0.380362
v -0.343750 -0.437500 0.380362
v -0.343750 -0.500000 0.432138
v -0.343750 -0.437500 0.432138
v -0.380362 -0.500000 0.468750
v -0.380362 -0.437500 0.468750
v -0.432138 -0.500000 0.468750
v -0.432138 -0.437500 0.468750
v -0.468750 -0.500000 0.432138
v -0.468750 -0.437500 0.432138
v -0.468750 -0.500000 0.380362
v -0.468750 -0.437500 0.380362
v 0.343750 -0.437500 0.380362
v 0.343750 -0.500000 0.380362
v 0.343750 -0.437500 0.432138
v 0.343750 -0.500000 0.432138
v 0.380362 -0.437500 0.468750
v 0.380362 -0.500000 0.468750
v 0.432138 -0.437500 0.468750
v 0.432138 -0.500000 0.468750
v 0.468750 -0.437500 0.432138
v 0.468750 -0.500000 0.432138
v 0.468750 -0.437500 0.380362
v 0.468750 -0.500000 0.380362
v 0.432138 -0.437500 0.343750
v 0.432138 -0.500000 0.343750
v 0.380362 -0.437500 0.343750
v 0.380362 -0.500000 0.343750
v -0.432138 -0.500000 -0.468750
v -0.432138 -0.437500 -0.468750
v -0.380362 -0.500000 -0.468750
v -0.380362 -0.437500 -0.468750
v -0.343750 -0.500000 -0.432138
v -0.343750 -0.437500 -0.432138
v -0.343750 -0.500000 -0.380362
v -0.343750 -0.437500 -0.380362
v -0.380362 -0.500000 -0.343750
v -0.380362 -0.437500 -0.343750
v -0.432138 -0.500000 -0.343750
v -0.432138 -0.437500 -0.343750
v -0.468750 -0.500000 -0.380362
v -0.468750 -0.437500 -0.380362
v -0.468750 -0.500000 -0.432138
v -0.468750 -0.437500 -0.432138
v 0.343750 -0.437500 -0.432138
v 0.343750 -0.500000 -0.432138
v 0.343750 -0.437500 -0.380362
v 0.343750 -0.500000 -0.380362
v 0.380362 -0.437500 -0.343750
v 0.380362 -0.500000 -0.343750
v 0.432138 -0.437500 -0.343750
v 0.432138 -0.500000 -0.343750
v 0.468750 -0.437500 -0.380362
v 0.468750 -0.500000 -0.380362
v 0.468750 -0.437500 -0.432138
v 0.468750 -0.500000 -0.432138
v 0.432138 -0.437500 -0.468750
v 0.432138 -0.500000 -0.468750
v 0.380362 -0.437500 -0.468750
v 0.380362 -0.500000 -0.468750
vt 0.062590 0.539162
vt 0.062590 0.601648
vt 0.000103 0.539162
@ -367,52 +367,52 @@ vt 0.125000 0.312500
vt 0.125000 0.375000
vt 0.187500 0.312500
vt 0.187500 0.375000
vn 0.875600 -0.341600 0.341600
vn 0.341600 -0.341600 0.875600
vn 0.341600 -0.875600 0.341600
vn 0.341600 0.341600 0.875600
vn 0.875600 0.341600 0.341600
vn 0.341600 0.875600 0.341600
vn -0.300200 0.300200 0.905400
vn -0.650700 0.650700 0.391300
vn -0.300200 -0.300200 0.905400
vn -0.650700 -0.650700 0.391300
vn 0.110000 0.987800 0.110000
vn 0.297100 0.717300 -0.630300
vn -0.577400 0.577400 -0.577400
vn 1.000000 0.000000 0.000000
vn 0.923900 0.000000 0.382700
vn -0.139900 -0.000000 0.990200
vn 0.707100 0.000000 0.707100
vn 0.676600 0.729300 0.101700
vn 0.676600 -0.729300 0.101700
vn 0.563000 -0.526700 0.636900
vn 0.563000 0.526700 0.636900
vn 0.110000 0.110000 0.987800
vn 0.110000 -0.110000 0.987800
vn 0.578900 0.574300 0.578900
vn 0.717300 0.297100 -0.630200
vn 0.717300 -0.297100 -0.630200
vn 0.297100 -0.717300 -0.630200
vn 0.439400 0.000000 0.898300
vn 0.079900 0.000000 0.996800
vn 0.988900 0.000000 -0.148700
vn 0.110000 -0.987800 0.110000
vn 0.578900 -0.574300 0.578900
vn 0.297100 -0.717300 -0.630300
vn 0.297100 0.717300 -0.630200
vn -0.577400 -0.577400 -0.577400
vn 0.000000 0.000000 1.000000
vn -0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 0.707100 -0.707100
vn 0.000000 -0.707100 -0.707100
vn 0.341600 0.341600 -0.875600
vn 0.341600 0.875600 -0.341600
vn 0.875600 0.341600 -0.341600
vn -0.341600 0.875600 -0.341600
vn -0.341600 0.341600 -0.875600
vn -0.875600 0.341600 -0.341600
vn -0.300200 0.905400 0.300200
vn -0.650700 0.391300 0.650700
vn 0.300200 0.905400 0.300200
vn 0.650700 0.391300 0.650700
vn -0.987800 0.110000 -0.110000
vn -0.717300 -0.630300 -0.297100
vn -0.577400 -0.577400 0.577400
vn 0.000000 0.000000 -1.000000
vn 0.707100 -0.707100 0.000000
vn -0.707100 -0.707100 0.000000
vn 0.000000 0.382700 -0.923900
vn 0.000000 0.990200 0.139900
vn 0.000000 0.707100 -0.707100
vn -0.729300 0.101700 -0.676600
vn 0.729300 0.101700 -0.676600
vn 0.526700 0.636900 -0.563000
vn -0.526700 0.636900 -0.563000
vn -0.110000 0.987800 -0.110000
vn 0.110000 0.987800 -0.110000
vn -0.574300 0.578900 -0.578900
vn -0.297100 -0.630200 -0.717300
vn 0.297100 -0.630200 -0.717300
vn 0.717300 -0.630200 -0.297100
vn 0.000000 0.898300 -0.439400
vn 0.000000 0.996800 -0.079900
vn 0.000000 -0.148700 -0.988900
vn 0.987800 0.110000 -0.110000
vn 0.574300 0.578900 -0.578900
vn 0.717300 -0.630300 -0.297100
vn -0.717300 -0.630200 -0.297100
vn 0.577400 -0.577400 0.577400
vn 0.000000 1.000000 0.000000
vn -1.000000 0.000000 0.000000
vn -0.707100 0.707100 0.000000
vn 0.707100 0.707100 0.000000
vn 1.000000 0.000000 0.000000
vn -0.707100 -0.707100 0.000000
vn 0.707100 -0.707100 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.707100 0.000000 -0.707100
vn 0.707100 0.000000 0.707100
vn 0.000000 0.000000 1.000000
vn -0.707100 0.000000 0.707100
vn -0.707100 0.000000 -0.707100
g chair_Cylinder_colored
s 1
f 31/1/1 29/2/2 43/3/3

0
homedecor/models/forniture_chains.obj Normal file → Executable file
View File

0
homedecor/models/forniture_torch.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_4_bottles.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_ac.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_analog_clock.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_banister_diagonal_left.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_banister_diagonal_right.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_banister_horizontal.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_barbecue.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_bathroom_faucet.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_bathroom_set.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_bathroom_sink.obj Normal file → Executable file
View File

File diff suppressed because it is too large Load Diff

318
homedecor/models/homedecor_bed_extended.obj Normal file → Executable file
View File

@ -1,158 +1,158 @@
# Blender v2.72 (sub 0) OBJ File: 'bed-extended.blend'
# Blender v2.73 (sub 0) OBJ File: 'bed-extended.blend'
# www.blender.org
o Cube
v -1.437500 0.500000 -0.375000
v 0.437500 0.500000 -0.375000
v 0.437500 -0.500000 -0.375000
v -1.437500 -0.500000 -0.375000
v -1.437500 0.500000 -0.125000
v 0.437500 0.500000 -0.125000
v 0.437500 -0.500000 -0.125000
v -1.437500 -0.500000 -0.125000
v -1.437500 0.437500 -0.125000
v 0.437500 0.437500 -0.125000
v 0.437500 -0.437500 -0.125000
v -1.437500 -0.437500 -0.125000
v 0.437500 -0.375000 -0.500000
v 0.500000 -0.375000 -0.500000
v -0.500000 -0.375000 1.437500
v -0.500000 -0.375000 -0.437500
v 0.500000 -0.375000 -0.437500
v 0.500000 -0.375000 1.437500
v -0.500000 -0.125000 1.437500
v -0.500000 -0.125000 -0.437500
v 0.500000 -0.125000 -0.437500
v 0.500000 -0.125000 1.437500
v -0.437500 -0.125000 1.437500
v -0.437500 -0.125000 -0.437500
v 0.437500 -0.125000 -0.437500
v 0.437500 -0.125000 1.437500
v 0.375000 -0.500000 -0.437500
v 0.375000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
v 0.437500 -0.500000 -0.500000
v 0.437500 -0.375000 0.500000
v 0.500000 -0.375000 0.500000
v 0.500000 -0.500000 0.500000
v 0.437500 -0.500000 0.500000
v 0.437500 0.500000 -0.500000
v 0.500000 -0.500000 -0.437500
v 0.375000 0.500000 -0.437500
v 0.375000 0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v 0.500000 0.375000 -0.500000
v 0.437500 0.375000 -0.500000
v 0.437500 0.500000 0.500000
v 0.500000 0.500000 0.500000
v 0.500000 0.375000 0.500000
v 0.437500 0.375000 0.500000
v 0.437500 0.375000 -0.375000
v 0.500000 0.375000 -0.375000
v 0.500000 -0.375000 -0.375000
v 0.500000 0.500000 -0.437500
v -0.500000 -0.500000 -0.437500
v -0.500000 -0.500000 -0.500000
v -0.375000 -0.500000 -0.500000
v -0.375000 -0.500000 -0.437500
v -0.500000 0.500000 -0.437500
v -0.500000 0.500000 -0.500000
v -0.375000 0.500000 -0.500000
v -0.375000 0.500000 -0.437500
v -0.375000 -0.375000 -0.437500
v -0.375000 -0.375000 -0.500000
v 0.375000 -0.375000 -0.500000
v 0.375000 -0.375000 -0.437500
v -0.375000 -0.125000 -0.437500
v -0.375000 -0.125000 -0.500000
v 0.375000 -0.125000 -0.500000
v 0.375000 -0.125000 -0.437500
v -0.375000 0.000000 -0.437500
v -0.375000 0.000000 -0.500000
v 0.375000 0.000000 -0.500000
v 0.375000 0.000000 -0.437500
v -0.375000 0.125000 -0.437500
v -0.375000 0.125000 -0.500000
v 0.375000 0.125000 -0.500000
v 0.375000 0.125000 -0.437500
v 0.375000 -0.500000 1.437500
v 0.375000 -0.500000 1.500000
v 0.500000 -0.500000 1.500000
v 0.500000 -0.500000 1.437500
v 0.375000 0.500000 1.437500
v 0.375000 0.500000 1.500000
v 0.500000 0.500000 1.500000
v 0.500000 0.500000 1.437500
v -0.500000 -0.500000 1.437500
v -0.500000 -0.500000 1.500000
v -0.375000 -0.500000 1.500000
v -0.375000 -0.500000 1.437500
v -0.500000 0.500000 1.437500
v -0.500000 0.500000 1.500000
v -0.375000 0.500000 1.500000
v -0.375000 0.500000 1.437500
v -0.375000 -0.375000 1.437500
v -0.375000 -0.375000 1.500000
v 0.375000 -0.375000 1.500000
v 0.375000 -0.375000 1.437500
v -0.375000 -0.125000 1.437500
v -0.375000 -0.125000 1.500000
v 0.375000 -0.125000 1.500000
v 0.375000 -0.125000 1.437500
v -0.375000 -0.062500 1.437500
v -0.375000 -0.062500 1.500000
v 0.375000 -0.062500 1.500000
v 0.375000 -0.062500 1.437500
v -0.375000 0.187500 1.437500
v -0.375000 0.187500 1.500000
v 0.375000 0.187500 1.500000
v 0.375000 0.187500 1.437500
v -0.375000 0.250000 1.437500
v -0.375000 0.250000 1.500000
v 0.375000 0.250000 1.500000
v 0.375000 0.250000 1.437500
v -0.375000 0.437500 1.437500
v -0.375000 0.437500 1.500000
v 0.375000 0.437500 1.500000
v 0.375000 0.437500 1.437500
v -0.500000 -0.125000 0.500000
v -0.500000 -0.375000 0.500000
v 0.500000 -0.125000 0.500000
v 0.500000 -0.375000 0.500000
v -0.437500 -0.125000 0.500000
v 0.437500 -0.125000 0.500000
v -0.437500 -0.375000 0.500000
v -0.437500 -0.375000 1.437500
v -0.437500 -0.078125 1.437500
v -0.437500 -0.078125 -0.437500
v 0.437500 -0.078125 -0.437500
v 0.437500 -0.078125 1.437500
v -0.406250 -0.046875 1.437500
v -0.406250 -0.046875 -0.437500
v 0.406250 -0.046875 -0.437500
v 0.406250 -0.046875 1.437500
v -0.312500 -0.046875 1.437500
v -0.312500 -0.046875 1.062500
v 0.312500 -0.046875 1.062500
v 0.312500 -0.046875 1.437500
v -0.406250 -0.046875 0.500000
v -0.437500 -0.078125 0.500000
v 0.406250 -0.046875 0.500000
v 0.437500 -0.078125 0.500000
v -0.312500 -0.031250 1.437500
v -0.312500 -0.031250 1.062500
v 0.312500 -0.031250 1.062500
v 0.312500 -0.031250 1.437500
v -0.250000 0.031250 1.375000
v -0.250000 0.031250 1.125000
v 0.250000 0.031250 1.125000
v 0.250000 0.031250 1.375000
v 0.437500 -0.375000 1.437500
v 0.437500 -0.375000 0.500000
v -0.437500 -0.375000 1.375000
v 0.437500 -0.375000 1.375000
v -0.437500 -0.375000 -0.375000
v 0.437500 -0.375000 -0.375000
v 0.437500 0.375000 -0.125000
v 0.500000 0.375000 -0.125000
v 0.500000 -0.375000 -0.125000
v 0.437500 -0.375000 -0.125000
v 0.437500 0.375000 0.000000
v 0.500000 0.375000 0.000000
v 0.500000 -0.375000 0.000000
v 0.437500 -0.375000 0.000000
v 0.437500 0.375000 0.125000
v 0.500000 0.375000 0.125000
v 0.500000 -0.375000 0.125000
v 0.437500 -0.375000 0.125000
v -1.437500 -0.375000 -0.500000
v -1.500000 -0.375000 -0.500000
v -1.500000 -0.500000 -0.500000
v -1.437500 -0.500000 -0.500000
v -1.437500 -0.375000 0.500000
v -1.500000 -0.375000 0.500000
v -1.500000 -0.500000 0.500000
v -1.437500 -0.500000 0.500000
v -1.437500 0.500000 -0.500000
v -1.500000 0.500000 -0.500000
v -1.500000 0.375000 -0.500000
v -1.437500 0.375000 -0.500000
v -1.437500 0.500000 0.500000
v -1.500000 0.500000 0.500000
v -1.500000 0.375000 0.500000
v -1.437500 0.375000 0.500000
v -1.437500 0.375000 -0.375000
v -1.500000 0.375000 -0.375000
v -1.500000 -0.375000 -0.375000
v -1.437500 -0.375000 -0.375000
v -1.437500 0.375000 -0.125000
v -1.500000 0.375000 -0.125000
v -1.500000 -0.375000 -0.125000
v -1.437500 -0.375000 -0.125000
v -1.437500 0.375000 -0.062500
v -1.500000 0.375000 -0.062500
v -1.500000 -0.375000 -0.062500
v -1.437500 -0.375000 -0.062500
v -1.437500 0.375000 0.187500
v -1.500000 0.375000 0.187500
v -1.500000 -0.375000 0.187500
v -1.437500 -0.375000 0.187500
v -1.437500 0.375000 0.250000
v -1.500000 0.375000 0.250000
v -1.500000 -0.375000 0.250000
v -1.437500 -0.375000 0.250000
v -1.437500 0.375000 0.437500
v -1.500000 0.375000 0.437500
v -1.500000 -0.375000 0.437500
v -1.437500 -0.375000 0.437500
v -0.500000 0.500000 -0.125000
v -0.500000 0.500000 -0.375000
v -0.500000 -0.500000 -0.125000
v -0.500000 -0.500000 -0.375000
v -0.500000 0.437500 -0.125000
v -0.500000 -0.437500 -0.125000
v -0.500000 0.437500 -0.375000
v -1.437500 0.437500 -0.375000
v -1.437500 0.437500 -0.078125
v 0.437500 0.437500 -0.078125
v 0.437500 -0.437500 -0.078125
v -1.437500 -0.437500 -0.078125
v -1.437500 0.406250 -0.046875
v 0.437500 0.406250 -0.046875
v 0.437500 -0.406250 -0.046875
v -1.437500 -0.406250 -0.046875
v -1.437500 0.312500 -0.046875
v -1.062500 0.312500 -0.046875
v -1.062500 -0.312500 -0.046875
v -1.437500 -0.312500 -0.046875
v -0.500000 0.406250 -0.046875
v -0.500000 0.437500 -0.078125
v -0.500000 -0.406250 -0.046875
v -0.500000 -0.437500 -0.078125
v -1.437500 0.312500 -0.031250
v -1.062500 0.312500 -0.031250
v -1.062500 -0.312500 -0.031250
v -1.437500 -0.312500 -0.031250
v -1.375000 0.250000 0.031250
v -1.125000 0.250000 0.031250
v -1.125000 -0.250000 0.031250
v -1.375000 -0.250000 0.031250
v -1.437500 -0.437500 -0.375000
v -0.500000 -0.437500 -0.375000
v -1.375000 0.437500 -0.375000
v -1.375000 -0.437500 -0.375000
v 0.375000 0.437500 -0.375000
v 0.375000 -0.437500 -0.375000
v -1.375000 0.437500 -0.312500
v -1.375000 -0.437500 -0.312500
v 0.375000 0.437500 -0.312500
v 0.375000 -0.437500 -0.312500
v -1.000000 0.437500 -0.125000
v -1.000000 -0.437500 -0.125000
v -1.000000 0.437500 -0.078125
v -1.000000 -0.406250 -0.046875
v -1.000000 0.406250 -0.046875
v -1.000000 -0.437500 -0.078125
v -0.500000 0.437500 -0.312500
v -0.500000 -0.437500 -0.312500
v 0.437500 0.500000 -0.375000
v 0.437500 -0.500000 -0.375000
v -0.500000 0.500000 -0.375000
v -0.500000 -0.500000 -0.375000
v -0.500000 0.437500 -0.375000
v 0.437500 0.437500 -0.375000
v 0.437500 -0.437500 -0.375000
v -0.500000 -0.437500 -0.375000
v 0.375000 0.437500 -0.375000
v 0.375000 -0.437500 -0.375000
v 0.437500 0.375000 0.250000
v 0.500000 0.375000 0.250000
v 0.500000 -0.375000 0.250000
v 0.437500 -0.375000 0.250000
v 0.437500 0.375000 0.375000
v 0.500000 0.375000 0.375000
v 0.500000 -0.375000 0.375000
v 0.437500 -0.375000 0.375000
v -0.437500 -0.312500 1.375000
v 0.437500 -0.312500 1.375000
v -0.437500 -0.312500 -0.375000
v 0.437500 -0.312500 -0.375000
v -0.437500 -0.125000 1.000000
v 0.437500 -0.125000 1.000000
v -0.437500 -0.078125 1.000000
v 0.406250 -0.046875 1.000000
v -0.406250 -0.046875 1.000000
v 0.437500 -0.078125 1.000000
v -0.437500 -0.312500 0.500000
v 0.437500 -0.312500 0.500000
v -0.500000 -0.375000 -0.437500
v 0.500000 -0.375000 -0.437500
v -0.500000 -0.375000 0.500000
v 0.500000 -0.375000 0.500000
v -0.437500 -0.375000 0.500000
v -0.437500 -0.375000 -0.437500
v 0.437500 -0.375000 -0.437500
v 0.437500 -0.375000 0.500000
v -0.437500 -0.375000 -0.375000
v 0.437500 -0.375000 -0.375000
v -0.375000 0.250000 -0.437500
v -0.375000 0.250000 -0.500000
v 0.375000 0.250000 -0.500000
v 0.375000 0.250000 -0.437500
v -0.375000 0.375000 -0.437500
v -0.375000 0.375000 -0.500000
v 0.375000 0.375000 -0.500000
v 0.375000 0.375000 -0.437500
vt 1.000000 0.250000
vt 0.062500 0.250000
vt 0.062500 -0.000000
@ -233,16 +233,16 @@ vt 0.750000 0.125000
vt 0.812500 0.062500
vt 0.812500 0.500000
vt 0.187500 0.500000
vn -0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 -0.707100 0.707100
vn -0.000000 0.707100 0.707100
vn 0.707100 0.000000 0.707100
vn -0.707100 0.000000 0.707100
vn 1.000000 0.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 1.000000
vn 0.707100 0.707100 0.000000
vn -0.707100 0.707100 0.000000
vn 0.000000 0.707100 -0.707100
vn 0.000000 0.707100 0.707100
g Cube_Cube_frame-metal
s off
f 85/1/1 6/2/1 2/3/1 86/4/1

514
homedecor/models/homedecor_bed_kingsize.obj Normal file → Executable file
View File

@ -1,260 +1,260 @@
# Blender v2.72 (sub 0) OBJ File: 'bed-kingsize.blend'
# Blender v2.73 (sub 0) OBJ File: 'bed-kingsize.blend'
# www.blender.org
o Cube
v -1.437500 0.500000 -0.375000
v 0.437500 -0.500000 -0.375000
v -1.437500 -0.500000 -0.375000
v 0.437500 -0.500000 -0.125000
v -1.437500 -0.500000 -0.125000
v 0.437500 -0.437500 -0.125000
v -1.437500 -0.437500 -0.125000
v 0.437500 -0.375000 -0.500000
v 0.500000 -0.375000 -0.500000
v -0.500000 -0.375000 1.437500
v 0.500000 -0.375000 -0.437500
v 0.500000 -0.375000 1.437500
v 0.500000 -0.125000 -0.437500
v 0.500000 -0.125000 1.437500
v 0.437500 -0.125000 -0.437500
v 0.437500 -0.125000 1.437500
v 0.375000 -0.500000 -0.437500
v 0.375000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
v 0.437500 -0.500000 -0.500000
v 0.437500 -0.375000 0.187500
v 0.500000 -0.375000 0.187500
v 0.500000 -0.500000 0.187500
v 0.437500 -0.500000 0.187500
v 0.437500 0.500000 -0.375000
v 0.500000 0.500000 -0.375000
v 0.500000 -0.375000 -0.375000
v 0.500000 -0.500000 -0.437500
v 0.375000 0.187500 -0.437500
v 0.375000 0.187500 -0.500000
v 0.500000 0.187500 -0.500000
v 0.500000 0.187500 -0.437500
v -0.500000 -0.375000 -0.437500
v -0.500000 -0.375000 -0.500000
v 0.375000 -0.375000 -0.500000
v 0.375000 -0.375000 -0.437500
v -0.500000 -0.125000 -0.437500
v -0.500000 -0.125000 -0.500000
v 0.375000 -0.125000 -0.500000
v 0.375000 -0.125000 -0.437500
v -0.500000 0.000000 -0.437500
v -0.500000 0.000000 -0.500000
v 0.375000 0.000000 -0.500000
v 0.375000 0.000000 -0.437500
v -0.500000 0.125000 -0.437500
v -0.500000 0.125000 -0.500000
v 0.375000 0.125000 -0.500000
v 0.375000 0.125000 -0.437500
v 0.375000 -0.500000 1.437500
v 0.375000 -0.500000 1.500000
v 0.500000 -0.500000 1.500000
v 0.500000 -0.500000 1.437500
v 0.375000 0.500000 1.437500
v 0.375000 0.500000 1.500000
v 0.500000 0.500000 1.500000
v 0.500000 0.500000 1.437500
v -0.500000 -0.375000 1.437500
v -0.500000 -0.375000 1.500000
v 0.375000 -0.375000 1.500000
v 0.375000 -0.375000 1.437500
v -0.500000 -0.125000 1.437500
v -0.500000 -0.125000 1.500000
v 0.375000 -0.125000 1.500000
v 0.375000 -0.125000 1.437500
v -0.500000 -0.062500 1.437500
v -0.500000 -0.062500 1.500000
v 0.375000 -0.062500 1.500000
v 0.375000 -0.062500 1.437500
v -0.500000 0.187500 1.437500
v -0.500000 0.187500 1.500000
v 0.375000 0.187500 1.500000
v 0.375000 0.187500 1.437500
v -0.500000 0.250000 1.437500
v -0.500000 0.250000 1.500000
v 0.375000 0.250000 1.500000
v 0.375000 0.250000 1.437500
v -0.500000 0.437500 1.437500
v -0.500000 0.437500 1.500000
v 0.375000 0.437500 1.500000
v 0.375000 0.437500 1.437500
v -0.500000 -0.375000 0.500000
v 0.500000 -0.125000 0.500000
v 0.500000 -0.375000 0.500000
v 0.437500 -0.125000 0.500000
v -0.437500 -0.375000 0.500000
v -0.437500 -0.375000 1.437500
v 0.437500 -0.078125 -0.437500
v 0.437500 -0.078125 1.437500
v -0.500000 -0.046875 1.437500
v -0.500000 -0.046875 -0.437500
v 0.406250 -0.046875 -0.437500
v 0.406250 -0.046875 1.437500
v -0.312500 -0.046875 1.437500
v -0.312500 -0.046875 1.062500
v 0.312500 -0.046875 1.062500
v 0.312500 -0.046875 1.437500
v -0.500000 -0.046875 0.500000
v 0.406250 -0.046875 0.500000
v 0.437500 -0.078125 0.500000
v -0.312500 -0.031250 1.437500
v -0.312500 -0.031250 1.062500
v 0.312500 -0.031250 1.062500
v 0.312500 -0.031250 1.437500
v -0.250000 0.031250 1.375000
v -0.250000 0.031250 1.125000
v 0.250000 0.031250 1.125000
v 0.250000 0.031250 1.375000
v 0.437500 -0.375000 1.437500
v 0.437500 -0.375000 0.500000
v -0.437500 -0.375000 1.375000
v 0.437500 -0.375000 1.375000
v -0.437500 -0.375000 -0.375000
v 0.437500 -0.375000 -0.375000
v 0.437500 0.500000 -0.125000
v 0.500000 0.500000 -0.125000
v 0.500000 -0.375000 -0.125000
v 0.437500 -0.375000 -0.125000
v 0.437500 0.500000 0.000000
v 0.500000 0.500000 0.000000
v 0.500000 -0.375000 0.000000
v 0.437500 -0.375000 0.000000
v 0.437500 0.500000 0.125000
v 0.500000 0.500000 0.125000
v 0.500000 -0.375000 0.125000
v 0.437500 -0.375000 0.125000
v -1.437500 -0.375000 -0.500000
v -1.500000 -0.375000 -0.500000
v -0.437500 -0.312500 1.375000
v 0.437500 -0.312500 1.375000
v -0.437500 -0.312500 -0.375000
v 0.437500 -0.312500 -0.375000
v 0.437500 -0.125000 1.000000
v 0.406250 -0.046875 1.000000
v -0.500000 -0.046875 1.000000
v 0.437500 -0.078125 1.000000
v -0.437500 -0.312500 0.500000
v 0.437500 -0.312500 0.500000
v -0.500000 -0.375000 -0.437500
v 0.500000 -0.375000 -0.437500
v -0.500000 -0.375000 0.500000
v 0.500000 -0.375000 0.500000
v -0.437500 -0.375000 0.500000
v -0.437500 -0.375000 -0.437500
v 0.437500 -0.375000 -0.437500
v 0.437500 -0.375000 0.500000
v -0.437500 -0.375000 -0.375000
v 0.437500 -0.375000 -0.375000
v -1.500000 -0.375000 1.437500
v -1.500000 -0.375000 -0.437500
v -0.500000 -0.375000 1.437500
v -1.500000 -0.125000 1.437500
v -1.500000 -0.125000 -0.437500
v -1.437500 -0.125000 1.437500
v -1.437500 -0.125000 -0.437500
v -1.500000 -0.500000 -0.437500
v -1.500000 -0.500000 -0.500000
v -1.437500 -0.500000 -0.500000
v -1.437500 -0.375000 0.500000
v -1.375000 -0.500000 -0.500000
v -1.375000 -0.500000 -0.437500
v -1.500000 0.187500 -0.437500
v -1.500000 0.187500 -0.500000
v -1.375000 0.187500 -0.500000
v -1.375000 0.187500 -0.437500
v -1.375000 -0.375000 -0.437500
v -1.375000 -0.375000 -0.500000
v -0.500000 -0.375000 -0.500000
v -0.500000 -0.375000 -0.437500
v -1.375000 -0.125000 -0.437500
v -1.375000 -0.125000 -0.500000
v -0.500000 -0.125000 -0.500000
v -0.500000 -0.125000 -0.437500
v -1.375000 0.000000 -0.437500
v -1.375000 0.000000 -0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 0.000000 -0.437500
v -1.375000 0.125000 -0.437500
v -1.375000 0.125000 -0.500000
v -0.500000 0.125000 -0.500000
v -0.500000 0.125000 -0.437500
v -1.500000 -0.500000 1.437500
v -1.500000 -0.500000 1.500000
v -1.375000 -0.500000 1.500000
v -1.375000 -0.500000 1.437500
v -1.500000 0.500000 1.437500
v -1.500000 0.500000 1.500000
v -1.375000 0.500000 1.500000
v -1.375000 0.500000 1.437500
v -1.375000 -0.375000 1.437500
v -1.375000 -0.375000 1.500000
v -0.500000 -0.375000 1.500000
v -0.500000 -0.375000 1.437500
v -1.375000 -0.125000 1.437500
v -1.375000 -0.125000 1.500000
v -0.500000 -0.125000 1.500000
v -0.500000 -0.125000 1.437500
v -1.375000 -0.062500 1.437500
v -1.375000 -0.062500 1.500000
v -0.500000 -0.062500 1.500000
v -0.500000 -0.062500 1.437500
v -1.375000 0.187500 1.437500
v -1.375000 0.187500 1.500000
v -0.500000 0.187500 1.500000
v -0.500000 0.187500 1.437500
v -1.375000 0.250000 1.437500
v -1.375000 0.250000 1.500000
v -0.500000 0.250000 1.500000
v -0.500000 0.250000 1.437500
v -1.375000 0.437500 1.437500
v -1.375000 0.437500 1.500000
v -0.500000 0.437500 1.500000
v -0.500000 0.437500 1.437500
v -1.500000 -0.125000 0.500000
v -1.500000 -0.375000 0.500000
v -1.500000 -0.500000 0.500000
v -1.437500 -0.500000 0.500000
v -1.437500 0.500000 -0.375000
v -1.500000 0.500000 -0.375000
v -1.500000 -0.375000 -0.375000
v -0.500000 -0.375000 0.500000
v -1.437500 -0.125000 0.500000
v -1.437500 -0.375000 0.500000
v -1.437500 -0.375000 1.437500
v -1.437500 -0.078125 1.437500
v -1.437500 -0.078125 -0.437500
v -1.406250 -0.046875 1.437500
v -1.406250 -0.046875 -0.437500
v -0.500000 -0.046875 -0.437500
v -0.500000 -0.046875 1.437500
v -1.312500 -0.046875 1.437500
v -1.312500 -0.046875 1.062500
v -0.687500 -0.046875 1.062500
v -0.687500 -0.046875 1.437500
v -1.406250 -0.046875 0.500000
v -1.437500 -0.078125 0.500000
v -0.500000 -0.046875 0.500000
v -1.312500 -0.031250 1.437500
v -1.312500 -0.031250 1.062500
v -0.687500 -0.031250 1.062500
v -0.687500 -0.031250 1.437500
v -1.250000 0.031250 1.375000
v -1.250000 0.031250 1.125000
v -0.750000 0.031250 1.125000
v -0.750000 0.031250 1.375000
v -0.562500 -0.375000 1.437500
v -0.562500 -0.375000 0.500000
v -1.437500 -0.375000 1.375000
v -0.562500 -0.375000 1.375000
v -1.437500 -0.375000 -0.375000
v -1.437500 0.500000 -0.125000
v -1.500000 0.500000 -0.125000
v -1.500000 -0.375000 -0.125000
v -1.437500 -0.375000 -0.125000
v -1.437500 0.500000 -0.062500
v -1.500000 0.500000 -0.062500
v -1.500000 -0.375000 -0.062500
v -1.437500 -0.375000 -0.062500
v -1.437500 0.500000 0.187500
v -1.500000 0.500000 0.187500
v -1.500000 -0.375000 0.187500
v -1.437500 -0.375000 0.187500
v -1.437500 0.500000 0.250000
v -1.500000 0.500000 0.250000
v -1.500000 -0.375000 0.250000
v -1.437500 -0.375000 0.250000
v -1.437500 0.500000 0.437500
v -1.500000 0.500000 0.437500
v -1.500000 -0.375000 0.437500
v -1.437500 -0.375000 0.437500
v -0.500000 0.500000 -0.375000
v -0.500000 -0.500000 -0.125000
v -0.500000 -0.500000 -0.375000
v -0.500000 -0.437500 -0.125000
v -0.500000 0.437500 -0.375000
v -1.437500 0.437500 -0.375000
v 0.437500 -0.437500 -0.078125
v -1.437500 -0.437500 -0.078125
v -1.437500 0.500000 -0.046875
v 0.437500 0.500000 -0.046875
v 0.437500 -0.406250 -0.046875
v -1.437500 -0.406250 -0.046875
v -1.437500 0.312500 -0.046875
v -1.062500 0.312500 -0.046875
v -1.062500 -0.312500 -0.046875
v -1.437500 -0.312500 -0.046875
v -0.500000 0.500000 -0.046875
v -0.500000 -0.406250 -0.046875
v -0.500000 -0.437500 -0.078125
v -1.437500 0.312500 -0.031250
v -1.062500 0.312500 -0.031250
v -1.062500 -0.312500 -0.031250
v -1.437500 -0.312500 -0.031250
v -1.375000 0.250000 0.031250
v -1.125000 0.250000 0.031250
v -1.125000 -0.250000 0.031250
v -1.375000 -0.250000 0.031250
v -1.437500 -0.437500 -0.375000
v -0.500000 -0.437500 -0.375000
v -1.375000 0.437500 -0.375000
v -1.375000 -0.437500 -0.375000
v 0.375000 0.437500 -0.375000
v 0.375000 -0.437500 -0.375000
v -1.375000 0.437500 -0.312500
v -1.375000 -0.437500 -0.312500
v 0.375000 0.437500 -0.312500
v 0.375000 -0.437500 -0.312500
v -1.000000 -0.437500 -0.125000
v -1.000000 -0.406250 -0.046875
v -1.000000 0.500000 -0.046875
v -1.000000 -0.437500 -0.078125
v -0.500000 0.437500 -0.312500
v -0.500000 -0.437500 -0.312500
v 0.437500 0.500000 -0.375000
v 0.437500 -0.500000 -0.375000
v -0.500000 0.500000 -0.375000
v -0.500000 -0.500000 -0.375000
v -0.500000 0.437500 -0.375000
v 0.437500 0.437500 -0.375000
v 0.437500 -0.437500 -0.375000
v -0.500000 -0.437500 -0.375000
v 0.375000 0.437500 -0.375000
v 0.375000 -0.437500 -0.375000
v -1.437500 1.500000 -0.375000
v 0.437500 1.500000 -0.375000
v -1.437500 0.500000 -0.375000
v -1.437500 1.500000 -0.125000
v 0.437500 1.500000 -0.125000
v -1.437500 1.437500 -0.125000
v 0.437500 1.437500 -0.125000
v 0.437500 1.500000 -0.500000
v 0.500000 1.500000 -0.500000
v 0.500000 1.375000 -0.500000
v 0.437500 1.375000 -0.500000
v 0.437500 1.500000 0.187500
v 0.500000 1.500000 0.187500
v 0.500000 1.375000 0.187500
v 0.437500 1.375000 0.187500
v 0.437500 1.375000 -0.375000
v 0.500000 1.375000 -0.375000
v 0.500000 0.500000 -0.375000
v 0.437500 0.500000 -0.375000
v 0.437500 1.375000 -0.125000
v 0.500000 1.375000 -0.125000
v 0.500000 0.500000 -0.125000
v 0.437500 0.500000 -0.125000
v 0.437500 1.375000 0.000000
v 0.500000 1.375000 0.000000
v 0.500000 0.500000 0.000000
v 0.437500 0.500000 0.000000
v 0.437500 1.375000 0.125000
v 0.500000 1.375000 0.125000
v 0.500000 0.500000 0.125000
v 0.437500 0.500000 0.125000
v -1.437500 1.500000 -0.500000
v -1.500000 1.500000 -0.500000
v -1.500000 1.375000 -0.500000
v -1.437500 1.375000 -0.500000
v -1.437500 1.500000 0.500000
v -1.500000 1.500000 0.500000
v -1.500000 1.375000 0.500000
v -1.437500 1.375000 0.500000
v -1.437500 1.375000 -0.375000
v -1.500000 1.375000 -0.375000
v -1.500000 0.500000 -0.375000
v -1.437500 0.500000 -0.375000
v -1.437500 1.375000 -0.125000
v -1.500000 1.375000 -0.125000
v -1.500000 0.500000 -0.125000
v -1.437500 0.500000 -0.125000
v -1.437500 1.375000 -0.062500
v -1.500000 1.375000 -0.062500
v -1.500000 0.500000 -0.062500
v -1.437500 0.500000 -0.062500
v -1.437500 1.375000 0.187500
v -1.500000 1.375000 0.187500
v -1.500000 0.500000 0.187500
v -1.437500 0.500000 0.187500
v -1.437500 1.375000 0.250000
v -1.500000 1.375000 0.250000
v -1.500000 0.500000 0.250000
v -1.437500 0.500000 0.250000
v -1.437500 1.375000 0.437500
v -1.500000 1.375000 0.437500
v -1.500000 0.500000 0.437500
v -1.437500 0.500000 0.437500
v -0.500000 1.500000 -0.125000
v -0.500000 1.500000 -0.375000
v -0.500000 0.500000 -0.375000
v -0.500000 1.437500 -0.125000
v -0.500000 1.437500 -0.375000
v -1.437500 1.437500 -0.375000
v -1.437500 1.437500 -0.078125
v 0.437500 1.437500 -0.078125
v -1.437500 1.406250 -0.046875
v 0.437500 1.406250 -0.046875
v 0.437500 0.500000 -0.046875
v -1.437500 0.500000 -0.046875
v -1.437500 1.312500 -0.046875
v -1.062500 1.312500 -0.046875
v -1.062500 0.687500 -0.046875
v -1.437500 0.687500 -0.046875
v -0.500000 1.406250 -0.046875
v -0.500000 1.437500 -0.078125
v -0.500000 0.500000 -0.046875
v -1.437500 1.312500 -0.031250
v -1.062500 1.312500 -0.031250
v -1.062500 0.687500 -0.031250
v -1.437500 0.687500 -0.031250
v -1.375000 1.250000 0.031250
v -1.125000 1.250000 0.031250
v -1.125000 0.750000 0.031250
v -1.375000 0.750000 0.031250
v -1.437500 0.562500 -0.375000
v -0.500000 0.562500 -0.375000
v -1.375000 1.437500 -0.375000
v -1.375000 0.562500 -0.375000
v 0.375000 1.437500 -0.375000
v 0.375000 0.562500 -0.375000
v -1.375000 1.437500 -0.312500
v -1.375000 0.562500 -0.312500
v 0.375000 1.437500 -0.312500
v 0.375000 0.562500 -0.312500
v -1.000000 1.437500 -0.125000
v -1.000000 1.437500 -0.078125
v -1.000000 0.500000 -0.046875
v -1.000000 1.406250 -0.046875
v -0.500000 1.437500 -0.312500
v -0.500000 0.562500 -0.312500
v 0.437500 1.500000 -0.375000
v 0.437500 0.500000 -0.375000
v -0.500000 1.500000 -0.375000
v -0.500000 0.500000 -0.375000
v -0.500000 1.437500 -0.375000
v 0.437500 1.437500 -0.375000
v 0.437500 0.562500 -0.375000
v -0.500000 0.562500 -0.375000
v 0.375000 1.437500 -0.375000
v 0.375000 0.562500 -0.375000
v 0.437500 0.500000 -0.125000
v -1.437500 0.500000 -0.046875
v -1.437500 0.500000 -0.125000
v -1.437500 0.500000 -0.078125
v 0.437500 0.500000 -0.046875
v 0.437500 0.500000 -0.078125
v 0.375000 0.562500 -0.500000
v 0.437500 0.562500 -0.500000
v 0.437500 0.437500 -0.500000
v 0.375000 0.437500 -0.500000
v 0.375000 0.562500 -0.375000
v 0.437500 0.562500 -0.375000
v 0.437500 0.437500 -0.375000
v 0.375000 0.437500 -0.375000
v -1.437500 0.562500 -0.500000
v -1.375000 0.562500 -0.500000
v -1.375000 0.437500 -0.500000
v -1.437500 0.437500 -0.500000
v -1.437500 0.562500 -0.375000
v -1.375000 0.562500 -0.375000
v -1.375000 0.437500 -0.375000
v -1.437500 0.437500 -0.375000
v -0.562500 -0.375000 -0.375000
v -1.437500 -0.312500 1.375000
v -0.562500 -0.312500 1.375000
v -1.437500 -0.312500 -0.375000
v -0.562500 -0.312500 -0.375000
v -1.437500 -0.125000 1.000000
v -1.437500 -0.078125 1.000000
v -0.500000 -0.046875 1.000000
v -1.406250 -0.046875 1.000000
v -1.437500 -0.312500 0.500000
v -0.562500 -0.312500 0.500000
v -1.500000 -0.375000 -0.437500
v -0.500000 -0.375000 -0.437500
v -1.500000 -0.375000 0.500000
v -0.500000 -0.375000 0.500000
v -1.437500 -0.375000 0.500000
v -1.437500 -0.375000 -0.437500
v -0.562500 -0.375000 -0.437500
v -0.562500 -0.375000 0.500000
v -1.437500 -0.375000 -0.375000
v -0.562500 -0.375000 -0.375000
v -0.500000 -0.125000 -0.437500
v -0.500000 -0.046875 1.437500
v -0.500000 -0.125000 1.437500
v -0.500000 -0.078125 1.437500
v -0.500000 -0.046875 -0.437500
v -0.500000 -0.078125 -0.437500
v -0.562500 -0.500000 -0.375000
v -0.562500 -0.500000 -0.437500
v -0.437500 -0.500000 -0.437500
v -0.437500 -0.500000 -0.375000
v -0.562500 -0.375000 -0.375000
v -0.562500 -0.375000 -0.437500
v -0.437500 -0.375000 -0.437500
v -0.437500 -0.375000 -0.375000
v -0.562500 -0.500000 1.437500
v -0.562500 -0.500000 1.375000
v -0.437500 -0.500000 1.375000
v -0.437500 -0.500000 1.437500
v -0.562500 -0.375000 1.437500
v -0.562500 -0.375000 1.375000
v -0.437500 -0.375000 1.375000
v -0.437500 -0.375000 1.437500
vt 1.000000 0.250000
vt 0.062500 0.250000
vt 0.062500 -0.000000
@ -361,16 +361,16 @@ vt 0.750000 0.125000
vt 0.812500 0.062500
vt 0.812500 0.500000
vt 0.187500 0.500000
vn 0.000000 -1.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 1.000000
vn -1.000000 0.000000 0.000000
vn -0.000000 1.000000 0.000000
vn 0.000000 -0.707100 0.707100
vn 0.707100 0.707100 0.000000
vn -0.707100 0.707100 0.000000
vn 0.000000 0.707100 -0.707100
vn 0.000000 0.707100 0.707100
vn 0.707100 0.000000 0.707100
vn -0.707100 0.000000 0.707100
g Cube_Cube_frame-metal
s off
f 65/1/1 5/2/1 3/3/1 66/4/1

304
homedecor/models/homedecor_bed_regular.obj Normal file → Executable file
View File

@ -1,150 +1,150 @@
# Blender v2.72 (sub 0) OBJ File: 'bed.blend'
# Blender v2.73 (sub 0) OBJ File: 'bed.blend'
# www.blender.org
o Cube
v -1.437500 0.500000 -0.375000
v 0.437500 0.500000 -0.375000
v 0.437500 -0.500000 -0.375000
v -1.437500 -0.500000 -0.375000
v -1.437500 0.500000 -0.125000
v 0.437500 0.500000 -0.125000
v 0.437500 -0.500000 -0.125000
v -1.437500 -0.500000 -0.125000
v -1.437500 0.437500 -0.125000
v 0.437500 0.437500 -0.125000
v 0.437500 -0.437500 -0.125000
v -1.437500 -0.437500 -0.125000
v 0.437500 -0.375000 -0.500000
v 0.500000 -0.375000 -0.500000
v -0.500000 -0.375000 1.437500
v -0.500000 -0.375000 -0.437500
v 0.500000 -0.375000 -0.437500
v 0.500000 -0.375000 1.437500
v -0.500000 -0.125000 1.437500
v -0.500000 -0.125000 -0.437500
v 0.500000 -0.125000 -0.437500
v 0.500000 -0.125000 1.437500
v -0.437500 -0.125000 1.437500
v -0.437500 -0.125000 -0.437500
v 0.437500 -0.125000 -0.437500
v 0.437500 -0.125000 1.437500
v 0.375000 -0.500000 -0.437500
v 0.375000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
v 0.437500 -0.500000 -0.500000
v 0.437500 -0.375000 0.187500
v 0.500000 -0.375000 0.187500
v 0.500000 -0.500000 0.187500
v 0.437500 -0.500000 0.187500
v 0.437500 0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v 0.500000 0.375000 -0.500000
v 0.437500 0.375000 -0.500000
v 0.437500 0.500000 0.187500
v 0.500000 0.500000 0.187500
v 0.500000 0.375000 0.187500
v 0.437500 0.375000 0.187500
v 0.437500 0.375000 -0.375000
v 0.500000 0.375000 -0.375000
v 0.500000 -0.375000 -0.375000
v 0.500000 -0.500000 -0.437500
v 0.375000 0.187500 -0.437500
v 0.375000 0.187500 -0.500000
v 0.500000 0.187500 -0.500000
v 0.500000 0.187500 -0.437500
v -0.500000 -0.500000 -0.437500
v -0.500000 -0.500000 -0.500000
v -0.375000 -0.500000 -0.500000
v -0.375000 -0.500000 -0.437500
v -0.500000 0.187500 -0.437500
v -0.500000 0.187500 -0.500000
v -0.375000 0.187500 -0.500000
v -0.375000 0.187500 -0.437500
v -0.375000 -0.375000 -0.437500
v -0.375000 -0.375000 -0.500000
v 0.375000 -0.375000 -0.500000
v 0.375000 -0.375000 -0.437500
v -0.375000 -0.125000 -0.437500
v -0.375000 -0.125000 -0.500000
v 0.375000 -0.125000 -0.500000
v 0.375000 -0.125000 -0.437500
v -0.375000 0.000000 -0.437500
v -0.375000 0.000000 -0.500000
v 0.375000 0.000000 -0.500000
v 0.375000 0.000000 -0.437500
v -0.375000 0.125000 -0.437500
v -0.375000 0.125000 -0.500000
v 0.375000 0.125000 -0.500000
v 0.375000 0.125000 -0.437500
v 0.375000 -0.500000 1.437500
v 0.375000 -0.500000 1.500000
v 0.500000 -0.500000 1.500000
v 0.500000 -0.500000 1.437500
v 0.375000 0.500000 1.437500
v 0.375000 0.500000 1.500000
v 0.500000 0.500000 1.500000
v 0.500000 0.500000 1.437500
v -0.500000 -0.500000 1.437500
v -0.500000 -0.500000 1.500000
v -0.375000 -0.500000 1.500000
v -0.375000 -0.500000 1.437500
v -0.500000 0.500000 1.437500
v -0.500000 0.500000 1.500000
v -0.375000 0.500000 1.500000
v -0.375000 0.500000 1.437500
v -0.375000 -0.375000 1.437500
v -0.375000 -0.375000 1.500000
v 0.375000 -0.375000 1.500000
v 0.375000 -0.375000 1.437500
v -0.375000 -0.125000 1.437500
v -0.375000 -0.125000 1.500000
v 0.375000 -0.125000 1.500000
v 0.375000 -0.125000 1.437500
v -0.375000 -0.062500 1.437500
v -0.375000 -0.062500 1.500000
v 0.375000 -0.062500 1.500000
v 0.375000 -0.062500 1.437500
v -0.375000 0.187500 1.437500
v -0.375000 0.187500 1.500000
v 0.375000 0.187500 1.500000
v 0.375000 0.187500 1.437500
v -0.375000 0.250000 1.437500
v -0.375000 0.250000 1.500000
v 0.375000 0.250000 1.500000
v 0.375000 0.250000 1.437500
v -0.375000 0.437500 1.437500
v -0.375000 0.437500 1.500000
v 0.375000 0.437500 1.500000
v 0.375000 0.437500 1.437500
v -0.500000 -0.125000 0.500000
v -0.500000 -0.375000 0.500000
v 0.500000 -0.125000 0.500000
v 0.500000 -0.375000 0.500000
v -0.437500 -0.125000 0.500000
v 0.437500 -0.125000 0.500000
v -0.437500 -0.375000 0.500000
v -0.437500 -0.375000 1.437500
v -0.437500 -0.078125 1.437500
v -0.437500 -0.078125 -0.437500
v 0.437500 -0.078125 -0.437500
v 0.437500 -0.078125 1.437500
v -0.406250 -0.046875 1.437500
v -0.406250 -0.046875 -0.437500
v 0.406250 -0.046875 -0.437500
v 0.406250 -0.046875 1.437500
v -0.312500 -0.046875 1.437500
v -0.312500 -0.046875 1.062500
v 0.312500 -0.046875 1.062500
v 0.312500 -0.046875 1.437500
v -0.406250 -0.046875 0.500000
v -0.437500 -0.078125 0.500000
v 0.406250 -0.046875 0.500000
v 0.437500 -0.078125 0.500000
v -0.312500 -0.031250 1.437500
v -0.312500 -0.031250 1.062500
v 0.312500 -0.031250 1.062500
v 0.312500 -0.031250 1.437500
v -0.250000 0.031250 1.375000
v -0.250000 0.031250 1.125000
v 0.250000 0.031250 1.125000
v 0.250000 0.031250 1.375000
v 0.437500 -0.375000 1.437500
v 0.437500 -0.375000 0.500000
v -0.437500 -0.375000 1.375000
v 0.437500 -0.375000 1.375000
v -0.437500 -0.375000 -0.375000
v 0.437500 -0.375000 -0.375000
v -0.437500 -0.312500 1.375000
v 0.437500 -0.312500 1.375000
v -0.437500 -0.312500 -0.375000
v 0.437500 -0.312500 -0.375000
v -0.437500 -0.125000 1.000000
v 0.437500 -0.125000 1.000000
v -0.437500 -0.078125 1.000000
v 0.406250 -0.046875 1.000000
v -0.406250 -0.046875 1.000000
v 0.437500 -0.078125 1.000000
v -0.437500 -0.312500 0.500000
v 0.437500 -0.312500 0.500000
v -0.500000 -0.375000 -0.437500
v 0.500000 -0.375000 -0.437500
v -0.500000 -0.375000 0.500000
v 0.500000 -0.375000 0.500000
v -0.437500 -0.375000 0.500000
v -0.437500 -0.375000 -0.437500
v 0.437500 -0.375000 -0.437500
v 0.437500 -0.375000 0.500000
v -0.437500 -0.375000 -0.375000
v 0.437500 -0.375000 -0.375000
v 0.437500 0.375000 -0.125000
v 0.500000 0.375000 -0.125000
v 0.500000 -0.375000 -0.125000
v 0.437500 -0.375000 -0.125000
v 0.437500 0.375000 0.000000
v 0.500000 0.375000 0.000000
v 0.500000 -0.375000 0.000000
v 0.437500 -0.375000 0.000000
v 0.437500 0.375000 0.125000
v 0.500000 0.375000 0.125000
v 0.500000 -0.375000 0.125000
v 0.437500 -0.375000 0.125000
v -1.437500 -0.375000 -0.500000
v -1.500000 -0.375000 -0.500000
v -1.500000 -0.500000 -0.500000
v -1.437500 -0.500000 -0.500000
v -1.437500 -0.375000 0.500000
v -1.500000 -0.375000 0.500000
v -1.500000 -0.500000 0.500000
v -1.437500 -0.500000 0.500000
v -1.437500 0.500000 -0.500000
v -1.500000 0.500000 -0.500000
v -1.500000 0.375000 -0.500000
v -1.437500 0.375000 -0.500000
v -1.437500 0.500000 0.500000
v -1.500000 0.500000 0.500000
v -1.500000 0.375000 0.500000
v -1.437500 0.375000 0.500000
v -1.437500 0.375000 -0.375000
v -1.500000 0.375000 -0.375000
v -1.500000 -0.375000 -0.375000
v -1.437500 -0.375000 -0.375000
v -1.437500 0.375000 -0.125000
v -1.500000 0.375000 -0.125000
v -1.500000 -0.375000 -0.125000
v -1.437500 -0.375000 -0.125000
v -1.437500 0.375000 -0.062500
v -1.500000 0.375000 -0.062500
v -1.500000 -0.375000 -0.062500
v -1.437500 -0.375000 -0.062500
v -1.437500 0.375000 0.187500
v -1.500000 0.375000 0.187500
v -1.500000 -0.375000 0.187500
v -1.437500 -0.375000 0.187500
v -1.437500 0.375000 0.250000
v -1.500000 0.375000 0.250000
v -1.500000 -0.375000 0.250000
v -1.437500 -0.375000 0.250000
v -1.437500 0.375000 0.437500
v -1.500000 0.375000 0.437500
v -1.500000 -0.375000 0.437500
v -1.437500 -0.375000 0.437500
v -0.500000 0.500000 -0.125000
v -0.500000 0.500000 -0.375000
v -0.500000 -0.500000 -0.125000
v -0.500000 -0.500000 -0.375000
v -0.500000 0.437500 -0.125000
v -0.500000 -0.437500 -0.125000
v -0.500000 0.437500 -0.375000
v -1.437500 0.437500 -0.375000
v -1.437500 0.437500 -0.078125
v 0.437500 0.437500 -0.078125
v 0.437500 -0.437500 -0.078125
v -1.437500 -0.437500 -0.078125
v -1.437500 0.406250 -0.046875
v 0.437500 0.406250 -0.046875
v 0.437500 -0.406250 -0.046875
v -1.437500 -0.406250 -0.046875
v -1.437500 0.312500 -0.046875
v -1.062500 0.312500 -0.046875
v -1.062500 -0.312500 -0.046875
v -1.437500 -0.312500 -0.046875
v -0.500000 0.406250 -0.046875
v -0.500000 0.437500 -0.078125
v -0.500000 -0.406250 -0.046875
v -0.500000 -0.437500 -0.078125
v -1.437500 0.312500 -0.031250
v -1.062500 0.312500 -0.031250
v -1.062500 -0.312500 -0.031250
v -1.437500 -0.312500 -0.031250
v -1.375000 0.250000 0.031250
v -1.125000 0.250000 0.031250
v -1.125000 -0.250000 0.031250
v -1.375000 -0.250000 0.031250
v -1.437500 -0.437500 -0.375000
v -0.500000 -0.437500 -0.375000
v -1.375000 0.437500 -0.375000
v -1.375000 -0.437500 -0.375000
v 0.375000 0.437500 -0.375000
v 0.375000 -0.437500 -0.375000
v -1.375000 0.437500 -0.312500
v -1.375000 -0.437500 -0.312500
v 0.375000 0.437500 -0.312500
v 0.375000 -0.437500 -0.312500
v -1.000000 0.437500 -0.125000
v -1.000000 -0.437500 -0.125000
v -1.000000 0.437500 -0.078125
v -1.000000 -0.406250 -0.046875
v -1.000000 0.406250 -0.046875
v -1.000000 -0.437500 -0.078125
v -0.500000 0.437500 -0.312500
v -0.500000 -0.437500 -0.312500
v 0.437500 0.500000 -0.375000
v 0.437500 -0.500000 -0.375000
v -0.500000 0.500000 -0.375000
v -0.500000 -0.500000 -0.375000
v -0.500000 0.437500 -0.375000
v 0.437500 0.437500 -0.375000
v 0.437500 -0.437500 -0.375000
v -0.500000 -0.437500 -0.375000
v 0.375000 0.437500 -0.375000
v 0.375000 -0.437500 -0.375000
vt 1.000000 0.250000
vt 0.062500 0.250000
vt 0.062500 -0.000000
@ -227,16 +227,16 @@ vt 0.750000 0.125000
vt 0.812500 0.062500
vt 0.812500 0.500000
vt 0.187500 0.500000
vn -0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 -0.707100 0.707100
vn -0.000000 0.707100 0.707100
vn 0.707100 0.000000 0.707100
vn -0.707100 0.000000 0.707100
vn 1.000000 0.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 1.000000
vn 0.707100 0.707100 0.000000
vn -0.707100 0.707100 0.000000
vn 0.000000 0.707100 -0.707100
vn 0.000000 0.707100 0.707100
g Cube_Cube_frame-metal
s off
f 85/1/1 6/2/1 2/3/1 86/4/1

0
homedecor/models/homedecor_bedroom_wardrobe.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_beer_mug.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_beer_taps.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_bench_large_1.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_bench_large_2.obj Normal file → Executable file
View File

View File

@ -1,44 +0,0 @@
# Blender v2.72 (sub 0) OBJ File: 'unifiedbricks_brick_block.blend'
# www.blender.org
o Cube
v 0.496092 0.496092 0.496092
v 0.496092 0.496092 -0.496092
v -0.496092 0.496092 -0.496092
v -0.496092 0.496092 0.496092
v 0.496092 -0.496092 0.496092
v 0.496092 -0.496092 -0.496092
v -0.496092 -0.496092 -0.496092
v -0.496092 -0.496092 0.496092
v 0.499750 0.499750 0.499750
v 0.499750 0.499750 -0.499750
v -0.499750 0.499750 -0.499750
v -0.499750 0.499750 0.499750
v 0.499750 -0.499750 0.499750
v 0.499750 -0.499750 -0.499750
v -0.499750 -0.499750 -0.499750
v -0.499750 -0.499750 0.499750
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 1.000000
g Cube_Cube_base
s off
f 8/1/1 7/2/1 6/3/1 5/4/1
f 4/2/2 3/3/2 7/4/2 8/1/2
f 1/3/3 2/4/3 3/1/3 4/2/3
f 2/2/4 1/3/4 5/4/4 6/1/4
f 3/2/5 2/3/5 6/4/5 7/1/5
f 1/2/6 4/3/6 8/4/6 5/1/6
g Cube_Cube_overlay
f 16/1/1 15/2/1 14/3/1 13/4/1
f 12/2/2 11/3/2 15/4/2 16/1/2
f 9/3/3 10/4/3 11/1/3 12/2/3
f 10/2/4 9/3/4 13/4/4 14/1/4
f 11/2/5 10/3/5 14/4/5 15/1/5
f 9/2/6 12/3/6 16/4/6 13/1/6

236
homedecor/models/homedecor_book.obj Normal file → Executable file
View File

@ -1,92 +1,60 @@
# Blender v2.72 (sub 0) OBJ File: 'book.blend'
# Blender v2.73 (sub 0) OBJ File: 'book.blend'
# www.blender.org
o Cube.002_Cube.001
v -0.216625 -0.161995 -0.448008
v -0.216625 -0.149566 -0.485966
v -0.216625 -0.113157 -0.485966
v -0.216625 -0.142021 -0.448008
v -0.208120 -0.115781 -0.485966
v -0.208120 -0.142021 -0.448008
v 0.220555 -0.113157 -0.485966
v 0.220555 0.159347 -0.485966
v 0.212050 -0.115781 -0.485966
v -0.208120 -0.161995 -0.448008
v -0.208120 0.148926 -0.485966
v -0.208120 0.155653 -0.448008
v 0.212051 0.155653 -0.448008
v 0.212051 0.148926 -0.485966
v -0.208120 -0.152482 -0.485966
v 0.212050 -0.152482 -0.485966
v 0.220555 -0.161995 -0.448008
v 0.212050 -0.161995 -0.448008
v 0.212050 -0.145193 -0.500002
v -0.208120 -0.145193 -0.500002
v -0.208120 -0.115781 -0.500002
v 0.212050 -0.115781 -0.500002
v 0.212050 -0.115781 -0.396013
v -0.208120 -0.115781 -0.396013
v -0.208120 -0.145193 -0.396013
v 0.212050 -0.145193 -0.396013
v 0.212050 -0.152482 -0.410049
v -0.208120 -0.152482 -0.410049
v 0.212051 0.148926 -0.410049
v -0.208120 0.148926 -0.410049
v 0.212050 -0.115781 -0.410049
v 0.220555 0.159347 -0.410049
v 0.220555 -0.113157 -0.410049
v -0.208120 -0.115781 -0.410049
v -0.216625 -0.113157 -0.410049
v -0.216625 -0.149566 -0.410049
v -0.216625 -0.115781 -0.396013
v -0.216625 -0.141549 -0.396013
v 0.220555 -0.149566 -0.410049
v 0.220555 -0.141549 -0.396013
v 0.220555 0.159346 -0.396013
v -0.216624 0.159347 -0.396013
v 0.220555 -0.115781 -0.396013
v -0.216624 0.159347 -0.410049
v -0.216625 -0.115781 -0.500002
v -0.216625 -0.141549 -0.500002
v 0.212050 -0.142021 -0.448008
v 0.220555 -0.149566 -0.485966
v 0.220555 -0.141549 -0.500002
v 0.220555 0.159346 -0.500002
v -0.216624 0.159347 -0.500002
v 0.220555 -0.142021 -0.448008
v 0.220555 -0.115781 -0.500002
v -0.216624 0.159347 -0.485966
v -0.216625 -0.162729 -0.448008
v -0.216625 -0.150269 -0.486432
v -0.208120 -0.162729 -0.448008
v -0.208120 -0.153192 -0.486432
v 0.212050 -0.153192 -0.486432
v 0.220555 -0.162729 -0.448008
v 0.212050 -0.162729 -0.448008
v 0.212050 -0.145885 -0.500640
v -0.208120 -0.145885 -0.500640
v -0.208120 -0.116399 -0.500640
v 0.212050 -0.116399 -0.500640
v 0.212050 -0.116399 -0.395375
v -0.208120 -0.116399 -0.395375
v -0.208120 -0.145885 -0.395375
v 0.212050 -0.145885 -0.395375
v 0.212050 -0.153192 -0.409583
v -0.208120 -0.153192 -0.409583
v -0.216625 -0.150269 -0.409583
v -0.216625 -0.116399 -0.395375
v -0.216625 -0.142232 -0.395375
v 0.220555 -0.150269 -0.409583
v 0.220555 -0.142232 -0.395375
v 0.220555 0.159416 -0.395375
v -0.216624 0.159417 -0.395375
v 0.220555 -0.116399 -0.395375
v -0.216625 -0.116399 -0.500640
v -0.216625 -0.142232 -0.500640
v 0.220555 -0.150269 -0.486432
v 0.220555 -0.142232 -0.500640
v 0.220555 0.159416 -0.500640
v -0.216624 0.159417 -0.500640
v 0.220555 -0.116399 -0.500640
v 0.161995 -0.448008 0.216625
v 0.149566 -0.485966 0.216625
v 0.113157 -0.485966 0.216625
v 0.142021 -0.448008 0.216625
v 0.115781 -0.485966 0.208120
v 0.142021 -0.448008 0.208120
v 0.113157 -0.485966 -0.220555
v -0.159347 -0.485966 -0.220555
v 0.115781 -0.485966 -0.212050
v 0.161995 -0.448008 0.208120
v -0.148926 -0.485966 0.208120
v -0.155653 -0.448008 0.208120
v -0.155653 -0.448008 -0.212051
v -0.148926 -0.485966 -0.212051
v 0.152482 -0.485966 0.208120
v 0.152482 -0.485966 -0.212050
v 0.161995 -0.448008 -0.220555
v 0.161995 -0.448008 -0.212050
v 0.145193 -0.500002 -0.212050
v 0.145193 -0.500002 0.208120
v 0.115781 -0.500002 0.208120
v 0.115781 -0.500002 -0.212050
v 0.115781 -0.396013 -0.212050
v 0.115781 -0.396013 0.208120
v 0.145193 -0.396013 0.208120
v 0.145193 -0.396013 -0.212050
v 0.152482 -0.410049 -0.212050
v 0.152482 -0.410049 0.208120
v -0.148926 -0.410049 -0.212051
v -0.148926 -0.410049 0.208120
v 0.115781 -0.410049 -0.212050
v -0.159347 -0.410049 -0.220555
v 0.113157 -0.410049 -0.220555
v 0.115781 -0.410049 0.208120
v 0.113157 -0.410049 0.216625
v 0.149566 -0.410049 0.216625
v 0.115781 -0.396013 0.216625
v 0.141549 -0.396013 0.216625
v 0.149566 -0.410049 -0.220555
v 0.141549 -0.396013 -0.220555
v -0.159346 -0.396013 -0.220555
v -0.159347 -0.396013 0.216624
v 0.115781 -0.396013 -0.220555
v -0.159347 -0.410049 0.216624
v 0.115781 -0.500002 0.216625
v 0.141549 -0.500002 0.216625
v 0.142021 -0.448008 -0.212050
v 0.149566 -0.485966 -0.220555
v 0.141549 -0.500002 -0.220555
v -0.159346 -0.500002 -0.220555
v -0.159347 -0.500002 0.216624
v 0.142021 -0.448008 -0.220555
v 0.115781 -0.500002 -0.220555
v -0.159347 -0.485966 0.216624
vt 0.921987 0.383861
vt 0.921987 0.340448
vt 0.931829 0.340448
@ -181,10 +149,6 @@ vt 0.670829 0.990273
vt 0.667792 1.000000
vt 0.704866 0.000000
vt 0.000000 0.000001
vt 0.668539 0.639838
vt 0.640677 0.639838
vt 0.640677 0.630641
vt 0.672479 0.630641
vt 0.439305 1.000000
vt 0.439305 0.319104
vt 0.527160 0.379125
@ -203,41 +167,29 @@ vt 0.263593 0.961094
vt 0.263593 0.000000
vt 0.175736 0.000000
vt 0.175736 0.961094
vn -0.123900 0.803100 -0.582900
vn -0.123900 0.803000 0.582900
vn 0.000000 -0.970000 0.243100
vn 0.162500 -0.947900 0.274000
vn 0.162500 -0.947900 -0.274000
vn 0.000000 0.000000 -1.000000
vn -0.320700 -0.831600 -0.453400
vn 0.000000 -0.000000 1.000000
vn -1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 0.123900 0.803100 -0.582900
vn -0.803100 -0.582900 0.123900
vn -0.803000 0.582900 0.123900
vn 0.970000 0.243100 0.000000
vn 0.947900 0.274000 -0.162500
vn 0.947900 -0.274000 -0.162500
vn -0.000000 -1.000000 -0.000000
vn 0.831600 -0.453400 0.320700
vn 0.000000 1.000000 -0.000000
vn 0.320700 -0.831600 -0.453400
vn -0.162500 -0.947900 -0.274000
vn 0.000000 -0.970000 -0.243100
vn -0.162500 -0.947900 0.274000
vn 0.123900 0.803000 0.582900
vn 0.000000 -0.887500 -0.460900
vn 0.000000 -0.887500 0.460900
vn 0.320700 -0.831600 0.453400
vn -0.320700 -0.831600 0.453400
vn 0.000000 0.984700 -0.174500
vn -0.000000 0.984700 0.174500
vn 0.000000 -0.970600 0.240900
vn 0.163000 -0.948500 0.271500
vn 0.163000 -0.948500 -0.271500
vn -0.322100 -0.833000 -0.449800
vn 0.322100 -0.833000 -0.449800
vn -0.163000 -0.948500 -0.271500
vn 0.000000 -0.970600 -0.240900
vn -0.163000 -0.948500 0.271500
vn 0.000000 -0.889300 -0.457400
vn 0.000000 -0.889300 0.457400
vn 0.322100 -0.833000 0.449800
vn -0.322100 -0.833000 0.449800
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 -1.000000
vn -0.803100 -0.582900 -0.123900
vn -1.000000 -0.000000 -0.000000
vn 0.831600 -0.453400 -0.320700
vn 0.947900 -0.274000 0.162500
vn 0.970000 -0.243100 -0.000000
vn 0.947900 0.274000 0.162500
vn -0.803000 0.582900 -0.123900
vn 0.887500 -0.460900 -0.000000
vn 0.887500 0.460900 -0.000000
vn 0.831600 0.453400 -0.320700
vn 0.831600 0.453400 0.320700
vn -0.984700 -0.174500 -0.000000
vn -0.984700 0.174500 0.000000
g Cube.002_Cube.001_Cube.002_Cube.001_cover
s off
f 47/1/1 31/2/1 33/3/1 52/4/1
@ -279,32 +231,10 @@ f 28/9/21 25/72/21 38/93/21 36/60/21
f 29/74/6 30/90/6 44/84/6 32/20/6
f 41/26/8 42/94/8 37/76/8 24/68/8 23/67/8 43/50/8
f 54/26/8 11/25/8 14/65/8 8/64/8
f 46/95/6 45/96/6 21/97/6 20/98/6
g Cube.002_Cube.001_Cube.002_Cube.001_edges
f 13/99/10 47/100/10 9/101/10 14/102/10
f 6/103/9 12/104/9 11/105/9 5/106/9
f 13/99/10 29/107/10 31/108/10 47/100/10
f 6/103/9 34/109/9 30/110/9 12/104/9
f 14/111/22 11/112/22 12/113/22 13/114/22
f 29/115/23 13/114/23 12/113/23 30/116/23
g Cube.002_Cube.001_Cube.002_Cube.001_trim
f 61/7/24 70/8/24 71/9/24 57/10/24
f 70/8/25 61/7/25 60/11/25 75/12/25
f 59/13/26 82/14/26 60/11/26 61/7/26
f 84/15/6 86/16/6 65/17/6 64/18/6 80/19/6 85/20/6
f 58/21/27 56/22/27 81/23/27 63/24/27
f 65/17/6 86/16/6 83/29/6 62/30/6
f 62/55/28 83/56/28 82/14/28 59/13/28
f 57/10/29 55/59/29 56/22/29 58/21/29
f 61/7/30 57/10/30 58/21/30 59/13/30
f 57/10/31 71/9/31 72/60/31 55/59/31
f 59/13/32 58/21/32 63/24/32 62/55/32
f 65/17/6 62/30/6 63/66/6 64/18/6
f 66/67/8 67/68/8 68/69/8 69/70/8
f 70/8/33 69/71/33 68/72/33 71/9/33
f 68/69/8 67/68/8 73/76/8 74/77/8
f 69/71/34 70/8/34 75/12/34 76/78/34
f 66/67/8 69/70/8 76/89/8 79/50/8
f 71/9/35 68/72/35 74/93/35 72/60/35
f 77/26/8 78/94/8 73/76/8 67/68/8 66/67/8 79/50/8
f 81/95/6 80/96/6 64/97/6 63/98/6
f 13/95/10 47/96/10 9/97/10 14/98/10
f 6/99/9 12/100/9 11/101/9 5/102/9
f 13/95/10 29/103/10 31/104/10 47/96/10
f 6/99/9 34/105/9 30/106/9 12/100/9
f 14/107/22 11/108/22 12/109/22 13/110/22
f 29/111/23 13/110/23 12/109/23 30/112/23

459
homedecor/models/homedecor_book_open.obj Normal file → Executable file
View File

@ -1,84 +1,84 @@
# Blender v2.72 (sub 0) OBJ File: 'book-open.blend'
# Blender v2.73 (sub 0) OBJ File: 'book-open.blend'
# www.blender.org
o Cube.002_Cube.001
v -0.216625 0.012428 -0.485966
v 0.220555 -0.000000 -0.486750
v 0.220555 0.321341 -0.485966
v -0.208120 -0.000001 -0.462863
v -0.208120 0.310920 -0.485966
v -0.208120 0.306022 -0.464409
v 0.212051 0.306022 -0.464409
v 0.212051 0.310921 -0.485966
v 0.212050 -0.000000 -0.462862
v 0.212050 0.016802 -0.500002
v -0.208120 0.016801 -0.500002
v -0.208120 0.046213 -0.500002
v 0.212050 0.046214 -0.500002
v -0.216625 0.046213 -0.500002
v -0.216625 0.020445 -0.500002
v 0.220555 0.012429 -0.485966
v 0.220555 0.020446 -0.500002
v 0.220555 0.321340 -0.500002
v -0.216624 0.321341 -0.500002
v 0.220555 0.046214 -0.500002
v -0.216624 0.321341 -0.485966
v -0.208120 0.238235 -0.450057
v -0.216625 -0.000001 -0.486750
v 0.212051 0.238236 -0.450057
v -0.208120 -0.306023 -0.464409
v 0.212051 -0.306023 -0.464409
v -0.208120 -0.238237 -0.450057
v 0.212051 -0.238237 -0.450057
v 0.212050 -0.046214 -0.500003
v -0.208120 -0.046215 -0.500003
v -0.208120 -0.016803 -0.500003
v 0.212050 -0.016803 -0.500003
v -0.216625 -0.000001 -0.481442
v 0.220555 -0.000000 -0.481442
v 0.212051 -0.310922 -0.485967
v -0.208120 -0.310922 -0.485967
v 0.220555 -0.321342 -0.485967
v -0.216625 -0.012430 -0.485967
v -0.216625 -0.046215 -0.500003
v -0.216625 -0.020447 -0.500003
v 0.220555 -0.012429 -0.485967
v 0.220555 -0.020446 -0.500003
v 0.220555 -0.321341 -0.500003
v -0.216624 -0.321343 -0.500003
v 0.220555 -0.046214 -0.500003
v -0.216624 -0.321343 -0.485967
v -0.208120 -0.000001 -0.486750
v 0.212050 -0.000000 -0.486750
v 0.212051 -0.086920 -0.442244
v -0.208120 -0.086920 -0.442244
v 0.212051 0.086847 -0.442244
v -0.208120 0.086847 -0.442244
v 0.212050 0.043405 -0.447755
v -0.208120 0.043405 -0.447755
v 0.212050 -0.043478 -0.447755
v -0.208120 -0.043478 -0.447755
v -0.216625 -0.010224 -0.490836
v -0.216625 0.006214 -0.482857
v 0.220555 0.006214 -0.482857
v -0.208120 0.008400 -0.490836
v 0.212050 0.008401 -0.490836
v 0.220555 0.010223 -0.490836
v -0.216625 0.010222 -0.490836
v 0.220555 -0.010223 -0.490836
v 0.212050 -0.008401 -0.490836
v -0.208120 -0.008402 -0.490836
v 0.220555 -0.006215 -0.482858
v -0.216625 -0.006215 -0.482858
v 0.212050 0.012429 -0.485966
v 0.212050 -0.000000 -0.481442
v 0.212050 -0.012429 -0.485967
v 0.212050 0.006214 -0.482857
v 0.212050 -0.006215 -0.482858
v -0.208120 0.012428 -0.485966
v -0.208120 -0.000001 -0.481442
v -0.208120 -0.012430 -0.485967
v -0.208120 0.006214 -0.482857
v -0.208120 -0.006215 -0.482858
v -0.012428 -0.485966 0.216625
v 0.000001 -0.486750 -0.220555
v -0.321341 -0.485966 -0.220555
v 0.000001 -0.462863 0.208120
v -0.310920 -0.485966 0.208120
v -0.306022 -0.464409 0.208120
v -0.306022 -0.464409 -0.212051
v -0.310920 -0.485966 -0.212051
v 0.000001 -0.462862 -0.212050
v -0.016802 -0.500002 -0.212050
v -0.016802 -0.500002 0.208120
v -0.046214 -0.500002 0.208120
v -0.046214 -0.500002 -0.212050
v -0.046214 -0.500002 0.216625
v -0.020445 -0.500002 0.216625
v -0.012428 -0.485966 -0.220555
v -0.020445 -0.500002 -0.220555
v -0.321340 -0.500002 -0.220555
v -0.321341 -0.500002 0.216624
v -0.046214 -0.500002 -0.220555
v -0.321341 -0.485966 0.216624
v -0.238235 -0.450057 0.208120
v 0.000001 -0.486750 0.216625
v -0.238235 -0.450057 -0.212051
v 0.306023 -0.464409 0.208120
v 0.306023 -0.464409 -0.212051
v 0.238237 -0.450057 0.208120
v 0.238237 -0.450057 -0.212051
v 0.046215 -0.500003 -0.212050
v 0.046215 -0.500003 0.208120
v 0.016803 -0.500003 0.208120
v 0.016803 -0.500003 -0.212050
v 0.000001 -0.481442 0.216625
v 0.000001 -0.481442 -0.220555
v 0.310922 -0.485967 -0.212051
v 0.310922 -0.485967 0.208120
v 0.321343 -0.485967 -0.220555
v 0.012430 -0.485967 0.216625
v 0.046215 -0.500003 0.216625
v 0.020447 -0.500003 0.216625
v 0.012430 -0.485967 -0.220555
v 0.020447 -0.500003 -0.220555
v 0.321342 -0.500003 -0.220555
v 0.321343 -0.500003 0.216624
v 0.046215 -0.500003 -0.220555
v 0.321343 -0.485967 0.216624
v 0.000001 -0.486750 0.208120
v 0.000001 -0.486750 -0.212050
v 0.086920 -0.442244 -0.212051
v 0.086920 -0.442244 0.208120
v -0.086847 -0.442244 -0.212051
v -0.086847 -0.442244 0.208120
v -0.043405 -0.447755 -0.212050
v -0.043405 -0.447755 0.208120
v 0.043478 -0.447755 -0.212050
v 0.043478 -0.447755 0.208120
v 0.010224 -0.490836 0.216625
v -0.006214 -0.482857 0.216625
v -0.006214 -0.482857 -0.220555
v -0.008400 -0.490836 0.208120
v -0.008400 -0.490836 -0.212050
v -0.010222 -0.490836 -0.220555
v -0.010222 -0.490836 0.216625
v 0.010224 -0.490836 -0.220555
v 0.008402 -0.490836 -0.212050
v 0.008402 -0.490836 0.208120
v 0.006215 -0.482858 -0.220555
v 0.006215 -0.482858 0.216625
v -0.012428 -0.485966 -0.212050
v 0.000001 -0.481442 -0.212050
v 0.012430 -0.485967 -0.212050
v -0.006214 -0.482857 -0.212050
v 0.006215 -0.482858 -0.212050
v -0.012428 -0.485966 0.208120
v 0.000001 -0.481442 0.208120
v 0.012430 -0.485967 0.208120
v -0.006214 -0.482857 0.208120
v 0.006215 -0.482858 0.208120
vt 0.965735 0.839196
vt 0.711783 0.839196
vt 0.711783 0.832541
@ -249,79 +249,80 @@ vt 0.500000 0.156314
vt 0.568437 0.156314
vt 0.568437 0.984311
vt 0.500000 0.984311
vn 0.577300 0.577300 -0.577300
vn 0.707100 0.000000 -0.707100
vn 0.000000 0.000000 -1.000000
vn -0.707100 0.000000 -0.707100
vn -0.577300 0.577300 -0.577300
vn -0.246900 -0.280700 0.927500
vn -0.658800 -0.172900 0.732100
vn -0.762700 -0.148700 0.629400
vn -0.577300 -0.577300 0.577300
vn 0.668800 -0.216600 -0.711100
vn 0.071700 -0.428700 -0.900500
vn -0.762700 0.148700 0.629400
vn -0.577300 0.577300 0.577300
vn -0.668800 -0.216600 -0.711100
vn 0.577300 0.577300 0.577300
vn 0.762700 0.148700 0.629400
vn -0.658800 0.172900 0.732100
vn -0.246900 0.280700 0.927500
vn -0.071700 -0.428700 -0.900500
vn 0.246900 0.280700 0.927500
vn -0.071700 0.428800 -0.900500
vn 0.071700 0.428800 -0.900500
vn -0.668800 0.216600 -0.711100
vn 0.577300 -0.577300 0.577300
vn 0.577300 -0.577300 -0.577300
vn 0.668800 0.216600 -0.711100
vn 0.762700 -0.148700 0.629400
vn -0.577300 -0.577300 -0.577300
vn 0.658800 -0.172900 0.732100
vn 0.246900 -0.280700 0.927500
vn 0.794100 0.350300 -0.496700
vn 0.814600 0.000000 -0.580000
vn 0.681100 -0.246900 0.689300
vn 0.660400 0.000000 0.750900
vn 0.681100 0.246800 0.689300
vn 0.794100 -0.350300 -0.496700
vn -0.794100 -0.350300 -0.496700
vn -0.814600 0.000000 -0.580000
vn -0.681100 0.246800 0.689300
vn -0.660400 0.000000 0.750900
vn -0.681100 -0.246900 0.689300
vn -0.794100 0.350300 -0.496700
vn -0.062900 0.569600 -0.819500
vn -0.023700 0.000000 -0.999700
vn -0.062900 -0.569600 -0.819500
vn 0.062900 0.569600 -0.819500
vn 0.023700 0.000000 -0.999700
vn 0.062900 -0.569600 -0.819500
vn 0.760600 0.000000 0.649100
vn 0.735000 -0.228600 0.638300
vn 0.658800 0.172900 0.732100
vn 0.735000 0.228600 0.638300
vn -0.735000 -0.228600 0.638300
vn -0.760600 0.000000 0.649100
vn -0.735000 0.228600 0.638300
vn -0.603500 0.559600 0.567900
vn 0.603500 0.559600 0.567900
vn 0.603500 -0.559600 0.567900
vn -0.603500 -0.559600 0.567900
vn 0.789000 -0.000200 0.614300
vn 0.684400 -0.166600 0.709800
vn -0.687600 0.027100 0.725500
vn -0.684400 0.166400 0.709800
vn 0.689800 0.093900 0.717800
vn 0.687600 -0.027100 0.725500
vn 0.689800 -0.093900 0.717800
vn 0.687600 0.027100 0.725500
vn 0.684400 0.166400 0.709800
vn -0.689800 0.093900 0.717800
vn -0.687600 -0.027100 0.725500
vn -0.789000 -0.000200 0.614300
vn -0.684400 -0.166600 0.709800
vn -0.689800 -0.093900 0.717800
vn 0.000000 -0.707100 -0.707100
vn 0.000000 -1.000000 0.000000
vn 0.000000 -0.707100 0.707100
vn -0.577300 -0.577300 0.577300
vn 0.280700 0.927500 0.246900
vn 0.172900 0.732100 0.658800
vn 0.148700 0.629400 0.762700
vn 0.577300 0.577300 0.577300
vn 0.216600 -0.711100 -0.668800
vn 0.428700 -0.900500 -0.071700
vn -0.148700 0.629400 0.762700
vn -0.577300 0.577300 0.577300
vn 0.216600 -0.711100 0.668800
vn -0.577300 0.577300 -0.577300
vn -0.148700 0.629400 -0.762700
vn -0.172900 0.732100 0.658800
vn -0.280700 0.927500 0.246900
vn 0.428700 -0.900500 0.071700
vn -0.280700 0.927500 -0.246900
vn -0.428800 -0.900500 0.071700
vn -0.428800 -0.900500 -0.071700
vn -0.216600 -0.711100 0.668800
vn 0.577300 0.577300 -0.577300
vn 0.577300 -0.577300 -0.577300
vn 0.000000 -0.707100 -0.707000
vn -0.216600 -0.711100 -0.668800
vn 0.148700 0.629400 -0.762700
vn 0.577300 -0.577300 0.577300
vn 0.172900 0.732100 -0.658800
vn 0.280700 0.927500 -0.246900
vn -0.350300 -0.496700 -0.794100
vn 0.000000 -0.580000 -0.814600
vn 0.246900 0.689300 -0.681100
vn 0.000000 0.750900 -0.660400
vn -0.246800 0.689300 -0.681100
vn 0.350300 -0.496700 -0.794100
vn 0.350300 -0.496700 0.794100
vn 0.000000 -0.580000 0.814600
vn -0.246800 0.689300 0.681100
vn 0.000000 0.750900 0.660400
vn 0.246900 0.689300 0.681100
vn -0.350300 -0.496700 0.794100
vn -0.569600 -0.819500 0.062900
vn 0.000000 -0.999700 0.023700
vn 0.569600 -0.819500 0.062900
vn -0.569600 -0.819500 -0.062900
vn 0.000000 -0.999700 -0.023700
vn 0.569600 -0.819500 -0.062900
vn 0.000000 0.649100 -0.760600
vn 0.228600 0.638300 -0.735000
vn -0.172900 0.732100 -0.658800
vn -0.228600 0.638300 -0.735000
vn 0.228600 0.638300 0.735000
vn 0.000000 0.649100 0.760600
vn -0.228600 0.638300 0.735000
vn -0.559600 0.567900 0.603500
vn -0.559600 0.567900 -0.603500
vn 0.559600 0.567900 -0.603500
vn 0.559600 0.567900 0.603500
vn 0.000200 0.614300 -0.789000
vn 0.166600 0.709800 -0.684400
vn -0.027100 0.725500 0.687600
vn -0.166400 0.709800 0.684400
vn -0.093900 0.717800 -0.689800
vn 0.027100 0.725500 -0.687600
vn 0.093900 0.717800 -0.689800
vn -0.027100 0.725500 -0.687600
vn -0.166400 0.709800 -0.684400
vn -0.093900 0.717800 0.689800
vn 0.027100 0.725500 0.687600
vn 0.000200 0.614300 0.789000
vn 0.166600 0.709800 0.684400
vn 0.093900 0.717800 0.689800
g Cube.002_Cube.001_Cube.002_Cube.001_cover
s 1
f 18/1/1 20/2/2 13/3/3 12/4/3 14/5/4 19/6/5
@ -335,84 +336,84 @@ f 13/3/3 10/12/11 11/31/19 12/4/3
f 21/30/13 5/29/18 8/32/20 3/33/15
f 29/34/3 30/35/3 31/31/21 32/12/22
f 31/31/21 30/35/3 39/36/4 40/37/23
f 37/38/24 43/39/25 45/40/2 42/41/26 41/42/27
f 43/43/25 37/21/24 46/20/9 44/44/28
f 38/45/8 40/46/23 39/47/4 44/48/28 46/49/9
f 29/34/3 32/12/22 42/50/26 45/51/2
f 41/52/27 71/53/29 35/54/30 37/55/24
f 35/54/30 36/7/6 46/10/9 37/55/24
f 43/56/25 44/57/28 39/36/4 30/35/3 29/34/3 45/51/2
f 37/38/24 43/39/25 45/40/26 42/41/27 41/42/28
f 43/43/25 37/21/24 46/20/9 44/44/29
f 38/45/8 40/46/23 39/47/4 44/48/29 46/49/9
f 29/34/3 32/12/22 42/50/27 45/51/26
f 41/52/28 71/53/30 35/54/31 37/55/24
f 35/54/31 36/7/6 46/10/9 37/55/24
f 43/56/25 44/57/29 39/36/4 30/35/3 29/34/3 45/51/26
f 15/58/14 14/5/4 12/4/3 11/31/19
f 42/41/26 64/59/31 41/42/27
f 41/42/27 64/59/31 2/60/32 67/61/33
f 67/61/33 2/60/32 34/62/34
f 34/62/34 2/60/32 59/63/35
f 2/60/32 62/64/36 16/23/16 59/63/35
f 16/23/16 62/64/36 17/24/10
f 15/17/14 63/65/37 1/13/12
f 23/66/38 58/67/39 1/13/12 63/65/37
f 58/67/39 23/66/38 33/68/40
f 68/69/41 33/68/40 23/66/38
f 38/45/8 68/69/41 23/66/38 57/70/42
f 57/70/42 40/46/23 38/45/8
f 40/71/23 57/72/42 66/73/43 31/74/21
f 57/44/42 23/75/38 47/76/44 66/77/43
f 47/76/44 23/75/38 63/78/37 60/79/45
f 15/71/14 11/80/19 60/81/45 63/82/37
f 32/83/22 65/84/46 64/85/31 42/86/26
f 64/43/31 65/87/46 48/88/47 2/89/32
f 48/88/47 61/90/48 62/91/36 2/89/32
f 17/86/10 62/92/36 61/93/48 10/94/11
f 67/95/33 34/96/34 70/97/49 73/98/50
f 59/99/35 16/100/16 69/101/51 72/102/52
f 41/52/27 67/95/33 73/98/50 71/53/29
f 34/96/34 59/99/35 72/102/52 70/97/49
f 33/103/40 68/104/41 78/105/53 75/106/54
f 1/27/12 58/107/39 77/108/55 74/28/17
f 68/104/41 38/9/8 76/8/7 78/105/53
f 58/107/39 33/103/40 75/106/54 77/108/55
f 8/32/20 69/101/51 16/100/16 3/33/15
f 10/94/11 61/93/48 60/81/45 11/80/19
f 47/76/44 60/79/45 61/90/48 48/88/47
f 65/87/46 66/77/43 47/76/44 48/88/47
f 31/74/21 66/73/43 65/84/46 32/83/22
f 42/41/27 64/59/32 41/42/28
f 41/42/28 64/59/32 2/60/33 67/61/34
f 67/61/34 2/60/33 34/62/35
f 34/62/35 2/60/33 59/63/36
f 2/60/33 62/64/37 16/23/16 59/63/36
f 16/23/16 62/64/37 17/24/10
f 15/17/14 63/65/38 1/13/12
f 23/66/39 58/67/40 1/13/12 63/65/38
f 58/67/40 23/66/39 33/68/41
f 68/69/42 33/68/41 23/66/39
f 38/45/8 68/69/42 23/66/39 57/70/43
f 57/70/43 40/46/23 38/45/8
f 40/71/23 57/72/43 66/73/44 31/74/21
f 57/44/43 23/75/39 47/76/45 66/77/44
f 47/76/45 23/75/39 63/78/38 60/79/46
f 15/71/14 11/80/19 60/81/46 63/82/38
f 32/83/22 65/84/47 64/85/32 42/86/27
f 64/43/32 65/87/47 48/88/48 2/89/33
f 48/88/48 61/90/49 62/91/37 2/89/33
f 17/86/10 62/92/37 61/93/49 10/94/11
f 67/95/34 34/96/35 70/97/50 73/98/51
f 59/99/36 16/100/16 69/101/52 72/102/53
f 41/52/28 67/95/34 73/98/51 71/53/30
f 34/96/35 59/99/36 72/102/53 70/97/50
f 33/103/41 68/104/42 78/105/54 75/106/55
f 1/27/12 58/107/40 77/108/56 74/28/17
f 68/104/42 38/9/8 76/8/7 78/105/54
f 58/107/40 33/103/41 75/106/55 77/108/56
f 8/32/20 69/101/52 16/100/16 3/33/15
f 10/94/11 61/93/49 60/81/46 11/80/19
f 47/76/45 60/79/46 61/90/49 48/88/48
f 65/87/47 66/77/44 47/76/45 48/88/48
f 31/74/21 66/73/44 65/84/47 32/83/22
g Cube.002_Cube.001_Cube.002_Cube.001_edges
f 8/109/20 5/110/18 6/111/56 7/112/57
f 35/113/30 26/114/58 25/115/59 36/116/6
f 9/117/60 69/118/51 53/119/61
f 50/120/62 56/121/63 76/122/7
f 24/123/64 69/118/51 8/124/20
f 9/125/60 71/126/29 73/127/50
f 51/128/65 53/119/61 69/118/51
f 9/125/60 73/127/50 70/129/49
f 28/130/66 26/131/58 35/132/30
f 71/126/29 49/133/67 28/130/66
f 72/134/52 69/118/51 9/117/60
f 71/126/29 55/135/68 49/133/67
f 28/130/66 35/132/30 71/126/29
f 24/123/64 8/124/20 7/136/57
f 69/118/51 24/123/64 51/128/65
f 9/125/60 55/135/68 71/126/29
f 70/137/49 72/134/52 9/117/60
f 22/138/69 6/139/56 5/140/18
f 74/141/17 52/142/70 22/138/69
f 75/143/54 78/144/53 4/145/71
f 74/141/17 54/146/72 52/142/70
f 22/138/69 5/140/18 74/141/17
f 27/147/73 76/122/7 36/148/6
f 4/149/71 74/141/17 77/150/55
f 27/147/73 50/120/62 76/122/7
f 4/149/71 77/150/55 75/151/54
f 4/145/71 78/144/53 76/122/7
f 4/149/71 54/146/72 74/141/17
f 27/147/73 36/148/6 25/152/59
f 56/121/63 4/145/71 76/122/7
f 8/109/20 5/110/18 6/111/57 7/112/58
f 35/113/31 26/114/59 25/115/60 36/116/6
f 9/117/61 69/118/52 53/119/62
f 50/120/63 56/121/64 76/122/7
f 24/123/65 69/118/52 8/124/20
f 9/125/61 71/126/30 73/127/51
f 51/128/66 53/119/62 69/118/52
f 9/125/61 73/127/51 70/129/50
f 28/130/67 26/131/59 35/132/31
f 71/126/30 49/133/68 28/130/67
f 72/134/53 69/118/52 9/117/61
f 71/126/30 55/135/69 49/133/68
f 28/130/67 35/132/31 71/126/30
f 24/123/65 8/124/20 7/136/58
f 69/118/52 24/123/65 51/128/66
f 9/125/61 55/135/69 71/126/30
f 70/137/50 72/134/53 9/117/61
f 22/138/70 6/139/57 5/140/18
f 74/141/17 52/142/71 22/138/70
f 75/143/55 78/144/54 4/145/72
f 74/141/17 54/146/73 52/142/71
f 22/138/70 5/140/18 74/141/17
f 27/147/74 76/122/7 36/148/6
f 4/149/72 74/141/17 77/150/56
f 27/147/74 50/120/63 76/122/7
f 4/149/72 77/150/56 75/151/55
f 4/145/72 78/144/54 76/122/7
f 4/149/72 54/146/73 74/141/17
f 27/147/74 36/148/6 25/152/60
f 56/121/64 4/145/72 76/122/7
g Cube.002_Cube.001_Cube.002_Cube.001_pages
f 50/153/62 27/154/73 28/155/66 49/156/67
f 6/157/56 22/158/69 24/159/64 7/160/57
f 27/154/73 25/161/59 26/162/58 28/155/66
f 52/163/70 54/164/72 53/165/61 51/166/65
f 22/158/69 52/163/70 51/166/65 24/159/64
f 4/167/71 56/168/63 55/169/68 9/170/60
f 54/164/72 4/167/71 9/170/60 53/165/61
f 56/168/63 50/153/62 49/156/67 55/169/68
f 50/153/63 27/154/74 28/155/67 49/156/68
f 6/157/57 22/158/70 24/159/65 7/160/58
f 27/154/74 25/161/60 26/162/59 28/155/67
f 52/163/71 54/164/73 53/165/62 51/166/66
f 22/158/70 52/163/71 51/166/66 24/159/65
f 4/167/72 56/168/64 55/169/69 9/170/61
f 54/164/73 4/167/72 9/170/61 53/165/62
f 56/168/64 50/153/63 49/156/68 55/169/69

0
homedecor/models/homedecor_bottle.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_calendar.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_candle_thick.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_candle_thin.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_candlestick.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_ceiling_lamp.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_ceiling_lantern.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_chimney.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_coatrack.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_coffeemaker.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_copper_pans.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_cube.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_cutlery_set.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_dartboard.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_deckchair.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_desk.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_desk_fan.b3d Normal file → Executable file
View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 B

After

Width:  |  Height:  |  Size: 164 B

0
homedecor/models/homedecor_desk_globe.obj Normal file → Executable file
View File

3372
homedecor/models/homedecor_desk_lamp.obj Normal file → Executable file

File diff suppressed because it is too large Load Diff

0
homedecor/models/homedecor_doghouse.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_door_closet.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_door_closet_right.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_door_fancy.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_door_fancy_right.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_door_japanese_closed.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_door_japanese_open.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_door_plain.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_door_plain_right.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_door_wood_glass.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_door_wood_glass_right.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_door_woodglass_typea.obj Normal file → Executable file
View File

View File

0
homedecor/models/homedecor_door_wrought_iron.obj Normal file → Executable file
View File

0
homedecor/models/homedecor_door_wrought_iron_right.obj Normal file → Executable file
View File

Some files were not shown because too many files have changed in this diff Show More