1
0
mirror of https://github.com/mt-mods/homedecor_modpack.git synced 2025-07-16 20:50:22 +02:00

Compare commits

...

23 Commits

Author SHA1 Message Date
7ab149275b Add "rope" lighting 2019-05-25 02:34:50 -04:00
c6ef999591 re-add fan blades
(lost during The Big Split)
2019-05-25 01:10:29 -04:00
a9cfef8fba give bathtub some rough collision info
allow showerhead to be turned on when placed 2m above the tub
(must be on the same end as the taps)
2019-05-25 00:59:51 -04:00
9d64af85ca convert doors over to use minetest_game doors API
simplify gates code a bit
2019-05-25 00:11:54 -04:00
712ca909ca Multiple related changes:
remove duplicate dishwasher recipe
more kitchen depends fixes
fix wrong brass taps recipe (ref technic brass, need basic_materials brass)
re-add missing bathroom items recipes
re-add missing stading- and table-lamp recipes
add alternate dishwasher recipe
add recipes for "half-doors"
change light bath tiles recipe (don't need white dye for base node, now)
move japanese wall parts to homedecor_misc, make _doors opt depend on that
2019-05-24 20:40:44 -04:00
32fc5dc49b bad modpath check (leftover from The Big Split); fixes #12
also added optdepend on kitchen stuff (for the recipe)
2019-05-04 13:10:03 -04:00
854e96d4c0 add "light" to lava lamp desc. 2019-05-03 12:06:43 -04:00
6e61cc4ad8 move sounds to their correct folders 2019-05-02 18:40:25 -04:00
2ee1cd6887 Make sure all "lanterns" and "lamps" have "light" in their descriptions also
(for easier searching in sfinv and unified inv)
2019-05-02 18:36:36 -04:00
0cd8bd7780 remove homedecor_i18n and merged into homedecor_common, fixed meseon global error 2019-04-21 16:25:21 +01:00
8b78caf7c6 wardrobe now uses homedecor api 2019-04-21 15:22:27 +01:00
18d74e2f09 fix a couple of wrong depends 2019-04-21 07:47:09 -04:00
b94139c9df lighter, softer building_blocks marble texture 2019-04-20 17:02:48 -04:00
bb808a944c fix wrong "kitchen" chair selection box 2019-04-20 17:02:48 -04:00
b08c0905c0 Split the big "homedecor" mod into multiple sub-mods
Any of these new submods can be run without any other
components that were once part of the big "homedecor"
mod, other than homedecor_common and homedecor_i18n

Reduced dependencies where possible, but each submod still
has its various dependencies more or less the same as before,
i.e. some need basic_materials, others need unifieddyes,
some need building_blocks, and so on.

All of the stuff that used to be under homedecor/handlers
got moved to homedecor_common, as did any models and/or textures
that are used by more than one other homedecor component.

All the miscellaneous items that didn't warrant their own
mod ended up in homedecor_misc, which can also be thought
of as the remains of the original "homedecor" mod, renamed.
2019-04-20 17:02:42 -04:00
95590f23c5 Separate-out the wardrobe into its own mod
Standalone -- can be used without the rest of home decor
2019-04-20 10:01:42 -04:00
554ec8028d use basic_materials motor 2019-03-31 19:37:39 -04:00
0ab1040760 Merge branch 'pg-fix-tap-particles' into 'master'
Fix the tap particles spilling out of the sink

See merge request VanessaE/homedecor_modpack!4
2019-03-24 21:07:58 +00:00
52375443ed Fix the tap particles spilling out of the sink 2019-03-24 18:57:58 +01:00
ac71c0f189 Merge branch 'master' into 'master'
bugfix wardrobe save/restore skins for skinsdb

See merge request VanessaE/homedecor_modpack!2
2018-12-16 20:42:15 +00:00
37c6b99ac1 make currency opt depend 2018-11-12 08:23:19 -05:00
bcf9238e47 use currency mod's 25-cent Minegeld coin for soda machine 2018-11-09 20:23:42 -05:00
04cb59401b bugfix wardrobe save/restore skins for skinsdb 2018-06-25 16:12:09 +02:00
817 changed files with 5858 additions and 5636 deletions

View File

@ -1,4 +1,4 @@
local S = homedecor_i18n.gettext local S = homedecor.gettext
if minetest.get_modpath("moreblocks") or minetest.get_modpath("stairs") then if minetest.get_modpath("moreblocks") or minetest.get_modpath("stairs") then
minetest.register_alias("building_blocks:slab_tar", "stairs:slab_Tar") minetest.register_alias("building_blocks:slab_tar", "stairs:slab_Tar")

View File

@ -1,5 +1,5 @@
default default
homedecor_i18n homedecor_common
moreblocks? moreblocks?
gloopblocks? gloopblocks?
stairs? stairs?

View File

@ -1,7 +1,7 @@
local S = homedecor_i18n.gettext local S = homedecor.gettext
local modpath = minetest.get_modpath("building_blocks") local modpath = minetest.get_modpath("building_blocks")
dofile(modpath.."/alias.lua") dofile(modpath.."/alias.lua")
dofile(modpath.."/node_stairs.lua") dofile(modpath.."/node_stairs.lua")
dofile(modpath.."/others.lua") dofile(modpath.."/others.lua")
dofile(modpath.."/recipes.lua") dofile(modpath.."/recipes.lua")

View File

@ -1,4 +1,4 @@
local S = homedecor_i18n.gettext local S = homedecor.gettext
local stairs_groups_names = {"cracky","choppy","flammable","crumbly","snappy"} local stairs_groups_names = {"cracky","choppy","flammable","crumbly","snappy"}
@ -33,7 +33,7 @@ local function building_blocks_stairs(nodename, def)
("%s Slab"):format(def.description), ("%s Slab"):format(def.description),
def.sounds def.sounds
) )
end end
end end
end end

View File

@ -1,4 +1,4 @@
local S = homedecor_i18n.gettext local S = homedecor.gettext
minetest.register_craftitem("building_blocks:sticks", { minetest.register_craftitem("building_blocks:sticks", {
description = S("Small bundle of sticks"), description = S("Small bundle of sticks"),
@ -20,4 +20,4 @@ minetest.register_tool("building_blocks:knife", {
fleshy={times={[2]=5.50, [3]=2.80}, uses=100, maxlevel=1} fleshy={times={[2]=5.50, [3]=2.80}, uses=100, maxlevel=1}
} }
}, },
}) })

View File

@ -1,4 +1,4 @@
local S = homedecor_i18n.gettext local S = homedecor.gettext
if minetest.get_modpath("moreblocks") then if minetest.get_modpath("moreblocks") then
minetest.register_craft({ minetest.register_craft({

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 B

After

Width:  |  Height:  |  Size: 450 B

View File

@ -1,5 +1,5 @@
local S = homedecor_i18n.gettext local S = homedecor.gettext
-- Amiga 500 lookalike -- Amiga 500 lookalike
computer.register("computer:shefriendSOO", { computer.register("computer:shefriendSOO", {

View File

@ -1,2 +1,2 @@
default default
homedecor_i18n homedecor_common

View File

@ -2,7 +2,7 @@
-- This file defines some items in order to not have to depend on other mods. -- This file defines some items in order to not have to depend on other mods.
local S = homedecor_i18n.gettext local S = homedecor.gettext
if (not minetest.get_modpath("homedecor")) then if (not minetest.get_modpath("homedecor")) then

View File

@ -1,5 +1,5 @@
local S = homedecor_i18n.gettext local S = homedecor.gettext
local shapes = { local shapes = {
{ { x = {0, 1, 0, 1}, y = {0, 0, 1, 1} } }, { { x = {0, 1, 0, 1}, y = {0, 0, 1, 1} } },
@ -231,7 +231,7 @@ local function step(pos, fields)
local scr = { formsize, background, local scr = { formsize, background,
t.boardstring, t.previewstring, t.boardstring, t.previewstring,
draw_shape(t.cur, t.x, t.y, t.rot, boardx, boardy), draw_shape(t.cur, t.x, t.y, t.rot, boardx, boardy),
"label[3.8,0.1;"..S("Next...").."]label[3.8,2.7;"..S("Score: "), "label[3.8,0.1;"..S("Next...").."]label[3.8,2.7;"..S("Score: "),
t.score, close, buttons } t.score, close, buttons }

View File

@ -1,8 +1,11 @@
Most code and all textures by Vanessa Ezekowitz. Most code and textures by Vanessa Ezekowitz.
Some code copied and modified from the game's default mods (especially Some code copied and modified from the game's default mods (especially
doors) and ironzorg's flowers mod. doors) and ironzorg's flowers mod.
Whatever is stated here applies to all homedecor modpack components, as
appropriate.
Licenses: Licenses:
* Door open/close sound by Slanesh on freesound.org * Door open/close sound by Slanesh on freesound.org
http://freesound.org/people/Slanesh/sounds/31768/ http://freesound.org/people/Slanesh/sounds/31768/
@ -14,3 +17,4 @@ Licenses:
http://www.freesfx.co.uk/sfx/book?p=3 http://www.freesfx.co.uk/sfx/book?p=3
* Phone ringing sound by andyt's on http://www.freesfx.co.uk/ * Phone ringing sound by andyt's on http://www.freesfx.co.uk/
http://www.freesfx.co.uk/sfx/phone?p=5 http://www.freesfx.co.uk/sfx/phone?p=5

View File

@ -1,2 +1,2 @@
default default
homedecor homedecor_common

View File

@ -1,5 +1,5 @@
local S = homedecor_i18n.gettext local S = homedecor.gettext
screwdriver = screwdriver or {} screwdriver = screwdriver or {}

View File

@ -1,166 +0,0 @@
local S = homedecor_i18n.gettext
minetest.register_node("homedecor:bathroom_tiles_dark", {
description = S("Bathroom/kitchen tiles (dark)"),
tiles = {
"homedecor_bathroom_tiles_bg.png"
},
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xff606060 },
},
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(),
on_construct = unifieddyes.on_construct,
})
minetest.register_node("homedecor:bathroom_tiles_medium", {
description = S("Bathroom/kitchen tiles (medium)"),
tiles = {
"homedecor_bathroom_tiles_bg.png"
},
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffc0c0c0 },
},
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(),
on_construct = unifieddyes.on_construct,
})
minetest.register_node("homedecor:bathroom_tiles_light", {
description = S("Bathroom/kitchen tiles (light)"),
tiles = {
"homedecor_bathroom_tiles_bg.png"
},
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffffffff },
},
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(),
on_construct = unifieddyes.on_construct,
})
local tr_cbox = {
type = "fixed",
fixed = { -0.375, -0.3125, 0.25, 0.375, 0.375, 0.5 }
}
homedecor.register("towel_rod", {
description = S("Towel rod with towel"),
mesh = "homedecor_towel_rod.obj",
tiles = {
"homedecor_generic_terrycloth.png",
"default_wood.png",
},
inventory_image = "homedecor_towel_rod_inv.png",
selection_box = tr_cbox,
walkable = false,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3},
sounds = default.node_sound_defaults(),
})
homedecor.register("medicine_cabinet", {
description = S("Medicine cabinet"),
mesh = "homedecor_medicine_cabinet.obj",
tiles = {
'default_wood.png',
'homedecor_medicine_cabinet_mirror.png'
},
inventory_image = "homedecor_medicine_cabinet_inv.png",
selection_box = {
type = "fixed",
fixed = {-0.3125, -0.1875, 0.3125, 0.3125, 0.5, 0.5}
},
walkable = false,
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
on_punch = function(pos, node, puncher, pointed_thing)
node.name = "homedecor:medicine_cabinet_open"
minetest.swap_node(pos, node)
end,
infotext=S("Medicine cabinet"),
inventory = {
size=6,
},
})
homedecor.register("medicine_cabinet_open", {
mesh = "homedecor_medicine_cabinet_open.obj",
tiles = {
'default_wood.png',
'homedecor_medicine_cabinet_mirror.png',
'homedecor_medicine_cabinet_inside.png'
},
selection_box = {
type = "fixed",
fixed = {-0.3125, -0.1875, -0.25, 0.3125, 0.5, 0.5}
},
walkable = false,
groups = { snappy = 3, not_in_creative_inventory=1 },
drop = "homedecor:medicine_cabinet",
on_punch = function(pos, node, puncher, pointed_thing)
node.name = "homedecor:medicine_cabinet"
minetest.swap_node(pos, node)
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
})

View File

@ -1,326 +0,0 @@
local S = homedecor_i18n.gettext
local toilet_sbox = {
type = "fixed",
fixed = { -6/16, -8/16, -8/16, 6/16, 9/16, 8/16 },
}
local toilet_cbox = {
type = "fixed",
fixed = {
{-6/16, -8/16, -8/16, 6/16, 1/16, 8/16 },
{-6/16, -8/16, 4/16, 6/16, 9/16, 8/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 }
},
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)
node.name = "homedecor:toilet_open"
minetest.set_node(pos, node)
end
})
homedecor.register("toilet_open", {
mesh = "homedecor_toilet_open.obj",
tiles = {
"homedecor_marble.png",
"homedecor_marble.png",
"homedecor_marble.png",
"default_water.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey }
},
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)
node.name = "homedecor:toilet"
minetest.set_node(pos, node)
minetest.sound_play("homedecor_toilet_flush", {
pos=pos,
max_hear_distance = 5,
gain = 1,
})
end
})
-- toilet paper :-)
local tp_cbox = {
type = "fixed",
fixed = { -0.25, 0.125, 0.0625, 0.1875, 0.4375, 0.5 }
}
homedecor.register("toilet_paper", {
description = S("Toilet paper"),
mesh = "homedecor_toilet_paper.obj",
tiles = {
"homedecor_generic_quilted_paper.png",
"default_wood.png"
},
inventory_image = "homedecor_toilet_paper_inv.png",
selection_box = tp_cbox,
walkable = false,
groups = {snappy=3,oddly_breakable_by_hand=3},
sounds = default.node_sound_defaults(),
})
--Sink
local sink_cbox = {
type = "fixed",
fixed = { -5/16, -8/16, 1/16, 5/16, 8/16, 8/16 }
}
homedecor.register("sink", {
description = S("Bathroom Sink"),
mesh = "homedecor_bathroom_sink.obj",
tiles = {
"homedecor_marble.png",
"homedecor_marble.png",
"default_water.png"
},
inventory_image="homedecor_bathroom_sink_inv.png",
selection_box = sink_cbox,
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
node_box = {
type = "fixed",
fixed = {
{ -5/16, 5/16, 1/16, -4/16, 8/16, 8/16 },
{ 5/16, 5/16, 1/16, 4/16, 8/16, 8/16 },
{ -5/16, 5/16, 1/16, 5/16, 8/16, 2/16 },
{ -5/16, 5/16, 6/16, 5/16, 8/16, 8/16 },
{ -4/16, -8/16, 1/16, 4/16, 5/16, 6/16 }
}
},
on_destruct = function(pos)
homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z})
end
})
--Taps
local function taps_on_rightclick(pos, node, clicker, itemstack, pointed_thing)
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
local particledef = {
outlet = { x = 0, y = -0.44, z = 0.28 },
velocity_x = { min = -0.1, max = 0.1 },
velocity_y = -0.3,
velocity_z = { min = -0.1, max = 0 },
spread = 0
}
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_bright.png",
"homedecor_generic_metal.png",
"homedecor_generic_metal_bright.png"
},
inventory_image = "3dforniture_taps_inv.png",
wield_image = "3dforniture_taps_inv.png",
selection_box = {
type = "fixed",
fixed = { -4/16, -7/16, 4/16, 4/16, -4/16, 8/16 },
},
walkable = false,
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
on_rightclick = taps_on_rightclick,
on_destruct = homedecor.stop_particle_spawner,
on_rotate = screwdriver.disallow
})
homedecor.register("taps_brass", {
description = S("Bathroom taps/faucet (brass)"),
mesh = "homedecor_bathroom_faucet.obj",
tiles = {
"homedecor_generic_metal_brass.png",
"homedecor_generic_metal_brass.png",
"homedecor_generic_metal.png",
"homedecor_generic_metal_brass.png"
},
inventory_image = "3dforniture_taps_brass_inv.png",
wield_image = "3dforniture_taps_brass_inv.png",
selection_box = {
type = "fixed",
fixed = { -4/16, -7/16, 4/16, 4/16, -4/16, 8/16 },
},
walkable = false,
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
on_rightclick = taps_on_rightclick,
on_destruct = homedecor.stop_particle_spawner,
on_rotate = screwdriver.disallow
})
--Shower Tray
homedecor.register("shower_tray", {
description = S("Shower Tray"),
tiles = {
"forniture_marble_base_ducha_top.png",
"homedecor_marble.png"
},
node_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -0.5, 0.5, -0.45, 0.5 },
{ -0.5, -0.45, -0.5, 0.5, -0.4, -0.45 },
{ -0.5, -0.45, 0.45, 0.5, -0.4, 0.5 },
{ -0.5, -0.45, -0.45, -0.45, -0.4, 0.45 },
{ 0.45, -0.45, -0.45, 0.5, -0.4, 0.45 }
},
},
selection_box = homedecor.nodebox.slab_y(0.1),
groups = {cracky=2},
sounds = default.node_sound_stone_defaults(),
on_destruct = function(pos)
homedecor.stop_particle_spawner({x=pos.x, y=pos.y+2, z=pos.z}) -- the showerhead
homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z}) -- the taps, if any
end
})
--Shower Head
local sh_cbox = {
type = "fixed",
fixed = { -0.2, -0.4, -0.05, 0.2, 0.1, 0.5 }
}
homedecor.register("shower_head", {
drawtype = "mesh",
mesh = "homedecor_shower_head.obj",
tiles = {
"homedecor_generic_metal.png",
"homedecor_shower_head.png"
},
inventory_image = "homedecor_shower_head_inv.png",
description = S("Shower Head"),
groups = {snappy=3},
selection_box = sh_cbox,
walkable = false,
on_rotate = screwdriver.disallow,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
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 = {
outlet = { x = 0, y = -0.42, z = 0.1 },
velocity_x = { min = -0.15, max = 0.15 },
velocity_y = -2,
velocity_z = { min = -0.3, max = 0.1 },
spread = 0.12
}
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 }
}
homedecor.register("bathroom_set", {
drawtype = "mesh",
mesh = "homedecor_bathroom_set.obj",
tiles = {
"homedecor_bathroom_set_mirror.png",
"homedecor_bathroom_set_tray.png",
"homedecor_bathroom_set_toothbrush.png",
"homedecor_bathroom_set_cup.png",
"homedecor_bathroom_set_toothpaste.png",
},
inventory_image = "homedecor_bathroom_set_inv.png",
description = S("Bathroom sundries set"),
groups = {snappy=3},
selection_box = bs_cbox,
walkable = false,
sounds = default.node_sound_glass_defaults(),
})
minetest.register_alias("3dforniture:toilet", "homedecor:toilet")
minetest.register_alias("3dforniture:toilet_open", "homedecor:toilet_open")
minetest.register_alias("3dforniture:sink", "homedecor:sink")
minetest.register_alias("3dforniture:taps", "homedecor:taps")
minetest.register_alias("3dforniture:shower_tray", "homedecor:shower_tray")
minetest.register_alias("3dforniture:shower_head", "homedecor:shower_head")
minetest.register_alias("3dforniture:table_lamp", "homedecor:table_lamp_off")
minetest.register_alias("toilet", "homedecor:toilet")
minetest.register_alias("sink", "homedecor:sink")
minetest.register_alias("taps", "homedecor:taps")
minetest.register_alias("shower_tray", "homedecor:shower_tray")
minetest.register_alias("shower_head", "homedecor:shower_head")
minetest.register_alias("table_lamp", "homedecor:table_lamp_off")

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +0,0 @@
default
basic_materials
unifieddyes
homedecor_i18n
creative
building_blocks?
signs_lib?
moreblocks?
technic?
dye?
bees?
bucket?
beds?
flowers?
3d_armor?
skinsdb?
mesecons?
darkage?

View File

@ -1,662 +0,0 @@
-- Node definitions for Homedecor doors
local S = homedecor_i18n.gettext
local function N_(x) return x end
local m_rules = mesecon and mesecon.rules and mesecon.rules.pplate
-- doors
local function isSolid(pos, adjust)
local adj = {x = adjust[1], y = adjust[2], z = adjust[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]
if idef then
return idef.walkable
end
end
return false
end
local function countSolids(pos,node,level)
local solids = 0
for x = -1, 1 do
for z = -1, 1 do
local y = (node.param2 == 5) and -level or level
-- special cases when x == z == 0
if x == 0 and z == 0 then
if level == 1 then
-- when looking past the trap door, cannot be solid in center
if isSolid(pos,{x,y,z}) then
return false
end
-- no else. it doesn't matter if x == y == z is solid, that's us.
end
elseif isSolid(pos,{x,y,z}) then
solids = solids + 1
end
end
end
return solids
end
local function calculateClosed(pos)
local node = minetest.get_node(pos)
-- the door is considered closed if it is closing off something.
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 solids = countSolids(pos,node,level)
if solids == 8 then
return true
end
end
return false
else
-- the door is considered closed when the nodes on its sides are solid
-- or the 3 nodes in its facing direction are solid nonsolid solid
-- if the door has two levels (i.e. not a gate) then this must
-- be true for the top node as well.
-- sorry I dunno the math to figure whether to x or z
if direction == 1 or direction == 2 then
if isSolid(pos,{0,0,-1}) and isSolid(pos,{0,0,1}) then
if string.find(node.name,'_bottom_') then
return calculateClosed({x=pos.x,y=pos.y+1,z=pos.z})
else
return true
end
end
local x = (direction == 1) and 1 or -1
if isSolid(pos,{x,0,-1}) and not isSolid(pos,{x,0,0}) and isSolid(pos,{x,0,1}) then
if string.find(node.name,'_bottom_') then
return calculateClosed({x=pos.x,y=pos.y+1,z=pos.z})
else
return true
end
end
return false
else
-- direction == 3 or 4
if isSolid(pos,{-1,0,0}) and isSolid(pos,{1,0,0}) then
if string.find(node.name,'_bottom_') then
return calculateClosed({x=pos.x,y=pos.y+1,z=pos.z})
else
return true
end
end
local z = (direction == 3) and 1 or -1
if isSolid(pos,{-1,0,z}) and not isSolid(pos,{0,0,z}) and isSolid(pos,{1,0,z}) then
if string.find(node.name,'_bottom_') then
return calculateClosed({x=pos.x,y=pos.y+1,z=pos.z})
else
return true
end
end
return false
end
end
end
-- isClosed flag, is 0 or 1 0 = open, 1 = closed
local function getClosed(pos)
local isClosed = minetest.get_meta(pos):get_string('closed')
if isClosed=='' then
return calculateClosed(pos)
else
isClosed = tonumber(isClosed)
-- may be closed or open (1 or 0)
return isClosed == 1
end
end
local function addDoorNode(pos,def,isClosed)
minetest.set_node(pos, def)
minetest.get_meta(pos):set_int('closed', isClosed and 1 or 0)
end
local door_model_list = {
{ name = "closet_mahogany",
description = N_("Mahogany Closet Door (@1 opening)"),
mesh = "homedecor_door_closet.obj"
},
{ name = "closet_oak",
description = N_("Oak Closet Door (@1 opening)"),
mesh = "homedecor_door_closet.obj"
},
{ name = "exterior_fancy",
description = N_("Fancy Wood/Glass Door (@1 opening)"),
mesh = "homedecor_door_fancy.obj",
tiles = {
"homedecor_door_exterior_fancy.png",
"homedecor_door_exterior_fancy_insert.png"
},
usealpha = true
},
{ name = "wood_glass_oak",
description = N_("Glass and Wood, Oak-colored (@1 opening)"),
mesh = "homedecor_door_wood_glass.obj",
tiles = {
"homedecor_door_wood_glass_oak.png",
"homedecor_door_wood_glass_insert.png",
}
},
{ name = "wood_glass_mahogany",
description = N_("Glass and Wood, Mahogany-colored (@1 opening)"),
mesh = "homedecor_door_wood_glass.obj",
tiles = {
"homedecor_door_wood_glass_mahogany.png",
"homedecor_door_wood_glass_insert.png",
}
},
{ name = "wood_glass_white",
description = N_("Glass and Wood, White (@1 opening)"),
mesh = "homedecor_door_wood_glass.obj",
tiles = {
"homedecor_door_wood_glass_white.png",
"homedecor_door_wood_glass_insert.png",
}
},
{ name = "wood_plain",
description = N_("Plain Wooden Door (@1 opening)"),
mesh = "homedecor_door_plain.obj"
},
{ name = "bedroom",
description = N_("White Bedroom Door (@1 opening)"),
mesh = "homedecor_door_plain.obj"
},
{ name = "wrought_iron",
description = N_("Wrought Iron Gate/Door (@1 opening)"),
mesh = "homedecor_door_wrought_iron.obj"
},
{ name = "woodglass",
description = N_("Wooden door with glass insert (@1 opening)"),
mesh = "homedecor_door_woodglass_typea.obj",
tiles = {
"homedecor_door_woodglass_typea.png",
"homedecor_door_woodglass_typea_insert.png",
},
usealpha = true
},
{ name = "woodglass2",
description = N_("Wooden door with glass insert, type 2 (@1 opening)"),
mesh = "homedecor_door_plain.obj",
usealpha = true
},
}
local def_selbox = {
type = "fixed",
fixed = { -0.5, -0.5, 0.375, 0.5, 1.5, 0.5 }
}
local sides = { N_("left"), N_("right") }
for i, side in ipairs(sides) do
for _, door_model in ipairs(door_model_list) do
local doorname = door_model.name
local selbox = door_model.selectbox or def_selbox
local colbox = door_model.collisionbox or door_model.selectbox or def_selbox
local mesh = door_model.mesh
local groups = {snappy = 3}
if side == "right" then
mesh = string.gsub(door_model.mesh, ".obj", "_right.obj")
groups = {snappy = 3, not_in_creative_inventory = 1}
end
minetest.register_node("homedecor:door_"..doorname.."_"..side, {
description = S(door_model.description, S(side)),
drawtype = "mesh",
mesh = mesh,
tiles = door_model.tiles or { "homedecor_door_"..doorname..".png" },
inventory_image = "homedecor_door_"..doorname.."_inv.png",
wield_image = "homedecor_door_"..doorname.."_inv.png",
paramtype = "light",
paramtype2 = "facedir",
groups = groups,
sounds = default.node_sound_wood_defaults(),
use_texture_alpha = door_model.usealpha,
selection_box = selbox,
collision_box = colbox,
on_rotate = screwdriver.rotate_simple,
on_place = function(itemstack, placer, pointed_thing)
return homedecor.stack_wing(itemstack, placer, pointed_thing,
"homedecor:door_"..doorname.."_left", "air",
"homedecor:door_"..doorname.."_right", "air")
end,
on_construct = function(pos)
minetest.get_meta(pos):set_int("closed", 1)
end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
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
-- check when that action is invoked if to continue
on_punch = function(pos, node, puncher)
minetest.get_meta(pos):set_string('closed',nil)
end,
drop = "homedecor:door_"..doorname.."_left",
mesecons = {
effector = {
rules = m_rules,
action_on = function(pos,node)
local isClosed = getClosed(pos)
if isClosed then
homedecor.flip_door(pos,node,nil,doorname,side,isClosed)
end
end,
action_off = function(pos,node)
local isClosed = getClosed(pos)
if not isClosed then
homedecor.flip_door(pos,node,nil,doorname,side,isClosed)
end
end
}
}
})
minetest.register_alias("homedecor:door_"..doorname.."_top_"..side, "air")
minetest.register_alias("homedecor:door_"..doorname.."_bottom_"..side, "homedecor:door_"..doorname.."_"..side)
end
minetest.register_alias("homedecor:door_wood_glass_top_"..side, "air")
minetest.register_alias("homedecor:door_wood_glass_bottom_"..side, "homedecor:door_wood_glass_oak_"..side)
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 gate_models_closed = {
{{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }},
{{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }},
{{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 }, -- left post
{ 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
{ -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
}
local gate_models_open = {
{{ 0.498, -0.5, -0.5, 0.498, 0.5, 0.5 }},
{{ 0.498, -0.5, -0.5, 0.498, 0.5, 0.5 }},
{{ 6/16, -8/16, -8/16, 8/16, 8/16, -6/16 }, -- left post
{ 6/16, -8/16, 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
{ 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
}
for i, g in ipairs(gate_list) do
local gate, gatedesc = unpack(g)
local tiles = {
"homedecor_gate_"..gate.."_tb.png",
"homedecor_gate_"..gate.."_tb.png",
"homedecor_gate_"..gate.."_lr.png",
"homedecor_gate_"..gate.."_lr.png",
"homedecor_gate_"..gate.."_fb.png^[transformFX",
"homedecor_gate_"..gate.."_fb.png"
}
if gate == "barbed_wire" then
tiles = {
"homedecor_gate_barbed_wire_edges.png",
"homedecor_gate_barbed_wire_edges.png",
"homedecor_gate_barbed_wire_edges.png",
"homedecor_gate_barbed_wire_edges.png",
"homedecor_gate_barbed_wire_fb.png^[transformFX",
"homedecor_gate_barbed_wire_fb.png"
}
end
if gate == "picket" or gate == "picket_white" then
tiles = {
"homedecor_blanktile.png",
"homedecor_blanktile.png",
"homedecor_blanktile.png",
"homedecor_blanktile.png",
"homedecor_gate_"..gate.."_back.png",
"homedecor_gate_"..gate.."_front.png"
}
end
local def = {
drawtype = "nodebox",
description = gatedesc,
tiles = tiles,
paramtype = "light",
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = gate_models_closed[i]
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
homedecor.flip_gate(pos, node, clicker, gate, "closed")
return itemstack
end,
mesecons = {
effector = {
rules = m_rules,
action_on = function(pos,node) homedecor.flip_gate(pos,node,nil,gate, "closed") end
}
}
}
-- gates when placed default to closed, closed.
minetest.register_node("homedecor:gate_"..gate.."_closed", def)
-- this is either a terrible idea or a great one
def = table.copy(def)
def.groups.not_in_creative_inventory = 1
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[6],
tiles[5],
tiles[4],
tiles[3]
}
def.drop = "homedecor:gate_"..gate.."_closed"
def.on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
homedecor.flip_gate(pos, node, clicker, gate, "open")
return itemstack
end
def.mesecons.effector = {
rules = m_rules,
action_off = function(pos,node) homedecor.flip_gate(pos,node,nil,gate, "open") end
}
minetest.register_node("homedecor:gate_"..gate.."_open", def)
end
minetest.register_alias("homedecor:fence_barbed_wire_gate_open", "homedecor:gate_barbed_wire_open")
minetest.register_alias("homedecor:fence_barbed_wire_gate_closed", "homedecor:gate_barbed_wire_closed")
minetest.register_alias("homedecor:fence_chainlink_gate_open", "homedecor:gate_chainlink_open")
minetest.register_alias("homedecor:fence_chainlink_gate_closed", "homedecor:gate_chainlink_closed")
minetest.register_alias("homedecor:fence_picket_gate_open", "homedecor:gate_picket_open")
minetest.register_alias("homedecor:fence_picket_gate_closed", "homedecor:gate_picket_closed")
minetest.register_alias("homedecor:fence_picket_gate_white_open", "homedecor:gate_picket_white_open")
minetest.register_alias("homedecor:fence_picket_gate_white_closed", "homedecor:gate_picket_white_closed")
-- to open a door, you switch left for right and subtract from param2, or vice versa right for left
-- that is to say open "right" doors become left door nodes, and open left doors right door nodes.
-- also adjusting param2 so the node is at 90 degrees.
function homedecor.flip_door(pos, node, player, name, side, isClosed)
if isClosed == nil then
isClosed = getClosed(pos)
end
-- this is where we swap the isClosed status!
-- i.e. if isClosed, we're adding an open door
-- and if not isClosed, a closed door
isClosed = not isClosed
local rside
local nfdir
local ofdir = node.param2 or 0
if side == "left" then
rside = "right"
nfdir=ofdir - 1
if nfdir < 0 then nfdir = 3 end
else
rside = "left"
nfdir=ofdir + 1
if nfdir > 3 then nfdir = 0 end
end
local sound = isClosed and 'close' or 'open'
minetest.sound_play("homedecor_door_"..sound, {
pos=pos,
max_hear_distance = 5,
gain = 2,
})
-- XXX: does the top half have to remember open/closed too?
minetest.set_node({x=pos.x, y=pos.y+1, z=pos.z}, { name = "homedecor:door_"..name.."_top_"..rside, param2=nfdir})
addDoorNode(pos,{ name = "homedecor:door_"..name.."_bottom_"..rside, param2=nfdir },isClosed)
end
function homedecor.flip_gate(pos, node, player, gate, oc)
local isClosed = getClosed(pos);
minetest.sound_play("homedecor_gate_open_close", {
pos=pos,
max_hear_distance = 5,
gain = 2,
})
local fdir = node.param2 or 0
-- since right facing gates use "open" nodes for closed, we need an
-- isClosed flag to tell if it's "really" closed.
local gateresult
if oc == "closed" then
gateresult = "homedecor:gate_"..gate.."_open"
else
gateresult = "homedecor:gate_"..gate.."_closed"
end
local def = {name=gateresult, param2=fdir}
addDoorNode(pos, def, isClosed)
-- the following opens and closes gates below and above in sync with this one
-- (without three gate open/close sounds)
local above = {x=pos.x, y=pos.y+1, z=pos.z}
local below = {x=pos.x, y=pos.y-1, z=pos.z}
local nodeabove = minetest.get_node(above)
local nodebelow = minetest.get_node(below)
if string.find(nodeabove.name, "homedecor:gate_"..gate) then
addDoorNode(above, def, isClosed)
end
if string.find(nodebelow.name, "homedecor:gate_"..gate) then
addDoorNode(below, def, isClosed)
end
end
-- Japanese-style wood/paper wall pieces and door
local jp_cbox = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.0625},
}
minetest.register_node("homedecor:japanese_wall_top", {
description = S("Japanese wall (top)"),
drawtype = "mesh",
mesh = "homedecor_wall_japanese_top.obj",
tiles = {
homedecor.lux_wood,
"homedecor_japanese_paper.png"
},
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
selection_box = jp_cbox,
collision_box = jp_cbox,
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("homedecor:japanese_wall_middle", {
description = S("Japanese wall"),
drawtype = "mesh",
mesh = "homedecor_wall_japanese_middle.obj",
tiles = {
homedecor.lux_wood,
"homedecor_japanese_paper.png"
},
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
selection_box = jp_cbox,
collision_box = jp_cbox,
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("homedecor:japanese_wall_bottom", {
description = S("Japanese wall (bottom)"),
drawtype = "mesh",
mesh = "homedecor_wall_japanese_bottom.obj",
tiles = {
homedecor.lux_wood,
"homedecor_japanese_paper.png"
},
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
selection_box = jp_cbox,
collision_box = jp_cbox,
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("homedecor:tatami_mat", {
tiles = {
"homedecor_tatami.png",
"homedecor_tatami.png",
"homedecor_tatami.png",
"homedecor_tatami.png",
"homedecor_tatami.png",
"homedecor_tatami.png"
},
description = S("Japanese tatami"),
drawtype = "nodebox",
paramtype = "light",
groups = {snappy=3},
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
}
}
})
homedecor.register("door_japanese_closed", {
description = S("Japanese-style door"),
inventory_image = "homedecor_door_japanese_inv.png",
tiles = {
homedecor.lux_wood,
"homedecor_japanese_paper.png"
},
mesh = "homedecor_door_japanese_closed.obj",
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, 1.5, 0.0625},
},
collision_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.0625, 0.5, 1.5, 0},
},
expand = { top = "placeholder" },
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
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_japanese_paper.png"
},
mesh = "homedecor_door_japanese_open.obj",
groups = { snappy = 3, not_in_creative_inventory = 1 },
sounds = default.node_sound_wood_defaults(),
on_rotate = screwdriver.disallow,
selection_box = {
type = "fixed",
fixed = {-1.5, -0.5, -0.0625, 0.5, 1.5, 0},
},
collision_box = {
type = "fixed",
fixed = {-1.5, -0.5, -0.0625, -0.5, 1.5, 0},
},
expand = { top = "placeholder" },
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
minetest.set_node(pos, {name = "homedecor:door_japanese_closed", param2 = node.param2})
return itemstack
end,
drop = "homedecor:door_japanese_closed",
})
minetest.register_alias("homedecor:jpn_door_top", "air")
minetest.register_alias("homedecor:jpn_door_bottom", "homedecor:door_japanese_closed")
minetest.register_alias("homedecor:jpn_door_top_open", "air")
minetest.register_alias("homedecor:jpn_door_bottom_open", "homedecor:door_japanese_open")
minetest.register_alias("homedecor:door_glass_right", "doors:door_glass_b")
minetest.register_alias("homedecor:door_glass_left", "doors:door_glass_a")

View File

@ -1,143 +0,0 @@
-- Various home electronics
local S = homedecor_i18n.gettext
homedecor.register("speaker", {
description = S("Large Stereo Speaker"),
mesh="homedecor_speaker_large.obj",
tiles = {
"homedecor_speaker_sides.png",
"homedecor_speaker_front.png"
},
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
minetest.set_node(pos, {name = "homedecor:speaker_open", param2 = node.param2})
end
})
homedecor.register("speaker_open", {
description = S("Large Stereo Speaker, open front"),
mesh="homedecor_speaker_large_open.obj",
tiles = {
"homedecor_speaker_sides.png",
"homedecor_speaker_driver.png",
"homedecor_speaker_open_front.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_black }
},
groups = { snappy = 3, not_in_creative_inventory=1 },
sounds = default.node_sound_wood_defaults(),
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
minetest.set_node(pos, {name = "homedecor:speaker", param2 = node.param2})
end
})
local spk_cbox = {
type = "fixed",
fixed = { -3/16, -8/16, 1/16, 3/16, -2/16, 7/16 }
}
homedecor.register("speaker_small", {
description = S("Small Surround Speaker"),
mesh="homedecor_speaker_small.obj",
tiles = {
"homedecor_speaker_sides.png",
"homedecor_speaker_front.png"
},
selection_box = spk_cbox,
walkable = false,
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
})
homedecor.register("stereo", {
description = S("Stereo Receiver"),
tiles = { 'homedecor_stereo_top.png',
'homedecor_stereo_bottom.png',
'homedecor_stereo_left.png^[transformFX',
'homedecor_stereo_left.png',
'homedecor_stereo_back.png',
'homedecor_stereo_front.png'},
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
})
homedecor.register("projection_screen", {
description = S("Projection Screen Material"),
drawtype = 'signlike',
tiles = { 'homedecor_projection_screen.png' },
wield_image = 'homedecor_projection_screen_inv.png',
inventory_image = 'homedecor_projection_screen_inv.png',
walkable = false,
groups = { snappy = 3 },
sounds = default.node_sound_leaves_defaults(),
paramtype2 = 'wallmounted',
selection_box = {
type = "wallmounted",
--wall_side = = <default>
},
})
homedecor.register("television", {
description = S("Small CRT Television"),
tiles = { 'homedecor_television_top.png',
'homedecor_television_bottom.png',
'homedecor_television_left.png^[transformFX',
'homedecor_television_left.png',
'homedecor_television_back.png',
{ name="homedecor_television_front_animated.png",
animation={
type="vertical_frames",
aspect_w=16,
aspect_h=16,
length=80.0
}
}
},
light_source = default.LIGHT_MAX - 1,
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
})
homedecor.register("dvd_vcr", {
description = S("DVD and VCR"),
tiles = {
"homedecor_dvdvcr_top.png",
"homedecor_dvdvcr_bottom.png",
"homedecor_dvdvcr_sides.png",
"homedecor_dvdvcr_sides.png^[transformFX",
"homedecor_dvdvcr_back.png",
"homedecor_dvdvcr_front.png",
},
inventory_image = "homedecor_dvdvcr_inv.png",
node_box = {
type = "fixed",
fixed = {
{-0.3125, -0.5, -0.25, 0.3125, -0.375, 0.1875},
{-0.25, -0.5, -0.25, 0.25, -0.1875, 0.125},
}
},
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
})
local tel_cbox = {
type = "fixed",
fixed = { -0.25, -0.5, -0.1875, 0.25, -0.21, 0.15 }
}
homedecor.register("telephone", {
mesh = "homedecor_telephone.obj",
tiles = {
"homedecor_telephone_dial.png",
"homedecor_telephone_base.png",
"homedecor_telephone_handset.png",
"homedecor_telephone_cord.png",
},
inventory_image = "homedecor_telephone_inv.png",
description = S("Telephone"),
groups = {snappy=3},
selection_box = tel_cbox,
walkable = false,
sounds = default.node_sound_wood_defaults(),
})

View File

@ -1,280 +0,0 @@
minetest.register_craft({
output = "homedecor:table",
recipe = {
{ "default:wood","default:wood", "default:wood" },
{ "group:stick", "", "group:stick" },
},
})
minetest.register_craft({
type = "shapeless",
output = "homedecor:table_mahogany",
recipe = {
"homedecor:table",
"dye:brown",
},
})
minetest.register_craft({
type = "shapeless",
output = "homedecor:table_mahogany",
recipe = {
"homedecor:table",
"unifieddyes:dark_orange",
},
})
minetest.register_craft({
type = "shapeless",
output = "homedecor:table_white",
recipe = {
"homedecor:table",
"dye:white",
},
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:table",
burntime = 30,
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:table_mahogany",
burntime = 30,
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:table_white",
burntime = 30,
})
minetest.register_craft({
output = "homedecor:kitchen_chair_wood 2",
recipe = {
{ "group:stick",""},
{ "group:wood","group:wood" },
{ "group:stick","group:stick" },
},
})
minetest.register_craft({
output = "homedecor:armchair 2",
recipe = {
{ "wool:white",""},
{ "group:wood","group:wood" },
{ "wool:white","wool:white" },
},
})
unifieddyes.register_color_craft({
output = "homedecor:armchair",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:armchair",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({
type = "shapeless",
output = "homedecor:kitchen_chair_padded",
recipe = {
"homedecor:kitchen_chair_wood",
"wool:white",
},
})
unifieddyes.register_color_craft({
output = "homedecor:kitchen_chair_padded",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:kitchen_chair_padded",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:kitchen_chair_wood",
burntime = 15,
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:kitchen_chair_padded",
burntime = 15,
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:armchair",
burntime = 30,
})
minetest.register_craft({
output = "homedecor:standing_lamp_off",
recipe = {
{"homedecor:table_lamp_off"},
{"group:stick"},
{"group:stick"},
},
})
unifieddyes.register_color_craft({
output = "homedecor:standing_lamp_off",
palette = "extended",
type = "shapeless",
neutral_node = "homedecor:standing_lamp_off",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:table_lamp_off",
burntime = 10,
})
minetest.register_craft({
output = "homedecor:table_lamp_off",
recipe = {
{ "wool:white", "default:torch", "wool:white"},
{ "", "group:stick", ""},
{ "", "stairs:slab_wood", "" },
},
})
minetest.register_craft({
output = "homedecor:table_lamp_off",
recipe = {
{ "cottages:wool", "default:torch", "cottages:wool"},
{ "", "group:stick", ""},
{ "", "stairs:slab_wood", "" },
},
})
minetest.register_craft({
output = "homedecor:table_lamp_off",
recipe = {
{ "wool:white", "default:torch", "wool:white"},
{ "", "group:stick", ""},
{ "", "moreblocks:slab_wood", "" },
},
})
minetest.register_craft({
output = "homedecor:table_lamp_off",
recipe = {
{ "cottages:wool", "default:torch", "cottages:wool"},
{ "", "group:stick", ""},
{ "", "moreblocks:slab_wood", "" },
},
})
unifieddyes.register_color_craft({
output = "homedecor:table_lamp_off",
palette = "extended",
type = "shapeless",
neutral_node = "homedecor:table_lamp_off",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({
output = "homedecor:toilet",
recipe = {
{ "","","bucket:bucket_water"},
{ "group:marble","group:marble", "group:marble" },
{ "", "bucket:bucket_empty", "" },
},
})
minetest.register_craft({
output = "homedecor:sink",
recipe = {
{ "group:marble","bucket:bucket_empty", "group:marble" },
{ "", "group:marble", "" }
},
})
minetest.register_craft({
output = "homedecor:taps",
recipe = {
{ "default:steel_ingot","bucket:bucket_water", "default:steel_ingot" },
},
})
minetest.register_craft({
output = "homedecor:taps_brass",
recipe = {
{ "technic:brass_ingot","bucket:bucket_water", "technic:brass_ingot" },
},
})
minetest.register_craft({
output = "homedecor:shower_tray",
recipe = {
{ "group:marble","bucket:bucket_empty", "group:marble" },
},
})
minetest.register_craft({
output = "homedecor:shower_head",
recipe = {
{"default:steel_ingot", "bucket:bucket_water"},
},
})
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 = {
{ "default:steel_ingot","default:steel_ingot","default:steel_ingot" },
{ "homedecor:pole_wrought_iron","homedecor:pole_wrought_iron","homedecor:pole_wrought_iron" },
},
})
minetest.register_craft({
output = "homedecor:L_binding_bars 3",
recipe = {
{ "homedecor:bars","" },
{ "homedecor:bars","homedecor:bars" },
},
})
minetest.register_craft({
output = "homedecor:torch_wall 10",
recipe = {
{ "default:coal_lump" },
{ "default:steel_ingot" },
},
})

View File

@ -1,24 +0,0 @@
local handlerpath = homedecor.modpath .. "/handlers/"
-- nodebox arithmetics and helpers
-- (please keep non-generic nodeboxes with their node definition)
dofile(handlerpath.."nodeboxes.lua")
-- expand and unexpand decor
dofile(handlerpath.."expansion.lua")
-- register nodes that cook stuff
dofile(handlerpath.."furnaces.lua")
-- inventory related functionality, like initialization, ownership and spawning locked versions
dofile(handlerpath.."inventory.lua")
-- glue it all together into a registration function
dofile(handlerpath.."registration.lua")
-- some nodes have particle spawners
dofile(handlerpath.."water_particles.lua")
dofile(handlerpath.."mt_game_beds_functions.lua")
dofile(handlerpath.."sit.lua")

View File

@ -1,256 +0,0 @@
-- This file supplies refrigerators
local S = homedecor_i18n.gettext
local function N_(x) return x end
-- steel-textured fridge
homedecor.register("refrigerator_steel", {
mesh = "homedecor_refrigerator.obj",
tiles = { "homedecor_refrigerator_steel.png" },
inventory_image = "homedecor_refrigerator_steel_inv.png",
description = S("Refrigerator (stainless steel)"),
groups = {snappy=3},
sounds = default.node_sound_stone_defaults(),
selection_box = homedecor.nodebox.slab_y(2),
collision_box = homedecor.nodebox.slab_y(2),
expand = { top="placeholder" },
infotext=S("Refrigerator"),
inventory = {
size=50,
lockable=true,
},
on_rotate = screwdriver.rotate_simple
})
-- white, enameled fridge
homedecor.register("refrigerator_white", {
mesh = "homedecor_refrigerator.obj",
tiles = { "homedecor_refrigerator_white.png" },
inventory_image = "homedecor_refrigerator_white_inv.png",
description = S("Refrigerator"),
groups = {snappy=3},
selection_box = homedecor.nodebox.slab_y(2),
collision_box = homedecor.nodebox.slab_y(2),
sounds = default.node_sound_stone_defaults(),
expand = { top="placeholder" },
infotext=S("Refrigerator"),
inventory = {
size=50,
lockable=true,
},
on_rotate = screwdriver.rotate_simple
})
minetest.register_alias("homedecor:refrigerator_white_bottom", "homedecor:refrigerator_white")
minetest.register_alias("homedecor:refrigerator_white_top", "air")
minetest.register_alias("homedecor:refrigerator_steel_bottom", "homedecor:refrigerator_steel")
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")
-- kitchen "furnaces"
homedecor.register_furnace("oven", {
description = S("Oven"),
tile_format = "homedecor_oven_%s%s.png",
output_slots = 4,
output_width = 2,
cook_speed = 1.25,
})
homedecor.register_furnace("oven_steel", {
description = S("Oven (stainless steel)"),
tile_format = "homedecor_oven_steel_%s%s.png",
output_slots = 4,
output_width = 2,
cook_speed = 1.25,
})
homedecor.register_furnace("microwave_oven", {
description = S("Microwave Oven"),
tiles = {
"homedecor_microwave_top.png", "homedecor_microwave_top.png^[transformR180",
"homedecor_microwave_top.png^[transformR270", "homedecor_microwave_top.png^[transformR90",
"homedecor_microwave_top.png^[transformR180", "homedecor_microwave_front.png"
},
tiles_active = {
"homedecor_microwave_top.png", "homedecor_microwave_top.png^[transformR180",
"homedecor_microwave_top.png^[transformR270", "homedecor_microwave_top.png^[transformR90",
"homedecor_microwave_top.png^[transformR180", "homedecor_microwave_front_active.png"
},
output_slots = 2,
output_width = 2,
cook_speed = 1.5,
extra_nodedef_fields = {
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.125, 0.5, 0.125, 0.5 },
},
},
})
-- coffee!
-- coffee!
-- coffee!
local cm_cbox = {
type = "fixed",
fixed = {
{ 0, -8/16, 0, 7/16, 3/16, 8/16 },
{ -4/16, -8/16, -6/16, -1/16, -5/16, -3/16 }
}
}
homedecor.register("coffee_maker", {
mesh = "homedecor_coffeemaker.obj",
tiles = {
"homedecor_coffeemaker_decanter.png",
"homedecor_coffeemaker_cup.png",
"homedecor_coffeemaker_case.png",
},
description = S("Coffee Maker"),
inventory_image = "homedecor_coffeemaker_inv.png",
walkable = false,
groups = {snappy=3},
selection_box = cm_cbox,
node_box = cm_cbox,
on_rotate = screwdriver.disallow
})
local fdir_to_steampos = {
x = { 0.15, 0.275, -0.15, -0.275 },
z = { 0.275, -0.15, -0.275, 0.15 }
}
minetest.register_abm({
nodenames = "homedecor:coffee_maker",
label = "sfx",
interval = 2,
chance = 1,
action = function(pos, node)
local fdir = node.param2
if fdir and fdir < 4 then
local steamx = fdir_to_steampos.x[fdir + 1]
local steamz = fdir_to_steampos.z[fdir + 1]
minetest.add_particlespawner({
amount = 1,
time = 1,
minpos = {x=pos.x - steamx, y=pos.y - 0.35, z=pos.z - steamz},
maxpos = {x=pos.x - steamx, y=pos.y - 0.35, z=pos.z - steamz},
minvel = {x=-0.003, y=0.01, z=-0.003},
maxvel = {x=0.003, y=0.01, z=-0.003},
minacc = {x=0.0,y=-0.0,z=-0.0},
maxacc = {x=0.0,y=0.003,z=-0.0},
minexptime = 2,
maxexptime = 5,
minsize = 1,
maxsize = 1.2,
collisiondetection = false,
texture = "homedecor_steam.png",
})
end
end
})
homedecor.register("toaster", {
description = S("Toaster"),
tiles = { "homedecor_toaster_sides.png" },
inventory_image = "homedecor_toaster_inv.png",
walkable = false,
groups = { snappy=3 },
node_box = {
type = "fixed",
fixed = {
{-0.0625, -0.5, -0.125, 0.125, -0.3125, 0.125}, -- NodeBox1
},
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local fdir = node.param2
minetest.set_node(pos, { name = "homedecor:toaster_loaf", param2 = fdir })
minetest.sound_play("toaster", {
pos = pos,
gain = 1.0,
max_hear_distance = 5
})
return itemstack
end
})
homedecor.register("toaster_loaf", {
tiles = {
"homedecor_toaster_toploaf.png",
"homedecor_toaster_sides.png",
"homedecor_toaster_sides.png",
"homedecor_toaster_sides.png",
"homedecor_toaster_sides.png",
"homedecor_toaster_sides.png"
},
walkable = false,
groups = { snappy=3, not_in_creative_inventory=1 },
node_box = {
type = "fixed",
fixed = {
{-0.0625, -0.5, -0.125, 0.125, -0.3125, 0.125}, -- NodeBox1
{-0.03125, -0.3125, -0.0935, 0, -0.25, 0.0935}, -- NodeBox2
{0.0625, -0.3125, -0.0935, 0.0935, -0.25, 0.0935}, -- NodeBox3
},
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
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"),
drawtype = "nodebox",
tiles = {
"homedecor_dishwasher_top.png",
"homedecor_dishwasher_bottom.png",
"homedecor_dishwasher_sides.png",
"homedecor_dishwasher_sides.png^[transformFX",
"homedecor_dishwasher_back.png",
"homedecor_dishwasher_front.png"
},
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
{-0.5, -0.5, -0.5, 0.5, 0.5, -0.4375},
{-0.5, -0.5, -0.5, 0.5, 0.1875, 0.1875},
{-0.4375, -0.5, -0.5, 0.4375, 0.4375, 0.4375},
}
},
selection_box = { type = "regular" },
sounds = default.node_sound_stone_defaults(),
groups = { snappy = 3 },
})
local materials = { N_("granite"), N_("marble"), N_("steel"), N_("wood") }
for _, m in ipairs(materials) do
homedecor.register("dishwasher_"..m, {
description = S("Dishwasher (@1)", S(m)),
tiles = {
"homedecor_kitchen_cabinet_top_"..m..".png",
"homedecor_dishwasher_bottom.png",
"homedecor_dishwasher_sides.png",
"homedecor_dishwasher_sides.png^[transformFX",
"homedecor_dishwasher_back.png",
"homedecor_dishwasher_front.png"
},
groups = { snappy = 3 },
sounds = default.node_sound_stone_defaults(),
})
end

View File

@ -1,157 +0,0 @@
-- This file supplies Kitchen cabinets and kitchen sink
local S = homedecor_i18n.gettext
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))
material = "_"..mat
end
homedecor.register("kitchen_cabinet"..material, {
description = desc,
tiles = { 'homedecor_kitchen_cabinet_top'..material..'.png',
cabinet_bottom,
cabinet_sides,
cabinet_sides,
cabinet_sides,
'homedecor_kitchen_cabinet_front.png'},
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
infotext=S("Kitchen Cabinet"),
inventory = {
size=24,
lockable=true,
},
})
end
local kitchen_cabinet_half_box = homedecor.nodebox.slab_y(0.5, 0.5)
homedecor.register("kitchen_cabinet_half", {
description = S('Half-height Kitchen Cabinet (on ceiling)'),
tiles = {
cabinet_sides,
cabinet_bottom,
cabinet_sides,
cabinet_sides,
cabinet_sides,
'homedecor_kitchen_cabinet_front_half.png'
},
selection_box = kitchen_cabinet_half_box,
node_box = kitchen_cabinet_half_box,
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
infotext=S("Kitchen Cabinet"),
inventory = {
size=12,
lockable=true,
},
})
homedecor.register("kitchen_cabinet_with_sink", {
description = S("Kitchen Cabinet with sink"),
mesh = "homedecor_kitchen_sink.obj",
tiles = {
"homedecor_kitchen_sink_top.png",
"homedecor_kitchen_cabinet_front.png",
cabinet_sides,
cabinet_bottom
},
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
infotext=S("Under-sink cabinet"),
inventory = {
size=16,
lockable=true,
},
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, -8/16, 8/16, 6/16, 8/16 },
{ -8/16, 6/16, -8/16, -6/16, 8/16, 8/16 },
{ 6/16, 6/16, -8/16, 8/16, 8/16, 8/16 },
{ -8/16, 6/16, -8/16, 8/16, 8/16, -6/16 },
{ -8/16, 6/16, 6/16, 8/16, 8/16, 8/16 },
}
},
on_destruct = function(pos)
homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z})
end
})
local cp_cbox = {
type = "fixed",
fixed = { -0.375, -0.5, -0.5, 0.375, -0.3125, 0.3125 }
}
homedecor.register("copper_pans", {
description = S("Copper pans"),
mesh = "homedecor_copper_pans.obj",
tiles = { "homedecor_polished_copper.png" },
inventory_image = "homedecor_copper_pans_inv.png",
groups = { snappy=3 },
selection_box = cp_cbox,
walkable = false,
on_place = minetest.rotate_node
})
local kf_cbox = {
type = "fixed",
fixed = { -2/16, -8/16, 1/16, 2/16, -1/16, 8/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"),
groups = {snappy=3},
selection_box = kf_cbox,
walkable = false,
on_rotate = screwdriver.disallow,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
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
local particledef = {
outlet = { x = 0, y = -0.19, z = 0.13 },
velocity_x = { min = -0.05, max = 0.05 },
velocity_y = -0.3,
velocity_z = { min = -0.1, max = 0 },
spread = 0
}
homedecor.start_particle_spawner(pos, node, particledef, "homedecor_faucet")
end
return itemstack
end,
on_destruct = homedecor.stop_particle_spawner
})
homedecor.register("paper_towel", {
mesh = "homedecor_paper_towel.obj",
tiles = {
"homedecor_generic_quilted_paper.png",
"default_wood.png"
},
inventory_image = "homedecor_paper_towel_inv.png",
description = S("Paper towels"),
groups = { snappy=3 },
walkable = false,
selection_box = {
type = "fixed",
fixed = { -0.4375, 0.125, 0.0625, 0.4375, 0.4375, 0.5 }
},
})

View File

@ -1,61 +0,0 @@
-- laundry devices
homedecor.register("washing_machine", {
description = "Washing Machine",
tiles = {
"homedecor_washing_machine_top.png",
"homedecor_washing_machine_bottom.png",
"homedecor_washing_machine_sides.png",
"homedecor_washing_machine_sides.png^[transformFX",
"homedecor_washing_machine_back.png",
"homedecor_washing_machine_front.png"
},
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.375, 0.375},
{-0.5, -0.5, 0.3125, 0.5, 0.5, 0.5},
}
},
selection_box = { type = "regular" },
groups = { snappy = 3 },
})
homedecor.register("dryer", {
description = "Tumble dryer",
tiles = {
"homedecor_dryer_top.png",
"homedecor_dryer_bottom.png",
"homedecor_dryer_sides.png",
"homedecor_dryer_sides.png^[transformFX",
"homedecor_dryer_back.png",
"homedecor_dryer_front.png"
},
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.375, 0.375},
{-0.5, -0.5, 0.3125, 0.5, 0.5, 0.5},
}
},
selection_box = { type = "regular" },
groups = { snappy = 3 },
})
local ib_cbox = {
type = "fixed",
fixed = { -6/16, -8/16, -4/16, 17/16, 4/16, 4/16 }
}
homedecor.register("ironing_board", {
description = "Ironing board",
mesh = "homedecor_ironing_board.obj",
tiles = {
"wool_grey.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
},
expand = {right = "placeholder"},
groups = { snappy = 3 },
selection_box = ib_cbox,
collision_box = ib_cbox
})

View File

@ -1,101 +0,0 @@
-- Various kinds of window shutters
local S = homedecor_i18n.gettext
local shutters = {
"mahogany",
"red",
"yellow",
"forest_green",
"light_blue",
"violet",
"black",
"dark_grey",
"grey",
"white",
}
local shutter_cbox = {
type = "wallmounted",
wall_top = { -0.5, 0.4375, -0.5, 0.5, 0.5, 0.5 },
wall_bottom = { -0.5, -0.5, -0.5, 0.5, -0.4375, 0.5 },
wall_side = { -0.5, -0.5, -0.5, -0.4375, 0.5, 0.5 }
}
local inv = "homedecor_window_shutter_inv.png^[colorize:#a87034:150"
homedecor.register("shutter", {
mesh = "homedecor_window_shutter.obj",
tiles = {
{ name = "homedecor_window_shutter.png", color = 0xffa87034 }
},
description = S("Wooden Shutter"),
inventory_image = inv,
wield_image = inv,
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
airbrush_replacement_node = "homedecor:shutter_colored",
groups = { snappy = 3, ud_param2_colorable = 1 },
sounds = default.node_sound_wood_defaults(),
selection_box = shutter_cbox,
node_box = shutter_cbox,
after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
end,
})
homedecor.register("shutter_colored", {
mesh = "homedecor_window_shutter.obj",
tiles = { "homedecor_window_shutter.png" },
description = S("Wooden Shutter"),
inventory_image = "homedecor_window_shutter_inv.png",
wield_image = "homedecor_window_shutter_inv.png",
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
groups = { snappy = 3 , not_in_creative_inventory = 1, ud_param2_colorable = 1},
sounds = default.node_sound_wood_defaults(),
selection_box = shutter_cbox,
node_box = shutter_cbox,
after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
end,
})
minetest.register_alias("homedecor:shutter_purple", "homedecor:shutter_violet")
minetest.register_alias("homedecor:shutter_oak", "homedecor:shutter")
-- convert to param2 coloring
homedecor.old_shutter_nodes = {}
for _, color in ipairs(shutters) do
table.insert(homedecor.old_shutter_nodes, "homedecor:shutter_"..color)
end
minetest.register_lbm({
name = "homedecor:convert_shutters",
label = "Convert shutter static nodes to use param2 color",
run_at_every_load = false,
nodenames = homedecor.old_shutter_nodes,
action = function(pos, node)
local name = node.name
local color = string.sub(name, string.find(name, "_") + 1)
if color == "mahogany" then
color = "dark_red"
elseif color == "forest_green" then
color = "dark_green"
elseif color == "light_blue" then
color = "medium_cyan"
elseif color == "red" then
color = "medium_red"
end
local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
local param2 = paletteidx + node.param2
minetest.set_node(pos, { name = "homedecor:shutter_colored", param2 = param2 })
local meta = minetest.get_meta(pos)
meta:set_string("dye", "unifieddyes:"..color)
end
})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 880 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 563 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

View File

@ -1,145 +0,0 @@
local S = homedecor_i18n.gettext
local wd_cbox = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 }
}
-- cache set_textures function (fallback to old version)
-- default.player_set_textures is deprecated and will be removed in future
local set_player_textures =
minetest.get_modpath("player_api") and player_api.set_textures
or default.player_set_textures
local armor_mod_path = minetest.get_modpath("3d_armor")
local skinslist = {"male1", "male2", "male3", "male4", "male5"}
local default_skin = "character.png"
local skinsdb_mod_path = minetest.get_modpath("skinsdb")
if skinsdb_mod_path then
for _, shrt in ipairs(skinslist) do
for _, prefix in ipairs({"", "fe"}) do
local skin_name = prefix..shrt
local skin_obj = skins.new("homedecor_clothes_"..skin_name..".png") -- Texture PNG file as key to be compatible in set_player_skin
skin_obj:set_preview("homedecor_clothes_"..skin_name.."_preview.png")
skin_obj:set_texture("homedecor_clothes_"..skin_name..".png")
skin_obj:set_meta("name", "Wardrobe "..skin_name)
skin_obj:set_meta("author", 'Calinou and Jordach')
skin_obj:set_meta("license", 'CC-by-SA-4.0')
local file = io.open(homedecor.modpath.."/textures/homedecor_clothes_"..skin_name..".png", "r")
skin_obj:set_meta("format", skins.get_skin_format(file))
file:close()
skin_obj:set_meta("in_inventory_list", false)
end
end
end
function homedecor.get_player_skin(player)
local skin = player:get_attribute("homedecor:player_skin")
if not skin or skin == "" then
return default_skin, true
end
return skin, false
end
function homedecor.set_player_skin(player, skin, save)
skin = skin or default_skin
if skinsdb_mod_path then
skins.set_player_skin(player, skin)
elseif armor_mod_path then -- if 3D_armor's installed, let it set the skin
armor.textures[player:get_player_name()].skin = skin
armor:update_player_visuals(player)
else
set_player_textures(player, { skin })
end
if save then
if skin == default_skin then
skin = "default"
player:set_attribute("homedecor:player_skin", "")
else
player:set_attribute("homedecor:player_skin", skin)
end
if save == "player" then -- if player action
minetest.log("verbose",
S("player @1 sets skin to @2", player:get_player_name(), skin) ..
(armor_mod_path and ' [3d_armor]' or '')
)
end
end
end
function homedecor.unset_player_skin(player)
homedecor.set_player_skin(player, nil, true)
end
homedecor.register("wardrobe", {
mesh = "homedecor_bedroom_wardrobe.obj",
tiles = {
homedecor.plain_wood,
"homedecor_wardrobe_drawers.png",
"homedecor_wardrobe_doors.png"
},
inventory_image = "homedecor_wardrobe_inv.png",
description = S("Wardrobe"),
groups = {snappy=3},
selection_box = wd_cbox,
collision_box = wd_cbox,
sounds = default.node_sound_wood_defaults(),
expand = { top="placeholder" },
on_rotate = screwdriver.rotate_simple,
infotext = S("Wardrobe"),
inventory = {
size = 10
},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
-- textures made by the Minetest community (mostly Calinou and Jordach)
local clothes_strings = ""
for i = 1,5 do
clothes_strings = clothes_strings..
"image_button_exit["..(i-1)..".5,0;1.1,2;homedecor_clothes_"..skinslist[i].."_preview.png;"..skinslist[i]..";]"..
"image_button_exit["..(i-1)..".5,2;1.1,2;homedecor_clothes_fe"..skinslist[i].."_preview.png;fe"..skinslist[i]..";]"
end
meta:set_string("formspec", "size[5.5,8.5]"..default.gui_bg..default.gui_bg_img..default.gui_slots..
"vertlabel[0,0.5;"..minetest.formspec_escape(S("Clothes")).."]"..
"button_exit[0,3.29;0.6,0.6;default;x]"..
clothes_strings..
"vertlabel[0,5.2;"..minetest.formspec_escape(S("Storage")).."]"..
"list[current_name;main;0.5,4.5;5,2;]"..
"list[current_player;main;0.5,6.8;5,2;]" ..
"listring[]")
end,
on_receive_fields = function(pos, formname, fields, sender)
if fields.default then
homedecor.set_player_skin(sender, nil, "player")
return
end
for i = 1,5 do
if fields[skinslist[i]] then
homedecor.set_player_skin(sender, "homedecor_clothes_"..skinslist[i]..".png", "player")
break
elseif fields["fe"..skinslist[i]] then
homedecor.set_player_skin(sender, "homedecor_clothes_fe"..skinslist[i]..".png", "player")
break
end
end
end
})
minetest.register_alias("homedecor:wardrobe_bottom", "homedecor:wardrobe")
minetest.register_alias("homedecor:wardrobe_top", "air")
minetest.register_on_joinplayer(function(player)
local skin = player:get_attribute("homedecor:player_skin")
if skin and skin ~= "" then
-- setting player skin on connect has no effect, so delay skin change
minetest.after(1, function(player, skin)
homedecor.set_player_skin(player, skin)
end, player, skin)
end
end)

View File

@ -1,3 +1,4 @@
homedecor_common
default default
moreblocks?
vessels? vessels?
moreblocks?

View File

@ -0,0 +1,7 @@
homedecor_common
default
basic_materials
unifieddyes
building_blocks
bucket?
homedecor_fences?

679
homedecor_bathroom/init.lua Normal file
View File

@ -0,0 +1,679 @@
local S = homedecor.gettext
minetest.register_node(":homedecor:bathroom_tiles_dark", {
description = S("Bathroom/kitchen tiles (dark)"),
tiles = {
"homedecor_bathroom_tiles_bg.png"
},
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xff606060 },
},
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(),
on_construct = unifieddyes.on_construct,
})
minetest.register_node(":homedecor:bathroom_tiles_medium", {
description = S("Bathroom/kitchen tiles (medium)"),
tiles = {
"homedecor_bathroom_tiles_bg.png"
},
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffc0c0c0 },
},
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(),
on_construct = unifieddyes.on_construct,
})
minetest.register_node(":homedecor:bathroom_tiles_light", {
description = S("Bathroom/kitchen tiles (light)"),
tiles = {
"homedecor_bathroom_tiles_bg.png"
},
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffffffff },
},
paramtype = "light",
paramtype2 = "color",
palette = "unifieddyes_palette_extended.png",
groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(),
on_construct = unifieddyes.on_construct,
})
local tr_cbox = {
type = "fixed",
fixed = { -0.375, -0.3125, 0.25, 0.375, 0.375, 0.5 }
}
homedecor.register("towel_rod", {
description = S("Towel rod with towel"),
mesh = "homedecor_towel_rod.obj",
tiles = {
"homedecor_generic_terrycloth.png",
"default_wood.png",
},
inventory_image = "homedecor_towel_rod_inv.png",
selection_box = tr_cbox,
walkable = false,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3},
sounds = default.node_sound_defaults(),
})
homedecor.register("medicine_cabinet", {
description = S("Medicine cabinet"),
mesh = "homedecor_medicine_cabinet.obj",
tiles = {
'default_wood.png',
'homedecor_medicine_cabinet_mirror.png'
},
inventory_image = "homedecor_medicine_cabinet_inv.png",
selection_box = {
type = "fixed",
fixed = {-0.3125, -0.1875, 0.3125, 0.3125, 0.5, 0.5}
},
walkable = false,
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
on_punch = function(pos, node, puncher, pointed_thing)
node.name = "homedecor:medicine_cabinet_open"
minetest.swap_node(pos, node)
end,
infotext=S("Medicine cabinet"),
inventory = {
size=6,
},
})
homedecor.register("medicine_cabinet_open", {
mesh = "homedecor_medicine_cabinet_open.obj",
tiles = {
'default_wood.png',
'homedecor_medicine_cabinet_mirror.png',
'homedecor_medicine_cabinet_inside.png'
},
selection_box = {
type = "fixed",
fixed = {-0.3125, -0.1875, -0.25, 0.3125, 0.5, 0.5}
},
walkable = false,
groups = { snappy = 3, not_in_creative_inventory=1 },
drop = "homedecor:medicine_cabinet",
on_punch = function(pos, node, puncher, pointed_thing)
node.name = "homedecor:medicine_cabinet"
minetest.swap_node(pos, node)
end,
})
-- "Sanitation" related
local toilet_sbox = {
type = "fixed",
fixed = { -6/16, -8/16, -8/16, 6/16, 9/16, 8/16 },
}
local toilet_cbox = {
type = "fixed",
fixed = {
{-6/16, -8/16, -8/16, 6/16, 1/16, 8/16 },
{-6/16, -8/16, 4/16, 6/16, 9/16, 8/16 }
}
}
homedecor.register("toilet", {
description = S("Toilet"),
mesh = "homedecor_toilet_closed.obj",
tiles = {
"building_blocks_marble.png",
"building_blocks_marble.png",
"building_blocks_marble.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey }
},
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)
node.name = "homedecor:toilet_open"
minetest.set_node(pos, node)
end
})
homedecor.register("toilet_open", {
mesh = "homedecor_toilet_open.obj",
tiles = {
"building_blocks_marble.png",
"building_blocks_marble.png",
"building_blocks_marble.png",
"default_water.png",
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey }
},
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)
node.name = "homedecor:toilet"
minetest.set_node(pos, node)
minetest.sound_play("homedecor_toilet_flush", {
pos=pos,
max_hear_distance = 5,
gain = 1,
})
end
})
-- toilet paper :-)
local tp_cbox = {
type = "fixed",
fixed = { -0.25, 0.125, 0.0625, 0.1875, 0.4375, 0.5 }
}
homedecor.register("toilet_paper", {
description = S("Toilet paper"),
mesh = "homedecor_toilet_paper.obj",
tiles = {
"homedecor_generic_quilted_paper.png",
"default_wood.png"
},
inventory_image = "homedecor_toilet_paper_inv.png",
selection_box = tp_cbox,
walkable = false,
groups = {snappy=3,oddly_breakable_by_hand=3},
sounds = default.node_sound_defaults(),
})
--Sink
local sink_sbox = {
type = "fixed",
fixed = { -5/16, -8/16, 1/16, 5/16, 8/16, 8/16 }
}
local sink_cbox = {
type = "fixed",
fixed = {
{ -5/16, 5/16, 1/16, -4/16, 8/16, 8/16 },
{ 5/16, 5/16, 1/16, 4/16, 8/16, 8/16 },
{ -5/16, 5/16, 1/16, 5/16, 8/16, 2/16 },
{ -5/16, 5/16, 6/16, 5/16, 8/16, 8/16 },
{ -4/16, -8/16, 1/16, 4/16, 5/16, 6/16 }
}
}
homedecor.register("sink", {
description = S("Bathroom Sink"),
mesh = "homedecor_bathroom_sink.obj",
tiles = {
"building_blocks_marble.png",
"building_blocks_marble.png",
"default_water.png"
},
inventory_image="homedecor_bathroom_sink_inv.png",
selection_box = sink_sbox,
collision_box = sink_cbox,
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
on_destruct = function(pos)
homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z})
end
})
--Taps
local function taps_on_rightclick(pos, node, clicker, itemstack, pointed_thing)
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
local particledef = {
outlet = { x = 0, y = -0.44, z = 0.28 },
velocity_x = { min = -0.1, max = 0.1 },
velocity_y = -0.3,
velocity_z = { min = -0.1, max = 0 },
spread = 0,
die_on_collision = true,
}
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_bright.png",
"homedecor_generic_metal.png",
"homedecor_generic_metal_bright.png"
},
inventory_image = "3dforniture_taps_inv.png",
wield_image = "3dforniture_taps_inv.png",
selection_box = {
type = "fixed",
fixed = { -4/16, -7/16, 4/16, 4/16, -4/16, 8/16 },
},
walkable = false,
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
on_rightclick = taps_on_rightclick,
on_destruct = homedecor.stop_particle_spawner,
on_rotate = screwdriver.disallow
})
homedecor.register("taps_brass", {
description = S("Bathroom taps/faucet (brass)"),
mesh = "homedecor_bathroom_faucet.obj",
tiles = {
"homedecor_generic_metal_brass.png",
"homedecor_generic_metal_brass.png",
"homedecor_generic_metal.png",
"homedecor_generic_metal_brass.png"
},
inventory_image = "3dforniture_taps_brass_inv.png",
wield_image = "3dforniture_taps_brass_inv.png",
selection_box = {
type = "fixed",
fixed = { -4/16, -7/16, 4/16, 4/16, -4/16, 8/16 },
},
walkable = false,
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
on_rightclick = taps_on_rightclick,
on_destruct = homedecor.stop_particle_spawner,
on_rotate = screwdriver.disallow
})
--Shower Tray
homedecor.register("shower_tray", {
description = S("Shower Tray"),
tiles = {
"forniture_marble_base_ducha_top.png",
"building_blocks_marble.png"
},
node_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, -0.5, 0.5, -0.45, 0.5 },
{ -0.5, -0.45, -0.5, 0.5, -0.4, -0.45 },
{ -0.5, -0.45, 0.45, 0.5, -0.4, 0.5 },
{ -0.5, -0.45, -0.45, -0.45, -0.4, 0.45 },
{ 0.45, -0.45, -0.45, 0.5, -0.4, 0.45 }
},
},
selection_box = homedecor.nodebox.slab_y(0.1),
groups = {cracky=2},
sounds = default.node_sound_stone_defaults(),
on_destruct = function(pos)
homedecor.stop_particle_spawner({x=pos.x, y=pos.y+2, z=pos.z}) -- the showerhead
homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z}) -- the taps, if any
end
})
--Shower Head
local sh_cbox = {
type = "fixed",
fixed = { -0.2, -0.4, -0.05, 0.2, 0.1, 0.5 }
}
homedecor.register("shower_head", {
drawtype = "mesh",
mesh = "homedecor_shower_head.obj",
tiles = {
"homedecor_generic_metal.png",
"homedecor_shower_head.png"
},
inventory_image = "homedecor_shower_head_inv.png",
description = S("Shower Head"),
groups = {snappy=3},
selection_box = sh_cbox,
walkable = false,
on_rotate = screwdriver.disallow,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
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" or
below.name == "homedecor:bathtub_clawfoot_brass_taps" or
below.name == "homedecor:bathtub_clawfoot_chrome_taps" ) then
local particledef = {
outlet = { x = 0, y = -0.42, z = 0.1 },
velocity_x = { min = -0.15, max = 0.15 },
velocity_y = -2,
velocity_z = { min = -0.3, max = 0.1 },
spread = 0.12
}
homedecor.start_particle_spawner(pos, node, particledef, "homedecor_shower")
end
return itemstack
end,
on_destruct = function(pos)
homedecor.stop_particle_spawner(pos)
end
})
local tub_sbox = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 1.5, 0.3125, 0.5 },
}
local tub_cbox = {
type = "fixed",
fixed = {
{-0.4375, -0.0625, -0.5, 1.4375, 0.5, -0.4375}, -- NodeBox1
{-0.4375, -0.0625, 0.4375, 1.4375, 0.5, 0.5}, -- NodeBox2
{-0.5, 0.1875, -0.4375, -0.4375, 0.5, 0.4375}, -- NodeBox3
{1.4375, -0.0625, -0.4375, 1.5, 0.5, 0.4375}, -- NodeBox4
{-0.3125, -0.3125, -0.4375, -0.125, -0.0625, 0.4375}, -- NodeBox5
{1.375, -0.3125, -0.4375, 1.4375, -0.0625, 0.4375}, -- NodeBox6
{-0.125, -0.3125, 0.375, 1.375, -0.0625, 0.4375}, -- NodeBox7
{-0.125, -0.3125, -0.4375, 1.375, -0.0625, -0.375}, -- NodeBox8
{-0.125, -0.5, -0.375, 1.375, -0.3125, 0.375}, -- NodeBox9
{-0.4375, -0.0625, -0.4375, -0.3125, 0.1875, 0.4375}, -- NodeBox10
}
}
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",
"building_blocks_marble.png",
"homedecor_bathtub_clawfoot_bottom_inside.png",
},
description = S("Bathtub, clawfoot, with brass taps"),
groups = {cracky=3},
selection_box = tub_sbox,
node_box = tub_cbox,
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",
"building_blocks_marble.png",
"homedecor_bathtub_clawfoot_bottom_inside.png",
},
description = S("Bathtub, clawfoot, with chrome taps"),
groups = {cracky=3},
selection_box = tub_sbox,
node_box = tub_cbox,
sounds = default.node_sound_stone_defaults(),
})
local bs_cbox = {
type = "fixed",
fixed = { -8/16, -8/16, 1/16, 8/16, 8/16, 8/16 }
}
homedecor.register("bathroom_set", {
drawtype = "mesh",
mesh = "homedecor_bathroom_set.obj",
tiles = {
"homedecor_bathroom_set_mirror.png",
"homedecor_bathroom_set_tray.png",
"homedecor_bathroom_set_toothbrush.png",
"homedecor_bathroom_set_cup.png",
"homedecor_bathroom_set_toothpaste.png",
},
inventory_image = "homedecor_bathroom_set_inv.png",
description = S("Bathroom sundries set"),
groups = {snappy=3},
selection_box = bs_cbox,
walkable = false,
sounds = default.node_sound_glass_defaults(),
})
-- aliases
minetest.register_alias("3dforniture:toilet", "homedecor:toilet")
minetest.register_alias("3dforniture:toilet_open", "homedecor:toilet_open")
minetest.register_alias("3dforniture:sink", "homedecor:sink")
minetest.register_alias("3dforniture:taps", "homedecor:taps")
minetest.register_alias("3dforniture:shower_tray", "homedecor:shower_tray")
minetest.register_alias("3dforniture:shower_head", "homedecor:shower_head")
minetest.register_alias("3dforniture:table_lamp", "homedecor:table_lamp_off")
minetest.register_alias("toilet", "homedecor:toilet")
minetest.register_alias("sink", "homedecor:sink")
minetest.register_alias("taps", "homedecor:taps")
minetest.register_alias("shower_tray", "homedecor:shower_tray")
minetest.register_alias("shower_head", "homedecor:shower_head")
minetest.register_alias("table_lamp", "homedecor:table_lamp_off")
-- 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
})
-- crafting
minetest.register_craft({
output = "homedecor:towel_rod",
recipe = {
{ "group:wood", "group:stick", "group:wood" },
{ "", "building_blocks:terrycloth_towel", "" },
},
})
minetest.register_craft({
output = "homedecor:toilet_paper",
recipe = {
{ "", "default:paper", "default:paper" },
{ "group:wood", "group:stick", "default:paper" },
{ "", "default:paper", "default:paper" },
},
})
minetest.register_craft({
output = "homedecor:medicine_cabinet",
recipe = {
{ "group:stick", "default:glass", "group:stick" },
{ "group:stick", "default:glass", "group:stick" },
{ "group:stick", "default:glass", "group:stick" }
},
})
-- bathroom/kitchen tiles
minetest.register_craft( {
output = "homedecor:bathroom_tiles_light 4",
recipe = {
{ "group:marble", "group:marble" },
{ "group:marble", "group:marble" }
},
})
unifieddyes.register_color_craft({
output = "homedecor:bathroom_tiles_light",
palette = "extended",
type = "shapeless",
neutral_node = "homedecor:bathroom_tiles_light",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft( {
output = "homedecor:bathroom_tiles_medium 4",
recipe = {
{ "group:marble", "group:marble", "" },
{ "group:marble", "group:marble", "dye:grey" }
},
})
unifieddyes.register_color_craft({
output = "homedecor:bathroom_tiles_medium",
palette = "extended",
type = "shapeless",
neutral_node = "homedecor:bathroom_tiles_medium",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft( {
output = "homedecor:bathroom_tiles_dark 4",
recipe = {
{ "group:marble", "group:marble", "" },
{ "group:marble", "group:marble", "dye:dark_grey" }
},
})
unifieddyes.register_color_craft({
output = "homedecor:bathroom_tiles_dark",
palette = "extended",
type = "shapeless",
neutral_node = "homedecor:bathroom_tiles_dark",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({
output = "homedecor:bathroom_set",
recipe = {
{ "", "homedecor:glass_table_small_round", "" },
{ "basic_materials:plastic_sheet", "homedecor:glass_table_small_round", "basic_materials:plastic_sheet" },
{ "group:stick", "basic_materials:plastic_sheet", "group:stick" }
},
})
minetest.register_craft({
output = "homedecor:toilet",
recipe = {
{ "","","bucket:bucket_water"},
{ "group:marble","group:marble", "group:marble" },
{ "", "bucket:bucket_empty", "" },
},
})
minetest.register_craft({
output = "homedecor:sink",
recipe = {
{ "group:marble","bucket:bucket_empty", "group:marble" },
{ "", "group:marble", "" }
},
})
minetest.register_craft({
output = "homedecor:taps",
recipe = {
{ "default:steel_ingot","bucket:bucket_water", "default:steel_ingot" },
},
})
minetest.register_craft({
output = "homedecor:taps_brass",
recipe = {
{ "basic_materials:brass_ingot","bucket:bucket_water", "basic_materials:brass_ingot" },
},
})
minetest.register_craft({
output = "homedecor:shower_tray",
recipe = {
{ "group:marble","bucket:bucket_empty", "group:marble" },
},
})
minetest.register_craft({
output = "homedecor:shower_head",
recipe = {
{"default:steel_ingot", "bucket:bucket_water"},
},
})
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"},
},
})

View File

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 778 B

After

Width:  |  Height:  |  Size: 778 B

View File

Before

Width:  |  Height:  |  Size: 531 B

After

Width:  |  Height:  |  Size: 531 B

View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 368 B

View File

Before

Width:  |  Height:  |  Size: 205 B

After

Width:  |  Height:  |  Size: 205 B

View File

Before

Width:  |  Height:  |  Size: 430 B

After

Width:  |  Height:  |  Size: 430 B

View File

Before

Width:  |  Height:  |  Size: 223 B

After

Width:  |  Height:  |  Size: 223 B

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 219 B

After

Width:  |  Height:  |  Size: 219 B

View File

Before

Width:  |  Height:  |  Size: 248 B

After

Width:  |  Height:  |  Size: 248 B

View File

Before

Width:  |  Height:  |  Size: 129 B

After

Width:  |  Height:  |  Size: 129 B

View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

Before

Width:  |  Height:  |  Size: 126 B

After

Width:  |  Height:  |  Size: 126 B

View File

Before

Width:  |  Height:  |  Size: 580 B

After

Width:  |  Height:  |  Size: 580 B

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,5 @@
homedecor_common
default
basic_materials
unifieddyes
creative

View File

@ -1,5 +1,5 @@
local S = homedecor_i18n.gettext local S = homedecor.gettext
local function N_(x) return x end local function N_(x) return x end
@ -220,7 +220,7 @@ for _, color in ipairs(bedcolors) do
end end
minetest.register_lbm({ minetest.register_lbm({
name = "homedecor:convert_beds", name = ":homedecor:convert_beds",
label = "Convert homedecor static bed nodes to use param2 color", label = "Convert homedecor static bed nodes to use param2 color",
run_at_every_load = false, run_at_every_load = false,
nodenames = homedecor.old_bed_nodes, nodenames = homedecor.old_bed_nodes,
@ -265,3 +265,126 @@ minetest.register_lbm({
meta:set_string("dye", "unifieddyes:"..color) meta:set_string("dye", "unifieddyes:"..color)
end end
}) })
-- crafting
minetest.register_craft( {
output = "homedecor:nightstand_oak_one_drawer",
recipe = {
{ "homedecor:drawer_small" },
{ "group:wood" },
},
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:nightstand_oak_one_drawer",
burntime = 30,
})
minetest.register_craft( {
output = "homedecor:nightstand_oak_two_drawers",
recipe = {
{ "homedecor:drawer_small" },
{ "homedecor:drawer_small" },
{ "group:wood" },
},
})
minetest.register_craft( {
output = "homedecor:nightstand_oak_two_drawers",
recipe = {
{ "homedecor:nightstand_oak_one_drawer" },
{ "homedecor:drawer_small" },
},
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:nightstand_oak_two_drawers",
burntime = 30,
})
--
minetest.register_craft( {
type = "shapeless",
output = "homedecor:nightstand_mahogany_one_drawer",
recipe = {
"homedecor:nightstand_oak_one_drawer",
"dye:brown",
},
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:nightstand_mahogany_one_drawer",
burntime = 30,
})
minetest.register_craft( {
type = "shapeless",
output = "homedecor:nightstand_mahogany_two_drawers",
recipe = {
"homedecor:nightstand_oak_two_drawers",
"dye:brown",
},
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:nightstand_mahogany_two_drawers",
burntime = 30,
})
minetest.register_craft( {
output = "homedecor:bed_regular",
recipe = {
{ "group:stick", "", "group:stick" },
{ "wool:white", "wool:white", "wool:white" },
{ "group:wood", "", "group:wood" },
},
})
unifieddyes.register_color_craft({
output = "homedecor:bed_regular",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:bed_regular",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft( {
output = "homedecor:bed_kingsize",
recipe = {
{ "homedecor:bed_regular", "homedecor:bed_regular" }
},
})
unifieddyes.register_color_craft({
output = "homedecor:bed_kingsize",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:bed_kingsize",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
unifieddyes.register_color_craft({
output = "homedecor:bed_kingsize",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:bed_regular",
recipe = {
"NEUTRAL_NODE",
"NEUTRAL_NODE",
"MAIN_DYE"
}
})

View File

Before

Width:  |  Height:  |  Size: 240 B

After

Width:  |  Height:  |  Size: 240 B

View File

Before

Width:  |  Height:  |  Size: 471 B

After

Width:  |  Height:  |  Size: 471 B

View File

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

Before

Width:  |  Height:  |  Size: 549 B

After

Width:  |  Height:  |  Size: 549 B

View File

Before

Width:  |  Height:  |  Size: 681 B

After

Width:  |  Height:  |  Size: 681 B

View File

Before

Width:  |  Height:  |  Size: 658 B

After

Width:  |  Height:  |  Size: 658 B

View File

Before

Width:  |  Height:  |  Size: 949 B

After

Width:  |  Height:  |  Size: 949 B

View File

Before

Width:  |  Height:  |  Size: 731 B

After

Width:  |  Height:  |  Size: 731 B

View File

Before

Width:  |  Height:  |  Size: 675 B

After

Width:  |  Height:  |  Size: 675 B

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