1
0
mirror of https://github.com/sys4-fr/server-nalc.git synced 2025-06-28 06:11:47 +02:00

Updated homedecor_modpack : not running yet

This commit is contained in:
LeMagnesium
2015-01-24 19:40:00 +01:00
parent 36897537a5
commit 8787930b51
562 changed files with 3676 additions and 5162 deletions

View File

@ -25,15 +25,13 @@ for i in ipairs(bathroom_tile_colors) do
"homedecor_bathroom_tiles_"..color..".png^[transformR90",
"homedecor_bathroom_tiles_"..color..".png^[transformR90"
},
is_ground_content = true,
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
})
end
minetest.register_node("homedecor:towel_rod", {
homedecor.register("towel_rod", {
description = "Towel rod with towel",
drawtype = "nodebox",
tiles = {
"homedecor_towel_rod_top.png",
"homedecor_towel_rod_bottom.png",
@ -42,8 +40,6 @@ minetest.register_node("homedecor:towel_rod", {
"homedecor_towel_rod_fb.png",
"homedecor_towel_rod_fb.png"
},
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
@ -62,8 +58,7 @@ minetest.register_node("homedecor:towel_rod", {
sounds = default.node_sound_defaults(),
})
minetest.register_node('homedecor:medicine_cabinet', {
drawtype = "nodebox",
homedecor.register("medicine_cabinet", {
description = S("Medicine Cabinet"),
tiles = {
'homedecor_medicine_cabinet_tb.png',
@ -74,60 +69,27 @@ minetest.register_node('homedecor:medicine_cabinet', {
'homedecor_medicine_cabinet_front.png'
},
inventory_image = "homedecor_medicine_cabinet_inv.png",
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = {
type = "fixed",
selection_box = {
type = "fixed",
fixed = {-0.3125, -0.1875, 0.3125, 0.3125, 0.5, 0.5}
},
node_box = {
},
node_box = {
type = "fixed",
fixed = {-0.3125, -0.1875, 0.3125, 0.3125, 0.5, 0.5}
},
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.set_node(pos, { name = "homedecor:medicine_cabinet_open", param2 = fdir })
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"size[8,7]"..
"list[current_name;main;1,0;6,1;]"..
"list[current_player;main;0,3;8,4;]")
meta:set_string("infotext", S("Medicine cabinet"))
local inv = meta:get_inventory()
inv:set_size("main", 16)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", S("%s moves stuff in medicine cabinet at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", S("%s moves stuff to medicine cabinet at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", S("%s takes stuff from medicine cabinet at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
node.name = "homedecor:medicine_cabinet_open"
minetest.swap_node(pos, node)
end,
infotext=S("Medicine cabinet"),
inventory = {
size=6,
},
})
minetest.register_node("homedecor:medicine_cabinet_open", {
homedecor.register("medicine_cabinet_open", {
tiles = {
'homedecor_medicine_cabinet_tb.png',
'homedecor_medicine_cabinet_tb.png',
@ -136,9 +98,6 @@ minetest.register_node("homedecor:medicine_cabinet_open", {
'homedecor_medicine_cabinet_back.png',
"homedecor_medicine_cabinet_open_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = { snappy = 3, not_in_creative_inventory=1 },
node_box = {
type = "fixed",
@ -149,20 +108,17 @@ minetest.register_node("homedecor:medicine_cabinet_open", {
},
drop = "homedecor:medicine_cabinet",
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.set_node(pos, { name = "homedecor:medicine_cabinet", param2 = fdir })
node.name = "homedecor:medicine_cabinet"
minetest.swap_node(pos, node)
end,
})
minetest.register_node("homedecor:toilet_paper", {
homedecor.register("toilet_paper", {
description = S("Toilet paper"),
drawtype = "mesh",
mesh = "homedecor_toilet_paper.obj",
tiles = { "homedecor_toilet_paper.png" },
inventory_image = "homedecor_toilet_paper_inv.png",
paramtype = "light",
paramtype2 = "facedir",
selection_box = {
selection_box = {
type = "fixed",
fixed = { -0.1875, 0.125, 0.0625, 0.25, 0.4375, 0.5 }
},

View File

@ -0,0 +1,184 @@
local S = homedecor.gettext
homedecor.register("toilet", {
description = S("Toilet"),
tiles = { "forniture_marble.png" },
node_box = {
type = "fixed",
fixed = {
{ -0.20, -0.50, -0.20, 0.20, -0.45, 0.50, },
{ -0.10, -0.45, -0.10, 0.10, 0.00, 0.50, },
{ -0.30, -0.20, -0.30, 0.30, 0.00, 0.35, },
{ -0.25, 0.00, -0.25, 0.25, 0.05, 0.25, },
{ -0.30, 0.00, 0.30, 0.30, 0.40, 0.50, },
{ -0.05, 0.40, 0.35, 0.05, 0.45, 0.45, },
},
},
groups = {cracky=3,},
sounds = default.node_sound_stone_defaults(),
on_punch = function (pos, node, puncher)
node.name = "homedecor:toilet_open"
minetest.set_node(pos, node)
end,
})
homedecor.register("toilet_open", {
tiles = {
"forniture_marble_top_toilet.png",
"forniture_marble.png"
},
node_box = {
type = "fixed",
fixed = {
{ -0.20, -0.50, -0.20, 0.20, -0.45, 0.50, },
{ -0.10, -0.45, -0.10, 0.10, -0.20, 0.50, },
{ -0.10, -0.20, 0.30, 0.10, 0.00, 0.50, },
{ -0.30, -0.20, 0.10, 0.30, 0.00, 0.35, },
{ -0.30, -0.20, -0.30, -0.10, -0.15, 0.10, },
{ -0.10, -0.20, -0.30, 0.10, -0.15, -0.10, },
{ 0.10, -0.20, -0.30, 0.30, -0.15, 0.10, },
{ -0.30, -0.15, -0.30, -0.20, 0.00, 0.10, },
{ -0.20, -0.15, -0.30, 0.20, 0.00, -0.20, },
{ 0.20, -0.15, -0.30, 0.30, 0.00, 0.10, },
{ -0.25, 0.00, 0.20, 0.25, 0.50, 0.25, },
{ -0.30, 0.00, 0.30, 0.30, 0.40, 0.50, },
},
},
drop = "homedecor:toilet",
groups = {cracky = 3,},
--sounds = {dig = "3dforniture_dig_toilet", gain=0.5},
sounds = default.node_sound_stone_defaults(),
on_punch = function (pos, node, puncher)
node.name = "homedecor:toilet"
minetest.set_node(pos, node)
minetest.sound_play("homedecor_toilet_flush", {
pos=pos,
max_hear_distance = 5,
gain = 1,
})
end,
})
--Sink
homedecor.register("sink", {
description = S("Sink"),
tiles = {
"forniture_marble_top_sink.png",
"forniture_marble.png"
},
inventory_image="3dforniture_inv_sink.png",
node_box = {
type = "fixed",
fixed = {
{ -0.15, 0.35, 0.20, 0.15, 0.40, 0.50, },
{ -0.25, 0.40, 0.40, 0.25, 0.45, 0.50, },
{ -0.25, 0.40, 0.15, -0.15, 0.45, 0.40, },
{ 0.15, 0.40, 0.15, 0.25, 0.45, 0.40, },
{ -0.15, 0.40, 0.15, 0.15, 0.45, 0.20, },
{ -0.30, 0.45, 0.40, 0.30, 0.50, 0.50, },
{ -0.30, 0.45, 0.10, -0.25, 0.50, 0.40, },
{ 0.25, 0.45, 0.10, 0.30, 0.50, 0.40, },
{ -0.25, 0.45, 0.10, 0.25, 0.50, 0.15, },
{-0.1, -0.5, 0.3, 0.1, 0.4, 0.5},
},
},
selection_box = {
type = "fixed",
fixed = {-0.3,-0.5,0.1, 0.3,0.5,0.5},
},
groups = {cracky=2,},
sounds = default.node_sound_stone_defaults(),
})
--Taps
homedecor.register("taps", {
description = S("Taps"),
tiles = { "forniture_metal.png" },
inventory_image="3dforniture_inv_taps.png",
sunlight_propagates = true,
node_box = {
type = "fixed",
fixed = {
{ -0.25, -0.450, 0.49, 0.25, -0.30, 0.50, },
{ -0.05, -0.400, 0.25, 0.05, -0.35, 0.50, },
{ -0.05, -0.425, 0.25, 0.05, -0.40, 0.30, },
{ -0.20, -0.400, 0.45, -0.15, -0.35, 0.50, },
{ -0.20, -0.450, 0.40, -0.15, -0.30, 0.45, },
{ -0.25, -0.400, 0.40, -0.10, -0.35, 0.45, },
{ 0.15, -0.400, 0.45, 0.20, -0.35, 0.50, },
{ 0.15, -0.450, 0.40, 0.20, -0.30, 0.45, },
{ 0.10, -0.400, 0.40, 0.25, -0.35, 0.45, },
},
},
selection_box = {
type = "fixed",
fixed = { -0.25, -0.45, 0.25, 0.25, -0.3, 0.5 },
},
groups = {cracky=2,},
sounds = default.node_sound_stone_defaults(),
})
--Shower Tray
homedecor.register("shower_tray", {
description = S("Shower Tray"),
tiles = {
"forniture_marble_base_ducha_top.png",
"forniture_marble.png"
},
sunlight_propagates = true,
legacy_facedir_simple = true,
node_box = {
type = "fixed",
fixed = {
{ -0.50, -0.50, -0.50, 0.50, -0.45, 0.50, },
{ -0.50, -0.45, -0.50, 0.50, -0.40, -0.45, },
{ -0.50, -0.45, 0.45, 0.50, -0.40, 0.50, },
{ -0.50, -0.45, -0.45, -0.45, -0.40, 0.45, },
{ 0.45, -0.45, -0.45, 0.50, -0.40, 0.45, },
},
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, -0.4, 0.5 },
},
groups = {cracky=2,},
sounds = default.node_sound_stone_defaults(),
})
--Shower Head
homedecor.register("shower_head", {
description = S("Shower Head"),
tiles = { "forniture_metal.png" },
inventory_image="3dforniture_inv_shower_head.png",
sunlight_propagates = true,
node_box = {
type = "fixed",
fixed = {
{ -0.10, -0.50, 0.10, 0.10, -0.40, 0.30, },
{ -0.05, -0.40, 0.15, 0.05, -0.30, 0.25, },
{ -0.05, -0.35, 0.25, 0.05, -0.30, 0.50, },
{ -0.10, -0.40, 0.49, 0.10, -0.25, 0.50, },
},
},
selection_box = {
type = "fixed",
fixed = { -0.1, -0.5, 0.1, 0.1, -0.25, 0.5 },
},
groups = {cracky=2,},
sounds = default.node_sound_stone_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")

View File

@ -2,8 +2,7 @@
local S = homedecor.gettext
minetest.register_node('homedecor:air_conditioner', {
drawtype = "nodebox",
homedecor.register("air_conditioner", {
description = S("Air Conditioner"),
tiles = { 'homedecor_ac_tb.png',
'homedecor_ac_tb.png',
@ -11,10 +10,6 @@ minetest.register_node('homedecor:air_conditioner', {
'homedecor_ac_sides.png',
'homedecor_ac_back.png',
'homedecor_ac_front.png'},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
groups = { snappy = 3 },
sounds = default.node_sound_leaves_defaults(),
node_box = {
@ -24,25 +19,22 @@ minetest.register_node('homedecor:air_conditioner', {
{-0.5, 0.125, -0.5, 0.5, 0.5, 0.5 },
}
},
selection_box = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
selection_box = { type="regular" },
})
-- fans
minetest.register_entity("homedecor:mesh_desk_fan", {
collisionbox = { 0, 0, 0, 0, 0, 0 },
visual = "mesh",
collisionbox = homedecor.nodebox.null,
visual = "mesh",
mesh = "homedecor_desk_fan.b3d",
textures = {"homedecor_desk_fan_uv.png"},
textures = {"homedecor_desk_fan_uv.png"},
visual_size = {x=10, y=10},
})
minetest.register_node("homedecor:desk_fan", {
homedecor.register("desk_fan", {
description = "Desk Fan",
drawtype = "nodebox",
paramtype2 = "facedir",
legacy_facedir_simple = true,
paramtype = "light",
groups = {oddly_breakable_by_hand=2},
node_box = {
type = "fixed",
@ -53,12 +45,7 @@ minetest.register_node("homedecor:desk_fan", {
tiles = {"homedecor_desk_fan_body.png"},
inventory_image = "homedecor_desk_fan_inv.png",
wield_image = "homedecor_desk_fan_inv.png",
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
}
},
selection_box = { type = "regular" },
on_construct = function(pos)
local entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
local meta = minetest.get_meta(pos)
@ -88,7 +75,7 @@ minetest.register_node("homedecor:desk_fan", {
speedy_meta:set_string("active", "no")
print (speedy_meta:get_string("active"))
end
if entity_anim[1] == nil then
minetest.add_entity({x=pos.x, y=pos.y, z=pos.z}, "homedecor:mesh_desk_fan") --+(0.0625*10)
local entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
@ -117,9 +104,8 @@ minetest.register_node("homedecor:desk_fan", {
-- ceiling fan
minetest.register_node('homedecor:ceiling_fan', {
homedecor.register("ceiling_fan", {
description = S("Ceiling Fan"),
drawtype = "nodebox",
tiles = {
{ name="homedecor_ceiling_fan_top.png",
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=0.5} },
@ -135,10 +121,6 @@ minetest.register_node('homedecor:ceiling_fan', {
{ -0.0625, 0.375, -0.0625, 0.0625, 0.5, 0.0625 }
}
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
groups = { snappy = 3 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
@ -146,8 +128,7 @@ minetest.register_node('homedecor:ceiling_fan', {
-- heating devices
minetest.register_node('homedecor:space_heater', {
drawtype = "nodebox",
homedecor.register("space_heater", {
description = S("Space heater"),
tiles = { 'homedecor_heater_tb.png',
'homedecor_heater_tb.png',
@ -158,9 +139,6 @@ minetest.register_node('homedecor:space_heater', {
},
inventory_image = "homedecor_heater_inv.png",
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
groups = { snappy = 3 },
sounds = default.node_sound_leaves_defaults(),
node_box = {
@ -175,14 +153,11 @@ minetest.register_node('homedecor:space_heater', {
}
})
minetest.register_node("homedecor:radiator", {
homedecor.register("radiator", {
tiles = { "homedecor_white_metal.png" },
inventory_image = "homedecor_radiator_inv.png",
description = "Radiator heater",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
groups = {snappy=3},
node_box = {
type = "fixed",
fixed = {

View File

@ -1,12 +1,9 @@
minetest.register_node("homedecor:analog_clock_plastic", {
homedecor.register("analog_clock_plastic", {
description = "Analog clock (plastic)",
drawtype = "mesh",
mesh = "homedecor_analog_clock.obj",
tiles = { "homedecor_analog_clock_plastic.png" },
inventory_image = "homedecor_analog_clock_plastic_inv.png",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
collision_box = {
type = "fixed",
fixed = {
{ -8/32, -3/32, 15/32, 8/32, 3/32, 16/32 },
@ -23,15 +20,12 @@ minetest.register_node("homedecor:analog_clock_plastic", {
groups = {snappy=3},
})
minetest.register_node("homedecor:analog_clock_wood", {
homedecor.register("analog_clock_wood", {
description = "Analog clock (wood)",
drawtype = "mesh",
mesh = "homedecor_analog_clock.obj",
tiles = { "homedecor_analog_clock_wood.png" },
inventory_image = "homedecor_analog_clock_wood_inv.png",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
collision_box = {
type = "fixed",
fixed = {
{ -8/32, -3/32, 15/32, 8/32, 3/32, 16/32 },
@ -48,9 +42,8 @@ minetest.register_node("homedecor:analog_clock_wood", {
groups = {snappy=3},
})
minetest.register_node("homedecor:digital_clock", {
homedecor.register("digital_clock", {
description = "Digital clock",
drawtype = "nodebox",
tiles = {
"homedecor_digital_clock_edges.png",
"homedecor_digital_clock_edges.png",
@ -60,8 +53,6 @@ minetest.register_node("homedecor:digital_clock", {
"homedecor_digital_clock_front.png"
},
inventory_image = "homedecor_digital_clock_inv.png",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
@ -71,9 +62,8 @@ minetest.register_node("homedecor:digital_clock", {
groups = {snappy=3},
})
minetest.register_node("homedecor:alarm_clock", {
homedecor.register("alarm_clock", {
description = "Alarm clock",
drawtype = "nodebox",
tiles = {
"homedecor_alarm_clock_top.png",
"homedecor_alarm_clock_bottom.png",
@ -83,8 +73,6 @@ minetest.register_node("homedecor:alarm_clock", {
"homedecor_alarm_clock_front.png"
},
inventory_image = "homedecor_alarm_clock_inv.png",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {

View File

@ -8,19 +8,16 @@ minetest.register_node("homedecor:cobweb_corner", {
paramtype2 = "wallmounted",
sunlight_propagates = true,
liquid_viscosity = 8,
liquidtype = "source",
liquid_alternative_flowing = "homedecor:cobweb_corner",
liquid_alternative_source = "homedecor:cobweb_corner",
liquid_renewable = false,
liquid_range = 0,
liquidtype = "source",
liquid_alternative_flowing = "homedecor:cobweb_corner",
liquid_alternative_source = "homedecor:cobweb_corner",
liquid_renewable = false,
liquid_range = 0,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}
},
selection_box = { type = "regular" },
visual_scale = 1.4,
groups = { snappy = 3, liquid=3 },
after_place_node = function(pos, placer, itemstack, pointed_thing)
after_place_node = function(pos, placer, itemstack, pointed_thing)
homedecor.rotate_cobweb(pos)
end
})
@ -34,11 +31,11 @@ minetest.register_node("homedecor:cobweb_centered", {
paramtype2 = "facedir",
sunlight_propagates = true,
liquid_viscosity = 8,
liquidtype = "source",
liquid_alternative_flowing = "homedecor:cobweb_centered",
liquid_alternative_source = "homedecor:cobweb_centered",
liquid_renewable = false,
liquid_range = 0,
liquidtype = "source",
liquid_alternative_flowing = "homedecor:cobweb_centered",
liquid_alternative_source = "homedecor:cobweb_centered",
liquid_renewable = false,
liquid_range = 0,
walkable = false,
selection_box = {
type = "fixed",
@ -61,11 +58,11 @@ minetest.register_node("homedecor:cobweb_flat", {
paramtype2 = "facedir",
sunlight_propagates = true,
liquid_viscosity = 8,
liquidtype = "source",
liquid_alternative_flowing = "homedecor:cobweb_flat",
liquid_alternative_source = "homedecor:cobweb_flat",
liquid_renewable = false,
liquid_range = 0,
liquidtype = "source",
liquid_alternative_flowing = "homedecor:cobweb_flat",
liquid_alternative_source = "homedecor:cobweb_flat",
liquid_renewable = false,
liquid_range = 0,
walkable = false,
selection_box = {
type = "fixed",
@ -88,16 +85,13 @@ minetest.register_node("homedecor:cobweb_plantlike", {
paramtype2 = "facedir",
sunlight_propagates = true,
liquid_viscosity = 8,
liquidtype = "source",
liquid_alternative_flowing = "homedecor:cobweb_plantlike",
liquid_alternative_source = "homedecor:cobweb_plantlike",
liquid_renewable = false,
liquid_range = 0,
liquidtype = "source",
liquid_alternative_flowing = "homedecor:cobweb_plantlike",
liquid_alternative_source = "homedecor:cobweb_plantlike",
liquid_renewable = false,
liquid_range = 0,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}
},
selection_box = { type = "regular" },
visual_scale = 1.189,
groups = { snappy = 3, liquid=3, not_in_creative_inventory = 1 },
drop = "homedecor:cobweb_corner"
@ -119,23 +113,23 @@ function homedecor.rotate_cobweb(pos)
-- only xm+zp, or only xp+zm means on-floor torchlike
if (iswall_xm and iswall_zp and not iswall_xp and not iswall_zm)
or (iswall_xp and iswall_zm and not iswall_xm and not iswall_zp) then
or (iswall_xp and iswall_zm and not iswall_xm and not iswall_zp) then
minetest.set_node(pos, {name = "homedecor:cobweb_corner", param2 = 1})
-- only xm+zm, or only xp+zp means on-ceiling torchlike
elseif (iswall_xm and iswall_zm and not iswall_xp and not iswall_zp)
or (iswall_xp and iswall_zp and not iswall_xm and not iswall_zm) then
elseif (iswall_xm and iswall_zm and not iswall_xp and not iswall_zp)
or (iswall_xp and iswall_zp and not iswall_xm and not iswall_zm) then
minetest.set_node(pos, {name = "homedecor:cobweb_corner", param2 = 0})
-- only xm+xp means nodebox (not rotated, 0 degrees)
elseif iswall_xm and iswall_xp and not iswall_zm and not iswall_zp then
elseif iswall_xm and iswall_xp and not iswall_zm and not iswall_zp then
minetest.set_node(pos, {name = "homedecor:cobweb_centered", param2 = 0})
-- only zm+zp means nodebox rotated to 90 degrees
elseif iswall_zm and iswall_zp and not iswall_xm and not iswall_xp then
elseif iswall_zm and iswall_zp and not iswall_xm and not iswall_xp then
minetest.set_node(pos, {name = "homedecor:cobweb_centered", param2 = 1})
-- ok, there aren't any simple two-wall corners or opposing walls.
@ -152,7 +146,7 @@ function homedecor.rotate_cobweb(pos)
elseif iswall_zp and not iswall_xm and not iswall_xp and not iswall_zm then
minetest.set_node(pos, {name = "homedecor:cobweb_flat", param2 = 0})
-- if all else fails, place the plantlike version as a fallback.
else

View File

@ -406,7 +406,7 @@ minetest.register_craft( {
minetest.register_craft( {
output = "homedecor:glass_table_large_b 2",
recipe = {
recipe = {
{ "homedecor:glass_table_small_square", "homedecor:glass_table_small_square" },
}
})
@ -424,14 +424,14 @@ minetest.register_craft( {
minetest.register_craft( {
output = "homedecor:wood_table_small_square_b 2",
recipe = {
recipe = {
{ "homedecor:wood_table_small_round","homedecor:wood_table_small_round" },
}
})
minetest.register_craft( {
output = "homedecor:wood_table_large_b 2",
recipe = {
recipe = {
{ "homedecor:wood_table_small_square", "homedecor:wood_table_small_square" },
}
})
@ -495,7 +495,7 @@ minetest.register_craft({
minetest.register_craft( {
output = "homedecor:skylight 4",
recipe = {
recipe = {
{ "homedecor:glass_table_large", "homedecor:glass_table_large" },
{ "homedecor:glass_table_large", "homedecor:glass_table_large" },
},
@ -1842,7 +1842,7 @@ minetest.register_craft( {
},
})
-- woodglass door
-- woodglass door
minetest.register_craft( {
output = "homedecor:door_woodglass_bottom_left",
@ -2133,6 +2133,15 @@ minetest.register_craft({
},
})
minetest.register_craft({
output = "homedecor:cardboard_box_big 2",
recipe = {
{ "default:paper", "", "default:paper" },
{ "default:paper", "", "default:paper" },
{ "default:paper", "default:paper", "default:paper" },
},
})
minetest.register_craft({
output = "homedecor:desk",
recipe = {
@ -2370,7 +2379,7 @@ minetest.register_craft( {
-- bathroom/kitchen tiles
local color_pairings = {
local color_pairings = {
{ "grey", "white", "1" },
{ "dark_grey", "white", "2" },
{ "black", "white", "3" },
@ -2879,7 +2888,10 @@ minetest.register_craft({
local bookcolors = {
"red",
"green",
"blue"
"blue",
"violet",
"grey",
"brown"
}
for _, color in ipairs(bookcolors) do
@ -2917,7 +2929,7 @@ minetest.register_craft({
"homedecor:bottle_brown",
"homedecor:bottle_brown",
"homedecor:bottle_brown",
"homedecor:bottle_brown"
"homedecor:bottle_brown"
},
})
@ -2928,7 +2940,7 @@ minetest.register_craft({
"homedecor:bottle_green",
"homedecor:bottle_green",
"homedecor:bottle_green",
"homedecor:bottle_green"
"homedecor:bottle_green"
},
})

View File

@ -22,7 +22,7 @@ homedecor.door_models = {
{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 },
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }},
{{ -8/16, 6/16, 6/16, 8/16, 8/16, 8/16},
{{ -8/16, 6/16, 6/16, 8/16, 8/16, 8/16},
{ -8/16, 10/32, 13/32, 8/16, 11/32, 15/32 },
{ -8/16, 8/32, 13/32, 8/16, 9/32, 15/32 },
{ -8/16, 6/32, 13/32, 8/16, 7/32, 15/32 },
@ -54,7 +54,7 @@ homedecor.door_models = {
{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 },
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }},
{{ -8/16, 6/16, 6/16, 8/16, 8/16, 8/16},
{{ -8/16, 6/16, 6/16, 8/16, 8/16, 8/16},
{ -8/16, 10/32, 13/32, 8/16, 11/32, 15/32 },
{ -8/16, 8/32, 13/32, 8/16, 9/32, 15/32 },
{ -8/16, 6/32, 13/32, 8/16, 7/32, 15/32 },
@ -93,7 +93,7 @@ homedecor.door_models = {
{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 },
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }},
{{ -8/16, 6/16, 6/16, 8/16, 8/16, 8/16},
{{ -8/16, 6/16, 6/16, 8/16, 8/16, 8/16},
{ -8/16, 10/32, 13/32, 8/16, 11/32, 15/32 },
{ -8/16, 8/32, 13/32, 8/16, 9/32, 15/32 },
{ -8/16, 6/32, 13/32, 8/16, 7/32, 15/32 },
@ -125,7 +125,7 @@ homedecor.door_models = {
{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 },
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }},
{{ -8/16, 6/16, 6/16, 8/16, 8/16, 8/16},
{{ -8/16, 6/16, 6/16, 8/16, 8/16, 8/16},
{ -8/16, 10/32, 13/32, 8/16, 11/32, 15/32 },
{ -8/16, 8/32, 13/32, 8/16, 9/32, 15/32 },
{ -8/16, 6/32, 13/32, 8/16, 7/32, 15/32 },

View File

@ -20,12 +20,7 @@ local function countSolids(pos,node,level)
local solids = 0
for x = -1, 1 do
for z = -1, 1 do
local y = 0
if node.param2 == 5 then
y = -level
else
y = level
end
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
@ -76,12 +71,7 @@ local function calculateClosed(pos)
return true
end
end
local x
if direction == 1 then
x = 1
else
x = -1
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})
@ -89,9 +79,9 @@ local function calculateClosed(pos)
return true
end
end
return false
return false
else
-- direction == 3 or 4
-- 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})
@ -99,12 +89,7 @@ local function calculateClosed(pos)
return true
end
end
local z
if direction == 3 then
z = 1
else
z = -1
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})
@ -122,11 +107,7 @@ end
local function getClosed(pos)
local isClosed = minetest.get_meta(pos):get_string('closed')
if isClosed=='' then
if calculateClosed(pos) then
return true
else
return false
end
return calculateClosed(pos)
else
isClosed = tonumber(isClosed)
-- may be closed or open (1 or 0)
@ -135,13 +116,8 @@ local function getClosed(pos)
end
local function addDoorNode(pos,def,isClosed)
if isClosed then
isClosed = 1
else
isClosed = 0
end
minetest.add_node(pos, def)
minetest.get_meta(pos):set_int('closed',isClosed)
minetest.set_node(pos, def)
minetest.get_meta(pos):set_int('closed', isClosed and 1 or 0)
end
local sides = {"left", "right"}
@ -210,7 +186,6 @@ for i in ipairs(sides) do
paramtype2 = "facedir",
groups = {snappy=3, not_in_creative_inventory=1},
sounds = default.node_sound_wood_defaults(),
walkable = true,
use_texture_alpha = texalpha,
selection_box = selectboxes_top,
node_box = {
@ -229,7 +204,7 @@ for i in ipairs(sides) do
})
local dgroups = {snappy=3, not_in_creative_inventory=1}
if side == "left" then
if side == "left" then
dgroups = {snappy=3}
end
@ -243,7 +218,6 @@ for i in ipairs(sides) do
paramtype2 = "facedir",
groups = dgroups,
sounds = default.node_sound_wood_defaults(),
walkable = true,
use_texture_alpha = texalpha,
selection_box = selectboxes_bottom,
node_box = {
@ -256,9 +230,12 @@ for i in ipairs(sides) do
end
end,
on_place = function(itemstack, placer, pointed_thing)
local keys=placer:get_player_control()
homedecor.place_door(itemstack, placer, pointed_thing, doorname, keys["sneak"])
return itemstack
return homedecor.stack_wing(itemstack, placer, pointed_thing,
"homedecor:door_"..doorname.."_bottom_left", "homedecor:door_"..doorname.."_top_left",
"homedecor:door_"..doorname.."_bottom_right", "homedecor:door_"..doorname.."_top_right")
end,
on_construct = function(pos)
minetest.get_meta(pos):set_int("closed", 1)
end,
on_rightclick = function(pos, node, clicker)
homedecor.flip_door(pos, node, clicker, doorname, side)
@ -319,7 +296,7 @@ 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
@ -350,10 +327,8 @@ for i in ipairs(gates_list) do
"homedecor_gate_"..gate.."_front.png"
},
paramtype = "light",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
paramtype2 = "facedir",
selection_box = {
type = "fixed",
@ -410,78 +385,6 @@ minetest.register_alias("homedecor:fence_picket_gate_closed", "homedecor:g
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")
----- helper functions
function homedecor.place_door(itemstack, placer, pointed_thing, name, forceright)
local pointed = pointed_thing.under
local pnode = minetest.get_node(pointed)
local pname = pnode.name
local rnodedef = minetest.registered_nodes[pname]
if rnodedef then
if rnodedef.on_rightclick then
rnodedef.on_rightclick(pointed_thing.under, pnode, placer, itemstack)
return
end
local pos1 = nil
local pos2 = nil
if rnodedef["buildable_to"] then
pos1 = pointed
pos2 = {x=pointed.x, y=pointed.y+1, z=pointed.z}
else
pos1 = pointed_thing.above
pos2 = {x=pointed_thing.above.x, y=pointed_thing.above.y+1, z=pointed_thing.above.z}
end
local node_bottom = minetest.get_node(pos1)
local node_top = minetest.get_node(pos2)
if minetest.is_protected(pos1, placer:get_player_name()) then
minetest.record_protection_violation(pos1,
placer:get_player_name())
return
end
if minetest.is_protected(pos2, placer:get_player_name()) then
minetest.record_protection_violation(pos2,
placer:get_player_name())
return
end
if not homedecor.get_nodedef_field(node_bottom.name, "buildable_to")
or not homedecor.get_nodedef_field(node_top.name, "buildable_to") then
minetest.chat_send_player( placer:get_player_name(), S('Not enough space above that spot to place a door!') )
else
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local p_tests = {
{x=pos1.x-1, y=pos1.y, z=pos1.z},
{x=pos1.x, y=pos1.y, z=pos1.z+1},
{x=pos1.x+1, y=pos1.y, z=pos1.z},
{x=pos1.x, y=pos1.y, z=pos1.z-1},
}
print("fdir="..fdir)
local testnode = minetest.get_node(p_tests[fdir+1])
local side = "left"
if string.find(testnode.name, "homedecor:door_"..name.."_bottom_left") or forceright then
side = "right"
end
local def = { name = "homedecor:door_"..name.."_bottom_"..side, param2=fdir}
addDoorNode(pos1, def, true)
minetest.add_node(pos2, { name = "homedecor:door_"..name.."_top_"..side, param2=fdir})
if not homedecor.expect_infinite_stacks then
itemstack:take_item()
return itemstack
end
end
end
end
-- 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.
@ -507,12 +410,7 @@ function homedecor.flip_door(pos, node, player, name, side, isClosed)
nfdir=ofdir + 1
if nfdir > 3 then nfdir = 0 end
end
local sound;
if isClosed then
sound = 'close'
else
sound = 'open'
end
local sound = isClosed and 'close' or 'open'
minetest.sound_play("homedecor_door_"..sound, {
pos=pos,
max_hear_distance = 5,
@ -598,7 +496,7 @@ minetest.register_node("homedecor:japanese_wall_top", {
},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.0625},
fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.0625},
}
})
@ -634,7 +532,7 @@ minetest.register_node("homedecor:japanese_wall_middle", {
},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.0625},
fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.0625},
}
})
@ -669,7 +567,7 @@ minetest.register_node("homedecor:japanese_wall_bottom", {
},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.0625},
fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.0625},
}
})
@ -694,7 +592,7 @@ minetest.register_node("homedecor:tatami_mat", {
}
})
minetest.register_node("homedecor:jpn_door_bottom", {
homedecor.register("jpn_door_bottom", {
description = "Japanese-style door",
inventory_image = "homedecor_jpn_door_inv.png",
tiles = {
@ -704,13 +602,10 @@ minetest.register_node("homedecor:jpn_door_bottom", {
"homedecor_japanese_wall_edges.png",
"homedecor_japanese_door_bottom.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = { snappy = 3 },
node_box = {
type = "fixed",
fixed = {
fixed = {
{-0.5, -0.5, 0.03125, 0.5, 0.5, 0.03125}, -- NodeBox1
{-0.5, -0.5, 0, -0.44, 0.5, 0.0625}, -- NodeBox2
{0.44, -0.5, 0, 0.5, 0.5, 0.0625}, -- NodeBox3
@ -724,29 +619,9 @@ minetest.register_node("homedecor:jpn_door_bottom", {
},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0, 0.5, 1.5, 0.0625},
fixed = {-0.5, -0.5, 0, 0.5, 1.5, 0.0625},
},
on_place = function(itemstack, placer, pointed_thing)
local pointed = pointed_thing.under
local pnode = minetest.get_node(pointed)
local pname = pnode.name
local rnodedef = minetest.registered_nodes[pname]
if rnodedef.on_rightclick then
rnodedef.on_rightclick(pointed, pnode, placer)
return
end
return homedecor.stack_vertically(itemstack, placer, pointed_thing,
"homedecor:jpn_door_bottom", "homedecor:jpn_door_top")
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local pos2 = { x = pos.x, y=pos.y + 1, z = pos.z }
if minetest.get_node(pos2).name == "homedecor:jpn_door_top" then
minetest.remove_node(pos2)
end
end,
expand = { top = "homedecor:jpn_door_top" },
on_rightclick = function(pos, node, clicker)
fdir = minetest.get_node(pos).param2
minetest.set_node(pos, {name = "homedecor:jpn_door_bottom_open", param2 = fdir})
@ -768,7 +643,7 @@ minetest.register_node("homedecor:jpn_door_top", {
groups = { snappy = 3, not_in_creative_inventory = 1 },
node_box = {
type = "fixed",
fixed = {
fixed = {
{-0.5, -0.5, 0.03125, 0.5, 0.5, 0.03125}, -- NodeBox1
{-0.5, -0.5, 0, -0.44, 0.5, 0.0625}, -- NodeBox2
{0.44, -0.5, 0, 0.5, 0.5, 0.0625}, -- NodeBox3
@ -780,10 +655,7 @@ minetest.register_node("homedecor:jpn_door_top", {
{0.1565, -0.5, 0, 0.2185, 0.5, 0.0625}, -- NodeBox9
}
},
selection_box = {
type = "fixed",
fixed = { 0, 0, 0, 0, 0, 0 },
},
selection_box = homedecor.nodebox.null,
})
minetest.register_node("homedecor:jpn_door_bottom_open", {
@ -800,7 +672,7 @@ minetest.register_node("homedecor:jpn_door_bottom_open", {
groups = { snappy = 3, not_in_creative_inventory = 1 },
node_box = {
type = "fixed",
fixed = {
fixed = {
{-1.5, -0.5, -0.03125, -0.5, 0.5, -0.03125}, -- NodeBox1
{-1.5, -0.5, -0.0625, -1.44, 0.5, 0}, -- NodeBox2
{-0.5625, -0.5, -0.0625, -0.5, 0.5, 0}, -- NodeBox3
@ -844,7 +716,7 @@ minetest.register_node("homedecor:jpn_door_top_open", {
groups = { snappy = 3, not_in_creative_inventory = 1 },
node_box = {
type = "fixed",
fixed = {
fixed = {
{-1.5, -0.5, -0.03125, -0.5, 0.5, -0.03125}, -- NodeBox1
{-1.5, -0.5, -0.0625, -1.44, 0.5, 0}, -- NodeBox2
{-0.5625, -0.5, -0.0625, -0.5, 0.5, 0}, -- NodeBox3
@ -856,10 +728,7 @@ minetest.register_node("homedecor:jpn_door_top_open", {
{-0.84375, -0.5, -0.0625, -0.7815, 0.5, 0}, -- NodeBox9
}
},
selection_box = {
type = "fixed",
fixed = { 0, 0, 0, 0, 0, 0 },
},
selection_box = homedecor.nodebox.null,
})

View File

@ -2,7 +2,7 @@
local S = homedecor.gettext
minetest.register_node('homedecor:speaker', {
homedecor.register("speaker", {
description = S("Large Stereo Speaker"),
tiles = { 'homedecor_speaker_top.png',
'homedecor_speaker_bottom.png',
@ -10,17 +10,12 @@ minetest.register_node('homedecor:speaker', {
'homedecor_speaker_left.png',
'homedecor_speaker_back.png',
'homedecor_speaker_front.png'},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
groups = { snappy = 3 },
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_node('homedecor:speaker_small', {
homedecor.register("speaker_small", {
description = S("Small Surround Speaker"),
drawtype = "nodebox",
tiles = {
'homedecor_speaker_top.png',
'homedecor_speaker_bottom.png',
@ -29,24 +24,19 @@ minetest.register_node('homedecor:speaker_small', {
'homedecor_speaker_back.png',
'homedecor_speaker_front.png'
},
selection_box = {
type = "fixed",
fixed = { -0.2, -0.5, 0, 0.2, 0, 0.4 }
},
node_box = {
type = "fixed",
fixed = { -0.2, -0.5, 0, 0.2, 0, 0.4 }
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = {
type = "fixed",
fixed = { -0.2, -0.5, 0, 0.2, 0, 0.4 }
},
node_box = {
type = "fixed",
fixed = { -0.2, -0.5, 0, 0.2, 0, 0.4 }
},
groups = { snappy = 3 },
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_node('homedecor:stereo', {
homedecor.register("stereo", {
description = S("Stereo Receiver"),
tiles = { 'homedecor_stereo_top.png',
'homedecor_stereo_bottom.png',
@ -54,22 +44,16 @@ minetest.register_node('homedecor:stereo', {
'homedecor_stereo_left.png',
'homedecor_stereo_back.png',
'homedecor_stereo_front.png'},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
groups = { snappy = 3 },
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_node('homedecor:projection_screen', {
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',
sunlight_propagates = false,
paramtype = 'light',
walkable = false,
groups = { snappy = 3 },
sounds = default.node_sound_leaves_defaults(),
@ -80,7 +64,7 @@ minetest.register_node('homedecor:projection_screen', {
},
})
minetest.register_node('homedecor:television', {
homedecor.register("television", {
description = S("Small CRT Television"),
tiles = { 'homedecor_television_top.png',
'homedecor_television_bottom.png',
@ -93,21 +77,16 @@ minetest.register_node('homedecor:television', {
aspect_w=16,
aspect_h=16,
length=80.0
}
}
}
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
light_source = LIGHT_MAX - 1,
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("homedecor:dvd_vcr", {
homedecor.register("dvd_vcr", {
description = S("DVD and VCR"),
drawtype = "nodebox",
tiles = {
"homedecor_dvdvcr_top.png",
"homedecor_dvdvcr_bottom.png",
@ -117,8 +96,6 @@ minetest.register_node("homedecor:dvd_vcr", {
"homedecor_dvdvcr_front.png",
},
inventory_image = "homedecor_dvdvcr_inv.png",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
@ -130,7 +107,7 @@ minetest.register_node("homedecor:dvd_vcr", {
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("homedecor:telephone", {
homedecor.register("telephone", {
tiles = {
"homedecor_telephone_sides.png^[transformR180",
"homedecor_telephone_sides.png",
@ -141,17 +118,14 @@ minetest.register_node("homedecor:telephone", {
},
inventory_image = "homedecor_telephone_inv.png",
description = "Telephone",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
groups = {snappy=3},
node_box = {
type = "fixed",
fixed = {
{-0.1875, -0.5, -0.1875, 0.1875, -0.4375, 0.15}, -- NodeBox1
{-0.125, -0.5, -0.130, 0.125, -0.3675, 0.15}, -- NodeBox2
{-0.175, -0.4375, -0.175, 0.175, -0.42, 0.15}, -- NodeBox3
{-0.16, -0.42, -0.16, 0.16, -0.4025, 0.15}, -- NodeBox4
{-0.16, -0.42, -0.16, 0.16, -0.4025, 0.15}, -- NodeBox4
{-0.145, -0.4025, -0.145, 0.145, -0.385, 0.15}, -- NodeBox5
{-0.11, -0.385, -0.115, 0.11, -0.35, 0.15}, -- NodeBox6
{-0.095, -0.5, -0.1, 0.095, -0.3325, 0.15}, -- NodeBox7
@ -168,6 +142,6 @@ minetest.register_node("homedecor:telephone", {
selection_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.1875, 0.25, -0.21, 0.15 }
}
}
})

View File

@ -16,41 +16,30 @@ end
local S = homedecor.gettext
minetest.register_node("homedecor:fence_brass", {
homedecor.register("fence_brass", {
description = S("Brass Fence/railing"),
drawtype = "fencelike",
tiles = {"homedecor_tile_brass.png"},
inventory_image = "homedecor_fence_brass.png",
paramtype = "light",
selection_box = {
type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
},
selection_box = homedecor.nodebox.bar_y(1/7),
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
})
minetest.register_node("homedecor:fence_wrought_iron", {
homedecor.register("fence_wrought_iron", {
description = S("Wrought Iron Fence/railing"),
drawtype = "fencelike",
tiles = {"homedecor_tile_wrought_iron.png"},
inventory_image = "homedecor_fence_wrought_iron.png",
paramtype = "light",
selection_box = {
type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
},
selection_box = homedecor.nodebox.bar_y(1/7),
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
})
-- brass/wrought iron with signs:
minetest.register_node("homedecor:fence_brass_with_sign", {
homedecor.register("fence_brass_with_sign", {
description = S("Brass Fence/railing with sign"),
drawtype = "nodebox",
tiles = {
"homedecor_sign_brass_post_top.png",
"homedecor_sign_brass_post_bottom.png",
@ -60,12 +49,9 @@ minetest.register_node("homedecor:fence_brass_with_sign", {
"homedecor_sign_brass_post_front.png",
},
wield_image = "homedecor_sign_brass_post.png",
paramtype = "light",
paramtype2 = "facedir",
node_box = sign_post_model,
groups = {snappy=3,not_in_creative_inventory=1},
sounds = default.node_sound_wood_defaults(),
walkable = true,
sunlight_propagates = true,
drop = {
max_items = 2,
@ -76,9 +62,8 @@ minetest.register_node("homedecor:fence_brass_with_sign", {
},
})
minetest.register_node("homedecor:fence_wrought_iron_with_sign", {
homedecor.register("fence_wrought_iron_with_sign", {
description = S("Wrought Iron Fence/railing with sign"),
drawtype = "nodebox",
tiles = {
"homedecor_sign_wrought_iron_post_top.png",
"homedecor_sign_wrought_iron_post_bottom.png",
@ -88,12 +73,9 @@ minetest.register_node("homedecor:fence_wrought_iron_with_sign", {
"homedecor_sign_wrought_iron_post_front.png",
},
wield_image = "homedecor_sign_wrought_iron_post.png",
paramtype = "light",
paramtype2 = "facedir",
node_box = sign_post_model,
groups = {snappy=3,not_in_creative_inventory=1},
sounds = default.node_sound_wood_defaults(),
walkable = true,
sunlight_propagates = true,
drop = {
max_items = 2,
@ -106,10 +88,9 @@ minetest.register_node("homedecor:fence_wrought_iron_with_sign", {
-- other types of fences
minetest.register_node("homedecor:fence_picket", {
drawtype = "nodebox",
description = S("Unpainted Picket Fence"),
tiles = {
homedecor.register("fence_picket", {
description = S("Unpainted Picket Fence"),
tiles = {
"homedecor_blanktile.png",
"homedecor_blanktile.png",
"homedecor_fence_picket.png",
@ -117,24 +98,19 @@ minetest.register_node("homedecor:fence_picket", {
"homedecor_fence_picket_backside.png",
"homedecor_fence_picket.png"
},
paramtype = "light",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }
},
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }
},
})
minetest.register_node("homedecor:fence_picket_corner", {
drawtype = "nodebox",
homedecor.register("fence_picket_corner", {
description = S("Unpainted Picket Fence Corner"),
tiles = {
"homedecor_blanktile.png",
@ -144,12 +120,8 @@ minetest.register_node("homedecor:fence_picket_corner", {
"homedecor_fence_picket_backside.png",
"homedecor_fence_picket.png",
},
paramtype = "light",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = {
@ -166,10 +138,9 @@ minetest.register_node("homedecor:fence_picket_corner", {
},
})
minetest.register_node("homedecor:fence_picket_white", {
drawtype = "nodebox",
description = S("White Picket Fence"),
tiles = {
homedecor.register("fence_picket_white", {
description = S("White Picket Fence"),
tiles = {
"homedecor_blanktile.png",
"homedecor_blanktile.png",
"homedecor_fence_picket_white.png",
@ -177,24 +148,19 @@ minetest.register_node("homedecor:fence_picket_white", {
"homedecor_fence_picket_white_backside.png",
"homedecor_fence_picket_white.png"
},
paramtype = "light",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }
},
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }
},
})
minetest.register_node("homedecor:fence_picket_corner_white", {
drawtype = "nodebox",
homedecor.register("fence_picket_corner_white", {
description = S("White Picket Fence Corner"),
tiles = {
"homedecor_blanktile.png",
@ -204,12 +170,8 @@ minetest.register_node("homedecor:fence_picket_corner_white", {
"homedecor_fence_picket_white_backside.png",
"homedecor_fence_picket_white.png",
},
paramtype = "light",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = {
@ -226,10 +188,9 @@ minetest.register_node("homedecor:fence_picket_corner_white", {
},
})
minetest.register_node("homedecor:fence_privacy", {
drawtype = "nodebox",
description = S("Wooden Privacy Fence"),
tiles = {
homedecor.register("fence_privacy", {
description = S("Wooden Privacy Fence"),
tiles = {
"homedecor_fence_privacy_tb.png",
"homedecor_fence_privacy_tb.png",
"homedecor_fence_privacy_sides.png",
@ -237,31 +198,26 @@ minetest.register_node("homedecor:fence_privacy", {
"homedecor_fence_privacy_backside.png",
"homedecor_fence_privacy_front.png"
},
paramtype = "light",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 5/16, 0.5, 0.5, 8/16 }
},
node_box = {
type = "fixed",
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 5/16, 0.5, 0.5, 8/16 }
},
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, 5/16, -5/16, 8/16, 7/16 }, -- left part
{ -4/16, -8/16, 5/16, 3/16, 8/16, 7/16 }, -- middle part
{ 4/16, -8/16, 5/16, 8/16, 8/16, 7/16 }, -- right part
{ -8/16, -2/16, 7/16, 8/16, 2/16, 8/16 }, -- connecting rung
}
},
},
})
minetest.register_node("homedecor:fence_privacy_corner", {
drawtype = "nodebox",
description = S("Wooden Privacy Fence Corner"),
tiles = {
homedecor.register("fence_privacy_corner", {
description = S("Wooden Privacy Fence Corner"),
tiles = {
"homedecor_fence_privacy_corner_top.png",
"homedecor_fence_privacy_corner_bottom.png",
"homedecor_fence_privacy_corner_right.png",
@ -269,21 +225,17 @@ minetest.register_node("homedecor:fence_privacy_corner", {
"homedecor_fence_privacy_backside.png",
"homedecor_fence_privacy_corner_front.png"
},
paramtype = "light",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = {
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, 5/16, 0.5, 0.5, 0.5 },
{ -0.5, -0.5, -0.5, -5/16, 0.5, 5/16 },
}
},
node_box = {
type = "fixed",
}
},
node_box = {
type = "fixed",
fixed = {
{ -7/16, -8/16, 5/16, -5/16, 8/16, 7/16 }, -- left part
{ -4/16, -8/16, 5/16, 3/16, 8/16, 7/16 }, -- middle part
@ -295,54 +247,44 @@ minetest.register_node("homedecor:fence_privacy_corner", {
{ -7/16, -8/16, -8/16, -5/16, 8/16, -5/16 }, -- front-most part
{ -8/16, -2/16, -8/16, -7/16, 2/16, 7/16 }, -- left-side connecting rung
}
},
},
})
minetest.register_node("homedecor:fence_barbed_wire", {
drawtype = "nodebox",
description = S("Barbed Wire Fence"),
tiles = {"homedecor_fence_barbed_wire.png"},
paramtype = "light",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.375, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
homedecor.register("fence_barbed_wire", {
description = S("Barbed Wire Fence"),
tiles = {"homedecor_fence_barbed_wire.png"},
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.375, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 }, -- left post
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
{ -6/16, -8/16, 7/16, 6/16, 8/16, 7/16 } -- the wire
}
},
}
},
})
minetest.register_node("homedecor:fence_barbed_wire_corner", {
drawtype = "nodebox",
description = S("Barbed Wire Fence Corner"),
tiles = {
homedecor.register("fence_barbed_wire_corner", {
description = S("Barbed Wire Fence Corner"),
tiles = {
"homedecor_fence_barbed_wire.png"
},
paramtype = "light",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = {
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, 0.375, 0.5, 0.5, 0.5 },
{ -0.5, -0.5, -0.5, -0.375, 0.5, 0.375 }
{ -0.5, -0.5, -0.5, -0.375, 0.5, 0.375 }
}
},
node_box = {
type = "fixed",
},
node_box = {
type = "fixed",
fixed = {
{ -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
@ -350,14 +292,13 @@ minetest.register_node("homedecor:fence_barbed_wire_corner", {
{ -8/16, -8/16, -8/16, -6/16, 8/16, -6/16 }, -- front post
{ -7/16, -8/16, -6/16, -7/16, 8/16, 6/16 } -- more wire
}
},
}
},
})
minetest.register_node("homedecor:fence_chainlink", {
drawtype = "nodebox",
description = S("Chainlink Fence"),
tiles = {
homedecor.register("fence_chainlink", {
description = S("Chainlink Fence"),
tiles = {
"homedecor_fence_chainlink_tb.png",
"homedecor_fence_chainlink_tb.png",
"homedecor_fence_chainlink_sides.png",
@ -365,30 +306,25 @@ minetest.register_node("homedecor:fence_chainlink", {
"homedecor_fence_chainlink_fb.png",
"homedecor_fence_chainlink_fb.png",
},
paramtype = "light",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.375, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.375, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, 6/16, -7/16, 8/16, 8/16 }, -- left post
{ 7/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
}
},
}
},
})
minetest.register_node("homedecor:fence_chainlink_corner", {
drawtype = "nodebox",
homedecor.register("fence_chainlink_corner", {
description = S("Chainlink Fence Corner"),
tiles = {
"homedecor_fence_chainlink_corner_top.png",
@ -398,12 +334,8 @@ minetest.register_node("homedecor:fence_chainlink_corner", {
"homedecor_fence_chainlink_corner_front.png",
"homedecor_fence_chainlink_corner_front.png",
},
paramtype = "light",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = {
@ -427,10 +359,9 @@ minetest.register_node("homedecor:fence_chainlink_corner", {
},
})
minetest.register_node("homedecor:fence_wrought_iron_2", {
drawtype = "nodebox",
description = S("Wrought Iron fence (type 2)"),
tiles = {
homedecor.register("fence_wrought_iron_2", {
description = S("Wrought Iron fence (type 2)"),
tiles = {
"homedecor_fence_wrought_iron_2_tb.png",
"homedecor_fence_wrought_iron_2_tb.png",
"homedecor_fence_wrought_iron_2_sides.png",
@ -438,18 +369,14 @@ minetest.register_node("homedecor:fence_wrought_iron_2", {
"homedecor_fence_wrought_iron_2_fb.png",
"homedecor_fence_wrought_iron_2_fb.png"
},
paramtype = "light",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.42, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.42, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, 14/32, -7.75/16, 8/16, 16/32 }, -- left post
{ 7.75/16, -8/16, 14/32, 8/16, 8/16, 16/32 }, -- right post
@ -458,12 +385,11 @@ minetest.register_node("homedecor:fence_wrought_iron_2", {
{ -0.015625, -8/16, 14.75/32, 0.015625, 8/16, 15.25/32 }, -- cross piece
{ -8/16, -8/16, 14/32, 8/16, -7.75/16, 16/32 }, -- bottom piece
{ -8/16, -8/16, 15/32, 8/16, 8/16, 15/32 } -- the grid itself
}
},
}
},
})
minetest.register_node("homedecor:fence_wrought_iron_2_corner", {
drawtype = "nodebox",
homedecor.register("fence_wrought_iron_2_corner", {
description = S("Wrought Iron fence (type 2) Corner"),
tiles = {
"homedecor_fence_corner_wrought_iron_2_tb.png",
@ -473,12 +399,8 @@ minetest.register_node("homedecor:fence_wrought_iron_2_corner", {
"homedecor_fence_corner_wrought_iron_2_fb.png^[transformFX",
"homedecor_fence_corner_wrought_iron_2_fb.png"
},
paramtype = "light",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = {

View File

@ -13,28 +13,25 @@ for _, i in ipairs(table_colors) do
desc = S("Table")
end
minetest.register_node("homedecor:table"..color, {
homedecor.register("table"..color, {
description = desc,
tiles = { "forniture_wood"..color..".png" },
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{ -0.4, -0.5, -0.4, -0.3, 0.4, -0.3 },
{ 0.3, -0.5, -0.4, 0.4, 0.4, -0.3 },
{ -0.4, -0.5, 0.3, -0.3, 0.4, 0.4 },
{ 0.3, -0.5, 0.3, 0.4, 0.4, 0.4 },
{ -0.5, 0.4, -0.5, 0.5, 0.5, 0.5 },
{ -0.4, -0.2, -0.3, -0.3, -0.1, 0.3 },
{ 0.3, -0.2, -0.4, 0.4, -0.1, 0.3 },
{ -0.3, -0.2, -0.4, 0.4, -0.1, -0.3 },
{ -0.3, -0.2, 0.3, 0.3, -0.1, 0.4 },
},
type = "fixed",
fixed = {
{ -0.4, -0.5, -0.4, -0.3, 0.4, -0.3 },
{ 0.3, -0.5, -0.4, 0.4, 0.4, -0.3 },
{ -0.4, -0.5, 0.3, -0.3, 0.4, 0.4 },
{ 0.3, -0.5, 0.3, 0.4, 0.4, 0.4 },
{ -0.5, 0.4, -0.5, 0.5, 0.5, 0.5 },
{ -0.4, -0.2, -0.3, -0.3, -0.1, 0.3 },
{ 0.3, -0.2, -0.4, 0.4, -0.1, 0.3 },
{ -0.3, -0.2, -0.4, 0.4, -0.1, -0.3 },
{ -0.3, -0.2, 0.3, 0.3, -0.1, 0.4 },
},
},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
})
})
end
local chaircolors = {
@ -52,7 +49,7 @@ for i in ipairs(chaircolors) do
local color = "_"..chaircolors[i][1]
local color2 = chaircolors[i][1]
local name = S(chaircolors[i][2])
local chairtiles = {
local chairtiles = {
"forniture_kitchen_chair_top"..color..".png",
"forniture_wood.png",
"forniture_kitchen_chair_sides"..color..".png",
@ -60,43 +57,37 @@ for i in ipairs(chaircolors) do
"forniture_kitchen_chair_back"..color..".png",
"forniture_kitchen_chair_front"..color..".png",
}
if chaircolors[i][1] == "" then
if chaircolors[i][1] == "" then
color = ""
chairtiles = { "forniture_wood.png" }
end
minetest.register_node("homedecor:chair"..color, {
description = S("Kitchen chair (%s)"):format(name),
homedecor.register("chair"..color, {
description = S("Kitchen chair (%s)"):format(name),
tiles = chairtiles,
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
type = "fixed",
fixed = {
{-0.3125, -0.5, 0.1875, -0.1875, 0.5, 0.3125},
{0.1875, -0.5, 0.1875, 0.3125, 0.5, 0.3125},
{-0.3125, -0.5, -0.3125, -0.1875, 0, -0.1875},
{0.1875, -0.5, -0.3125, 0.3125, 0, -0.1875},
{-0.3125, -0.125, -0.3125, 0.3125, 0, 0.3125},
{-0.25, 0.0625, 0.25, 0.25, 0.4375, 0.25},
},
},
},
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3},
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3},
},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
})
if color ~= "" then
minetest.register_node("homedecor:armchair"..color, {
if color ~= "" then
homedecor.register("armchair"..color, {
description = S("Armchair (%s)"):format(name),
tiles = { "forniture_armchair_top"..color..".png" },
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
@ -137,11 +128,11 @@ minetest.register_node(":homedecor:openframe_bookshelf", {
drawtype = "mesh",
mesh = "homedecor_openframe_bookshelf.obj",
tiles = { "homedecor_openframe_bookshelf.png" },
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = false,
groups = {choppy=3,oddly_breakable_by_hand=2,flammable=3},
sounds = default.node_sound_wood_defaults(),
paramtype = "light",
paramtype2 = "facedir",
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0, 0.5, 0.5, 0.5 }
@ -179,12 +170,12 @@ local function bed_extension(pos, color)
end
end
if string.find(bottomnode.name, "homedecor:bed_.*_foot$") then
if string.find(bottomnode.name, "homedecor:bed_.*_foot$") then
if fdir == bottomnode.param2 then
local newnode = string.gsub(bottomnode.name, "_foot", "_footext")
minetest.set_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newnode, param2 = fdir})
minetest.set_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newnode, param2 = fdir})
end
end
end
end
local function unextend_bed(pos, color)
@ -197,8 +188,8 @@ local function unextend_bed(pos, color)
end
for _, color in ipairs(bedcolors) do
minetest.register_node("homedecor:bed_"..color.."_head", {
homedecor.register("bed_"..color.."_head", {
tiles = {
"homedecor_bed_"..color.."_top1.png",
"homedecor_bed_bottom1.png",
@ -207,9 +198,6 @@ for _, color in ipairs(bedcolors) do
"homedecor_bed_head1.png",
"homedecor_bed_"..color.."_head2.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3, not_in_creative_inventory=1},
node_box = {
type = "fixed",
@ -224,13 +212,10 @@ for _, color in ipairs(bedcolors) do
{-0.3125, -0.125, 0.0625, 0.3125, 0.0625, 0.4375}, -- NodeBox8
}
},
selection_box = {
type = "fixed",
fixed = { 0, 0, 0, 0, 0, 0 }
}
selection_box = homedecor.nodebox.null
})
minetest.register_node("homedecor:bed_"..color.."_foot", {
homedecor.register("bed_"..color.."_foot", {
tiles = {
"homedecor_bed_"..color.."_top2.png",
"homedecor_bed_bottom2.png",
@ -241,9 +226,6 @@ for _, color in ipairs(bedcolors) do
},
inventory_image = "homedecor_bed_"..color.."_inv.png",
description = S("Bed (%s)"):format(color),
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
node_box = {
type = "fixed",
@ -262,24 +244,13 @@ for _, color in ipairs(bedcolors) do
on_construct = function(pos)
bed_extension(pos, color)
end,
on_place = function(itemstack, placer, pointed_thing)
return homedecor.stack_sideways(itemstack, placer, pointed_thing,
"homedecor:bed_"..color.."_foot", "homedecor:bed_"..color.."_head", false)
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local fdir = oldnode.param2
if not fdir or fdir > 3 then return end
local pos2 = { x = pos.x + homedecor.fdir_to_fwd[fdir+1][1], y=pos.y, z = pos.z + homedecor.fdir_to_fwd[fdir+1][2] }
if minetest.get_node(pos2).name == "homedecor:bed_"..color.."_head" then
minetest.remove_node(pos2)
end
expand = { forward = "homedecor:bed_"..color.."_head" },
after_unexpand = function(pos)
unextend_bed(pos, color)
end
end,
})
minetest.register_node("homedecor:bed_"..color.."_footext", {
homedecor.register("bed_"..color.."_footext", {
tiles = {
"homedecor_bed_"..color.."_top2.png",
"homedecor_bed_bottom2.png",
@ -288,9 +259,6 @@ for _, color in ipairs(bedcolors) do
"homedecor_bed_foot2ext.png",
"homedecor_bed_"..color.."_foot1ext.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3, not_in_creative_inventory=1},
node_box = {
type = "fixed",
@ -306,21 +274,16 @@ for _, color in ipairs(bedcolors) do
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 1.5 }
},
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local fdir = oldnode.param2
if not fdir or fdir > 3 then return end
local pos2 = { x = pos.x + homedecor.fdir_to_fwd[fdir+1][1], y=pos.y, z = pos.z + homedecor.fdir_to_fwd[fdir+1][2] }
if minetest.get_node(pos2).name == "homedecor:bed_"..color.."_head" then
minetest.remove_node(pos2)
end
expand = { forward = "homedecor:bed_"..color.."_head" },
after_unexpand = function(pos)
unextend_bed(pos, color)
end,
drop = "homedecor:bed_"..color.."_foot"
})
end
minetest.register_node("homedecor:wardrobe_top", {
homedecor.register("wardrobe_top", {
tiles = {
"forniture_wood.png",
"forniture_wood.png",
@ -329,9 +292,6 @@ minetest.register_node("homedecor:wardrobe_top", {
"forniture_wood.png^[transformR90",
"homedecor_wardrobe_frontt.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3, not_in_creative_inventory=1},
node_box = {
type = "fixed",
@ -341,13 +301,10 @@ minetest.register_node("homedecor:wardrobe_top", {
{-0.4375, -0.4375, -0.5, -0.0625, 0.4375, -0.4375}, -- NodeBox3
}
},
selection_box = {
type = "fixed",
fixed = { 0, 0, 0, 0, 0, 0 }
},
selection_box = homedecor.nodebox.null,
})
minetest.register_node("homedecor:wardrobe_bottom", {
homedecor.register("wardrobe_bottom", {
tiles = {
"forniture_wood.png",
"forniture_wood.png^[transformR180",
@ -358,10 +315,7 @@ minetest.register_node("homedecor:wardrobe_bottom", {
},
inventory_image = "homedecor_wardrobe_inv.png",
description = "Wardrobe",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
groups = {snappy=3},
node_box = {
type = "fixed",
fixed = {
@ -375,52 +329,14 @@ minetest.register_node("homedecor:wardrobe_bottom", {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 }
},
on_place = function(itemstack, placer, pointed_thing)
return homedecor.stack_vertically(itemstack, placer, pointed_thing,
"homedecor:wardrobe_bottom", "homedecor:wardrobe_top")
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local pos2 = { x = pos.x, y=pos.y + 1, z = pos.z }
if minetest.get_node(pos2).name == "homedecor:wardrobe_top" then
minetest.remove_node(pos2)
end
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"size[8,8]"..
"list[current_name;main;0,0;8,3;]"..
"list[current_player;main;0,4;8,4;]")
meta:set_string("infotext", S("Wardrobe cabinet"))
local inv = meta:get_inventory()
inv:set_size("main", 24)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", S("%s moves stuff in wardrobe at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", S("%s moves stuff to wardrobe at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", S("%s takes stuff from wardrobe at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
expand = { top="homedecor:wardrobe_top" },
infotext = S("Wardrobe cabinet"),
inventory = {
size=24,
},
})
minetest.register_node("homedecor:simple_bench", {
homedecor.register("simple_bench", {
tiles = {
"homedecor_generic_wood.png",
"homedecor_generic_wood.png",
@ -430,22 +346,18 @@ minetest.register_node("homedecor:simple_bench", {
"homedecor_bench_large_2_left_back.png^[transformFX"
},
description = "Simple Bench",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
groups = {snappy=3},
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.15, 0, 0.5, -0.05, 0.4},
{-0.4, -0.5, 0.1, -0.3, -0.15, 0.3},
{ 0.3, -0.5, 0.1, 0.4, -0.15, 0.3},
}
{-0.5, -0.15, 0, 0.5, -0.05, 0.4},
{-0.4, -0.5, 0.1, -0.3, -0.15, 0.3},
{ 0.3, -0.5, 0.1, 0.4, -0.15, 0.3},
}
},
})
minetest.register_node("homedecor:bench_large_1_left", {
homedecor.register("bench_large_1_left", {
description = "Garden Bench (style 1)",
tiles = {
"homedecor_bench_large_1_left_top.png",
@ -456,9 +368,6 @@ minetest.register_node("homedecor:bench_large_1_left", {
"homedecor_bench_large_1_left_front.png"
},
inventory_image = "homedecor_bench_large_1_inv.png",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
node_box = {
type = "fixed",
@ -476,21 +385,10 @@ minetest.register_node("homedecor:bench_large_1_left", {
type = "fixed",
fixed = { -0.5, -0.5, -0.09375, 1.5, 0.5, 0.5 }
},
on_place = function(itemstack, placer, pointed_thing)
return homedecor.stack_sideways(itemstack, placer, pointed_thing,
"homedecor:bench_large_1_left", "homedecor:bench_large_1_right", true)
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local fdir = oldnode.param2
if not fdir or fdir > 3 then return end
local pos2 = { x = pos.x + homedecor.fdir_to_right[fdir+1][1], y=pos.y, z = pos.z + homedecor.fdir_to_right[fdir+1][2] }
if minetest.get_node(pos2).name == "homedecor:bench_large_1_right" then
minetest.remove_node(pos2)
end
end
expand = { right="homedecor:bench_large_1_right" },
})
minetest.register_node("homedecor:bench_large_1_right", {
homedecor.register("bench_large_1_right", {
tiles = {
"homedecor_bench_large_1_left_top.png^[transformFX",
"homedecor_bench_large_1_left_bottom.png^[transformFX",
@ -499,9 +397,6 @@ minetest.register_node("homedecor:bench_large_1_right", {
"homedecor_bench_large_1_left_back.png^[transformFX",
"homedecor_bench_large_1_left_front.png^[transformFX"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
node_box = {
type = "fixed",
@ -515,14 +410,11 @@ minetest.register_node("homedecor:bench_large_1_right", {
{0.25, -0.5, -0.0625, 0.3125, -0.25, 0}, -- NodeBox7
}
},
selection_box = {
type = "fixed",
fixed = { 0, 0, 0, 0, 0, 0 }
},
selection_box = homedecor.nodebox.null,
})
minetest.register_node("homedecor:bench_large_2_left", {
homedecor.register("bench_large_2_left", {
description = "Garden Bench (style 2)",
tiles = {
"homedecor_generic_wood.png",
@ -533,9 +425,6 @@ minetest.register_node("homedecor:bench_large_2_left", {
"homedecor_bench_large_2_left_back.png^[transformFX"
},
inventory_image = "homedecor_bench_large_2_inv.png",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
node_box = {
type = "fixed",
@ -562,21 +451,10 @@ minetest.register_node("homedecor:bench_large_2_left", {
type = "fixed",
fixed = { -0.5, -0.5, -0.15625, 1.5, 0.5, 0.5 }
},
on_place = function(itemstack, placer, pointed_thing)
return homedecor.stack_sideways(itemstack, placer, pointed_thing,
"homedecor:bench_large_2_left", "homedecor:bench_large_2_right", true)
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local fdir = oldnode.param2
if not fdir or fdir > 3 then return end
local pos2 = { x = pos.x + homedecor.fdir_to_right[fdir+1][1], y=pos.y, z = pos.z + homedecor.fdir_to_right[fdir+1][2] }
if minetest.get_node(pos2).name == "homedecor:bench_large_2_right" then
minetest.remove_node(pos2)
end
end
expand = { right="homedecor:bench_large_2_right" },
})
minetest.register_node("homedecor:bench_large_2_right", {
homedecor.register("bench_large_2_right", {
tiles = {
"homedecor_generic_wood.png",
"homedecor_generic_wood.png",
@ -585,9 +463,6 @@ minetest.register_node("homedecor:bench_large_2_right", {
"homedecor_bench_large_2_right_back.png",
"homedecor_bench_large_2_right_back.png^[transformFX"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
node_box = {
type = "fixed",
@ -610,13 +485,10 @@ minetest.register_node("homedecor:bench_large_2_right", {
{-0.5, -0.25, -0.0290173, 0.5, -0.125, 0.0125346}, -- NodeBox16
}
},
selection_box = {
type = "fixed",
fixed = { 0, 0, 0, 0, 0, 0 }
},
selection_box = homedecor.nodebox.null,
})
minetest.register_node("homedecor:deckchair_head", {
homedecor.register("deckchair_head", {
tiles = {
"homedecor_deckchair_top_c1.png",
"homedecor_deckchair_sides.png",
@ -625,10 +497,7 @@ minetest.register_node("homedecor:deckchair_head", {
"homedecor_deckchair_sides.png",
"homedecor_deckchair_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = { snappy = 3, not_in_creative_inventory = 1 },
groups = { snappy = 3, not_in_creative_inventory = 1 },
node_box = {
type = "fixed",
fixed = {
@ -648,13 +517,10 @@ minetest.register_node("homedecor:deckchair_head", {
{-0.375, -0.5, 0, -0.3125, -0.25, 0.0625}, -- NodeBox14
}
},
selection_box = {
type = "fixed",
fixed = { 0, 0, 0, 0, 0, 0 }
}
selection_box = homedecor.nodebox.null
})
minetest.register_node("homedecor:deckchair_foot", {
homedecor.register("deckchair_foot", {
tiles = {
"homedecor_deckchair_top_c2.png",
"homedecor_deckchair_sides.png",
@ -664,10 +530,7 @@ minetest.register_node("homedecor:deckchair_foot", {
},
description = "Deck chair",
inventory_image = "homedecor_deckchair_inv.png",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = { snappy = 3 },
groups = { snappy = 3 },
node_box = {
type = "fixed",
fixed = {
@ -684,28 +547,14 @@ minetest.register_node("homedecor:deckchair_foot", {
type = "fixed",
fixed = { -0.45, -0.5, -0.5, 0.45, 0.35, 1.5 }
},
on_place = function(itemstack, placer, pointed_thing)
return homedecor.stack_sideways(itemstack, placer, pointed_thing,
"homedecor:deckchair_foot", "homedecor:deckchair_head", false)
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local fdir = oldnode.param2
if not fdir or fdir > 3 then return end
local pos2 = { x = pos.x + homedecor.fdir_to_fwd[fdir+1][1], y=pos.y, z = pos.z + homedecor.fdir_to_fwd[fdir+1][2] }
if minetest.get_node(pos2).name == "homedecor:deckchair_head" then
minetest.remove_node(pos2)
end
end
expand = { forward="homedecor:deckchair_head" },
})
minetest.register_node("homedecor:wall_shelf", {
homedecor.register("wall_shelf", {
description = "Wall Shelf",
tiles = {
"homedecor_wood_table_large_edges.png",
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = { snappy = 3 },
node_box = {
type = "fixed",
@ -716,7 +565,7 @@ minetest.register_node("homedecor:wall_shelf", {
}
})
minetest.register_node("homedecor:grandfather_clock_bottom", {
homedecor.register("grandfather_clock_bottom", {
description = "Grandfather Clock",
tiles = {
"homedecor_grandfather_clock_sides.png",
@ -727,9 +576,6 @@ minetest.register_node("homedecor:grandfather_clock_bottom", {
"homedecor_grandfather_clock_bottom.png"
},
inventory_image = "homedecor_grandfather_clock_inv.png",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = { snappy = 3 },
node_box = {
type = "fixed",
@ -744,19 +590,10 @@ minetest.register_node("homedecor:grandfather_clock_bottom", {
type = "fixed",
fixed = { -0.4, -0.5, -0.4, 0.4, 1.5, 0.4 }
},
on_place = function(itemstack, placer, pointed_thing)
return homedecor.stack_vertically(itemstack, placer, pointed_thing,
"homedecor:grandfather_clock_bottom", "homedecor:grandfather_clock_top")
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local pos2 = { x = pos.x, y=pos.y + 1, z = pos.z }
if minetest.get_node(pos2).name == "homedecor:grandfather_clock_top" then
minetest.remove_node(pos2)
end
end,
expand = { top="homedecor:grandfather_clock_top" },
})
minetest.register_node("homedecor:grandfather_clock_top", {
homedecor.register("grandfather_clock_top", {
tiles = {
"homedecor_grandfather_clock_sides.png",
"homedecor_grandfather_clock_sides.png",
@ -765,9 +602,6 @@ minetest.register_node("homedecor:grandfather_clock_top", {
"homedecor_grandfather_clock_sides.png",
"homedecor_grandfather_clock_top.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = { snappy = 3, not_in_creative_inventory=1 },
node_box = {
type = "fixed",
@ -778,10 +612,7 @@ minetest.register_node("homedecor:grandfather_clock_top", {
{-0.3125, -0.5, -0.3125, 0.3125, 0.5, 0.4}, -- NodeBox4
}
},
selection_box = {
type = "fixed",
fixed = { 0, 0, 0, 0, 0, 0 }
},
selection_box = homedecor.nodebox.null,
})
-- Aliases for 3dforniture mod.

View File

@ -1,203 +0,0 @@
local S = homedecor.gettext
minetest.register_node("homedecor:toilet", {
description = S("Toilet"),
tiles = { "forniture_marble.png" },
drawtype = "nodebox",
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{ -0.20, -0.50, -0.20, 0.20, -0.45, 0.50, },
{ -0.10, -0.45, -0.10, 0.10, 0.00, 0.50, },
{ -0.30, -0.20, -0.30, 0.30, 0.00, 0.35, },
{ -0.25, 0.00, -0.25, 0.25, 0.05, 0.25, },
{ -0.30, 0.00, 0.30, 0.30, 0.40, 0.50, },
{ -0.05, 0.40, 0.35, 0.05, 0.45, 0.45, },
},
},
groups = {cracky=3,},
sounds = default.node_sound_stone_defaults(),
on_punch = function (pos, node, puncher)
node.name = "homedecor:toilet_open"
minetest.set_node(pos, node)
end,
})
minetest.register_node("homedecor:toilet_open", {
tiles = {
"forniture_marble_top_toilet.png",
"forniture_marble.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{ -0.20, -0.50, -0.20, 0.20, -0.45, 0.50, },
{ -0.10, -0.45, -0.10, 0.10, -0.20, 0.50, },
{ -0.10, -0.20, 0.30, 0.10, 0.00, 0.50, },
{ -0.30, -0.20, 0.10, 0.30, 0.00, 0.35, },
{ -0.30, -0.20, -0.30, -0.10, -0.15, 0.10, },
{ -0.10, -0.20, -0.30, 0.10, -0.15, -0.10, },
{ 0.10, -0.20, -0.30, 0.30, -0.15, 0.10, },
{ -0.30, -0.15, -0.30, -0.20, 0.00, 0.10, },
{ -0.20, -0.15, -0.30, 0.20, 0.00, -0.20, },
{ 0.20, -0.15, -0.30, 0.30, 0.00, 0.10, },
{ -0.25, 0.00, 0.20, 0.25, 0.50, 0.25, },
{ -0.30, 0.00, 0.30, 0.30, 0.40, 0.50, },
},
},
drop = "homedecor:toilet",
groups = {cracky = 3,},
--sounds = {dig = "3dforniture_dig_toilet", gain=0.5},
sounds = default.node_sound_stone_defaults(),
on_punch = function (pos, node, puncher)
node.name = "homedecor:toilet"
minetest.set_node(pos, node)
minetest.sound_play("homedecor_toilet_flush", {
pos=pos,
max_hear_distance = 5,
gain = 1,
})
end,
})
--Sink
minetest.register_node("homedecor:sink", {
description = S("Sink"),
tiles = {
"forniture_marble_top_sink.png",
"forniture_marble.png"
},
inventory_image="3dforniture_inv_sink.png",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{ -0.15, 0.35, 0.20, 0.15, 0.40, 0.50, },
{ -0.25, 0.40, 0.40, 0.25, 0.45, 0.50, },
{ -0.25, 0.40, 0.15, -0.15, 0.45, 0.40, },
{ 0.15, 0.40, 0.15, 0.25, 0.45, 0.40, },
{ -0.15, 0.40, 0.15, 0.15, 0.45, 0.20, },
{ -0.30, 0.45, 0.40, 0.30, 0.50, 0.50, },
{ -0.30, 0.45, 0.10, -0.25, 0.50, 0.40, },
{ 0.25, 0.45, 0.10, 0.30, 0.50, 0.40, },
{ -0.25, 0.45, 0.10, 0.25, 0.50, 0.15, },
{-0.1, -0.5, 0.3, 0.1, 0.4, 0.5},
},
},
selection_box = {
type = "fixed",
fixed = {-0.3,-0.5,0.1, 0.3,0.5,0.5},
},
groups = {cracky=2,},
sounds = default.node_sound_stone_defaults(),
})
--Taps
minetest.register_node("homedecor:taps", {
description = S("Taps"),
tiles = { "forniture_metal.png" },
inventory_image="3dforniture_inv_taps.png",
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{ -0.25, -0.450, 0.49, 0.25, -0.30, 0.50, },
{ -0.05, -0.400, 0.25, 0.05, -0.35, 0.50, },
{ -0.05, -0.425, 0.25, 0.05, -0.40, 0.30, },
{ -0.20, -0.400, 0.45, -0.15, -0.35, 0.50, },
{ -0.20, -0.450, 0.40, -0.15, -0.30, 0.45, },
{ -0.25, -0.400, 0.40, -0.10, -0.35, 0.45, },
{ 0.15, -0.400, 0.45, 0.20, -0.35, 0.50, },
{ 0.15, -0.450, 0.40, 0.20, -0.30, 0.45, },
{ 0.10, -0.400, 0.40, 0.25, -0.35, 0.45, },
},
},
selection_box = {
type = "fixed",
fixed = { -0.25, -0.45, 0.25, 0.25, -0.3, 0.5 },
},
groups = {cracky=2,},
sounds = default.node_sound_stone_defaults(),
})
--Shower Tray
minetest.register_node("homedecor:shower_tray", {
description = S("Shower Tray"),
tiles = {
"forniture_marble_base_ducha_top.png",
"forniture_marble.png"
},
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
legacy_facedir_simple = true,
node_box = {
type = "fixed",
fixed = {
{ -0.50, -0.50, -0.50, 0.50, -0.45, 0.50, },
{ -0.50, -0.45, -0.50, 0.50, -0.40, -0.45, },
{ -0.50, -0.45, 0.45, 0.50, -0.40, 0.50, },
{ -0.50, -0.45, -0.45, -0.45, -0.40, 0.45, },
{ 0.45, -0.45, -0.45, 0.50, -0.40, 0.45, },
},
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, -0.4, 0.5 },
},
groups = {cracky=2,},
sounds = default.node_sound_stone_defaults(),
})
--Shower Head
minetest.register_node("homedecor:shower_head", {
description = S("Shower Head"),
tiles = { "forniture_metal.png" },
inventory_image="3dforniture_inv_shower_head.png",
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{ -0.10, -0.50, 0.10, 0.10, -0.40, 0.30, },
{ -0.05, -0.40, 0.15, 0.05, -0.30, 0.25, },
{ -0.05, -0.35, 0.25, 0.05, -0.30, 0.50, },
{ -0.10, -0.40, 0.49, 0.10, -0.25, 0.50, },
},
},
selection_box = {
type = "fixed",
fixed = { -0.1, -0.5, 0.1, 0.1, -0.25, 0.5 },
},
groups = {cracky=2,},
sounds = default.node_sound_stone_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")

View File

@ -1,162 +1,150 @@
local S = homedecor.gettext
minetest.register_node("homedecor:bars", {
description = S("Bars"),
tiles = { "forniture_black_metal.png" },
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{ -0.5, -0.50, -0.10, -0.4, 0.50, 0.10 },
{ -0.1, -0.50, -0.10, 0.1, 0.50, 0.10 },
{ 0.4, -0.50, -0.10, 0.5, 0.50, 0.10 },
{ -0.5, -0.50, -0.05, 0.5, -0.45, 0.05 },
{ -0.5, 0.45, -0.05, 0.5, 0.50, 0.05 },
},
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.1, 0.5, 0.5, 0.1 },
},
groups = {cracky=1},
homedecor.register("bars", {
description = S("Bars"),
tiles = { "forniture_black_metal.png" },
sunlight_propagates = true,
node_box = {
type = "fixed",
fixed = {
{ -0.5, -0.50, -0.10, -0.4, 0.50, 0.10 },
{ -0.1, -0.50, -0.10, 0.1, 0.50, 0.10 },
{ 0.4, -0.50, -0.10, 0.5, 0.50, 0.10 },
{ -0.5, -0.50, -0.05, 0.5, -0.45, 0.05 },
{ -0.5, 0.45, -0.05, 0.5, 0.50, 0.05 },
},
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.1, 0.5, 0.5, 0.1 },
},
groups = {cracky=1},
})
--L Binding Bars
minetest.register_node("homedecor:L_binding_bars", {
description = S("Binding Bars"),
tiles = { "forniture_black_metal.png" },
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{ -0.10, -0.50, -0.50, 0.10, 0.50, -0.40 },
{ -0.15, -0.50, -0.15, 0.15, 0.50, 0.15 },
{ 0.40, -0.50, -0.10, 0.50, 0.50, 0.10 },
{ 0.00, -0.50, -0.05, 0.50, -0.45, 0.05 },
{ -0.05, -0.50, -0.50, 0.05, -0.45, 0.00 },
{ 0.00, 0.45, -0.05, 0.50, 0.50, 0.05 },
{ -0.05, 0.45, -0.50, 0.05, 0.50, 0.00 },
},
},
groups = {cracky=1,}
homedecor.register("L_binding_bars", {
description = S("Binding Bars"),
tiles = { "forniture_black_metal.png" },
sunlight_propagates = true,
node_box = {
type = "fixed",
fixed = {
{ -0.10, -0.50, -0.50, 0.10, 0.50, -0.40 },
{ -0.15, -0.50, -0.15, 0.15, 0.50, 0.15 },
{ 0.40, -0.50, -0.10, 0.50, 0.50, 0.10 },
{ 0.00, -0.50, -0.05, 0.50, -0.45, 0.05 },
{ -0.05, -0.50, -0.50, 0.05, -0.45, 0.00 },
{ 0.00, 0.45, -0.05, 0.50, 0.50, 0.05 },
{ -0.05, 0.45, -0.50, 0.05, 0.50, 0.00 },
},
},
groups = {cracky=1,}
})
minetest.register_node("homedecor:chains", {
description = S("Chains"),
tiles = { "forniture_black_metal.png" },
inventory_image="3dforniture_inv_chains.png",
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{ -0.45, 0.25, 0.45, -0.20, 0.50, 0.50, },
{ -0.35, 0.40, 0.35, -0.30, 0.45, 0.45, },
{ -0.35, 0.30, 0.35, -0.30, 0.35, 0.45, },
{ -0.35, 0.35, 0.30, -0.30, 0.40, 0.35, },
{ -0.40, 0.35, 0.35, -0.25, 0.40, 0.40, },
{ -0.40, 0.15, 0.35, -0.25, 0.20, 0.40, },
{ -0.45, 0.20, 0.35, -0.40, 0.35, 0.40, },
{ -0.25, 0.20, 0.35, -0.20, 0.35, 0.40, },
{ -0.35, 0.20, 0.30, -0.30, 0.25, 0.45, },
{ -0.35, 0.00, 0.30, -0.30, 0.05, 0.45, },
{ -0.35, 0.05, 0.25, -0.30, 0.20, 0.30, },
{ -0.35, 0.05, 0.45, -0.30, 0.20, 0.50, },
{ -0.40, 0.05, 0.35, -0.25, 0.10, 0.40, },
{ -0.40, -0.15, 0.35, -0.25, -0.10, 0.40, },
{ -0.45, -0.10, 0.35, -0.40, 0.05, 0.40, },
{ -0.25, -0.10, 0.35, -0.20, 0.05, 0.40, },
{ -0.35, -0.10, 0.30, -0.30, -0.05, 0.45, },
{ -0.35, -0.30, 0.30, -0.30, -0.25, 0.45, },
{ -0.35, -0.25, 0.25, -0.30, -0.10, 0.30, },
{ -0.35, -0.25, 0.45, -0.30, -0.10, 0.50, },
{ -0.40, -0.25, 0.35, -0.25, -0.20, 0.40, },
{ -0.40, -0.45, 0.35, -0.25, -0.40, 0.40, },
{ -0.45, -0.40, 0.35, -0.40, -0.25, 0.40, },
{ -0.25, -0.40, 0.35, -0.20, -0.25, 0.40, },
{ 0.20, 0.25, 0.45, 0.45, 0.50, 0.50, },
{ 0.30, 0.40, 0.35, 0.35, 0.45, 0.45, },
{ 0.30, 0.30, 0.35, 0.35, 0.35, 0.45, },
{ 0.30, 0.35, 0.30, 0.35, 0.40, 0.35, },
{ 0.25, 0.35, 0.35, 0.40, 0.40, 0.40, },
{ 0.25, 0.15, 0.35, 0.40, 0.20, 0.40, },
{ 0.20, 0.20, 0.35, 0.25, 0.35, 0.40, },
{ 0.40, 0.20, 0.35, 0.45, 0.35, 0.40, },
{ 0.30, 0.20, 0.30, 0.35, 0.25, 0.45, },
{ 0.30, 0.00, 0.30, 0.35, 0.05, 0.45, },
{ 0.30, 0.05, 0.25, 0.35, 0.20, 0.30, },
{ 0.30, 0.05, 0.45, 0.35, 0.20, 0.50, },
{ 0.25, 0.05, 0.35, 0.40, 0.10, 0.40, },
{ 0.25, -0.15, 0.35, 0.40, -0.10, 0.40, },
{ 0.20, -0.10, 0.35, 0.25, 0.05, 0.40, },
{ 0.40, -0.10, 0.35, 0.45, 0.05, 0.40, },
{ 0.30, -0.10, 0.30, 0.35, -0.05, 0.45, },
{ 0.30, -0.30, 0.30, 0.35, -0.25, 0.45, },
{ 0.30, -0.25, 0.25, 0.35, -0.10, 0.30, },
{ 0.30, -0.25, 0.45, 0.35, -0.10, 0.50, },
{ 0.25, -0.25, 0.35, 0.40, -0.20, 0.40, },
{ 0.25, -0.45, 0.35, 0.40, -0.40, 0.40, },
{ 0.20, -0.40, 0.35, 0.25, -0.25, 0.40, },
{ 0.40, -0.40, 0.35, 0.45, -0.25, 0.40, },
},
},
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, 1/4, 1/2, 1/2, 1/2},
},
groups = {cracky=1},
})
homedecor.register("chains", {
description = S("Chains"),
tiles = { "forniture_black_metal.png" },
inventory_image="3dforniture_inv_chains.png",
sunlight_propagates = true,
node_box = {
type = "fixed",
fixed = {
{ -0.45, 0.25, 0.45, -0.20, 0.50, 0.50, },
{ -0.35, 0.40, 0.35, -0.30, 0.45, 0.45, },
{ -0.35, 0.30, 0.35, -0.30, 0.35, 0.45, },
{ -0.35, 0.35, 0.30, -0.30, 0.40, 0.35, },
{ -0.40, 0.35, 0.35, -0.25, 0.40, 0.40, },
{ -0.40, 0.15, 0.35, -0.25, 0.20, 0.40, },
{ -0.45, 0.20, 0.35, -0.40, 0.35, 0.40, },
{ -0.25, 0.20, 0.35, -0.20, 0.35, 0.40, },
{ -0.35, 0.20, 0.30, -0.30, 0.25, 0.45, },
{ -0.35, 0.00, 0.30, -0.30, 0.05, 0.45, },
{ -0.35, 0.05, 0.25, -0.30, 0.20, 0.30, },
{ -0.35, 0.05, 0.45, -0.30, 0.20, 0.50, },
{ -0.40, 0.05, 0.35, -0.25, 0.10, 0.40, },
{ -0.40, -0.15, 0.35, -0.25, -0.10, 0.40, },
{ -0.45, -0.10, 0.35, -0.40, 0.05, 0.40, },
{ -0.25, -0.10, 0.35, -0.20, 0.05, 0.40, },
{ -0.35, -0.10, 0.30, -0.30, -0.05, 0.45, },
{ -0.35, -0.30, 0.30, -0.30, -0.25, 0.45, },
{ -0.35, -0.25, 0.25, -0.30, -0.10, 0.30, },
{ -0.35, -0.25, 0.45, -0.30, -0.10, 0.50, },
{ -0.40, -0.25, 0.35, -0.25, -0.20, 0.40, },
{ -0.40, -0.45, 0.35, -0.25, -0.40, 0.40, },
{ -0.45, -0.40, 0.35, -0.40, -0.25, 0.40, },
{ -0.25, -0.40, 0.35, -0.20, -0.25, 0.40, },
{ 0.20, 0.25, 0.45, 0.45, 0.50, 0.50, },
{ 0.30, 0.40, 0.35, 0.35, 0.45, 0.45, },
{ 0.30, 0.30, 0.35, 0.35, 0.35, 0.45, },
{ 0.30, 0.35, 0.30, 0.35, 0.40, 0.35, },
{ 0.25, 0.35, 0.35, 0.40, 0.40, 0.40, },
{ 0.25, 0.15, 0.35, 0.40, 0.20, 0.40, },
{ 0.20, 0.20, 0.35, 0.25, 0.35, 0.40, },
{ 0.40, 0.20, 0.35, 0.45, 0.35, 0.40, },
{ 0.30, 0.20, 0.30, 0.35, 0.25, 0.45, },
{ 0.30, 0.00, 0.30, 0.35, 0.05, 0.45, },
{ 0.30, 0.05, 0.25, 0.35, 0.20, 0.30, },
{ 0.30, 0.05, 0.45, 0.35, 0.20, 0.50, },
{ 0.25, 0.05, 0.35, 0.40, 0.10, 0.40, },
{ 0.25, -0.15, 0.35, 0.40, -0.10, 0.40, },
{ 0.20, -0.10, 0.35, 0.25, 0.05, 0.40, },
{ 0.40, -0.10, 0.35, 0.45, 0.05, 0.40, },
{ 0.30, -0.10, 0.30, 0.35, -0.05, 0.45, },
{ 0.30, -0.30, 0.30, 0.35, -0.25, 0.45, },
{ 0.30, -0.25, 0.25, 0.35, -0.10, 0.30, },
{ 0.30, -0.25, 0.45, 0.35, -0.10, 0.50, },
{ 0.25, -0.25, 0.35, 0.40, -0.20, 0.40, },
{ 0.25, -0.45, 0.35, 0.40, -0.40, 0.40, },
{ 0.20, -0.40, 0.35, 0.25, -0.25, 0.40, },
{ 0.40, -0.40, 0.35, 0.45, -0.25, 0.40, },
},
},
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, 1/4, 1/2, 1/2, 1/2},
},
groups = {cracky=1},
})
minetest.register_node("homedecor:torch_wall", {
description = S("Wall Torch"),
drawtype = "nodebox",
tiles = {
"forniture_torch_wall_s.png",
"forniture_torch_wall_i.png",
{
name="forniture_torch_wall_anim.png",
animation={
type="vertical_frames",
aspect_w=40,
aspect_h=40,
length=1.0,
},
},
},
inventory_image="3dforniture_inv_torch_wall.png",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{ -0.05, -0.45, 0.45, 0.05, -0.35, 0.50, },
{ -0.05, -0.35, 0.40, 0.05, -0.25, 0.50, },
{ -0.05, -0.25, 0.35, 0.05, -0.15, 0.45, },
{ -0.05, -0.15, 0.30, 0.05, -0.05, 0.40, },
{ -0.05, -0.05, 0.25, 0.05, 0.00, 0.35, },
{ -0.10, 0.00, 0.20, 0.10, 0.05, 0.40, },
{ -0.15, 0.05, 0.15, 0.15, 0.15, 0.45, },
{ -0.10, 0.15, 0.20, 0.10, 0.25, 0.40, },
{ -0.05, 0.25, 0.25, 0.05, 0.35, 0.35, },
},
},
sunlight_propagates = true,
walkable = false,
light_source = 14,
selection_box = {
type = "fixed",
fixed = { -0.15, -0.45, 0.15, 0.15,0.35, 0.5 },
},
groups = {cracky=2},
homedecor.register("torch_wall", {
description = S("Wall Torch"),
tiles = {
"forniture_torch_wall_s.png",
"forniture_torch_wall_i.png",
{
name="forniture_torch_wall_anim.png",
animation={
type="vertical_frames",
aspect_w=40,
aspect_h=40,
length=1.0,
},
},
},
inventory_image="3dforniture_inv_torch_wall.png",
node_box = {
type = "fixed",
fixed = {
{ -0.05, -0.45, 0.45, 0.05, -0.35, 0.50, },
{ -0.05, -0.35, 0.40, 0.05, -0.25, 0.50, },
{ -0.05, -0.25, 0.35, 0.05, -0.15, 0.45, },
{ -0.05, -0.15, 0.30, 0.05, -0.05, 0.40, },
{ -0.05, -0.05, 0.25, 0.05, 0.00, 0.35, },
{ -0.10, 0.00, 0.20, 0.10, 0.05, 0.40, },
{ -0.15, 0.05, 0.15, 0.15, 0.15, 0.45, },
{ -0.10, 0.15, 0.20, 0.10, 0.25, 0.40, },
{ -0.05, 0.25, 0.25, 0.05, 0.35, 0.35, },
},
},
sunlight_propagates = true,
walkable = false,
light_source = 14,
selection_box = {
type = "fixed",
fixed = { -0.15, -0.45, 0.15, 0.15,0.35, 0.5 },
},
groups = {cracky=2},
})
minetest.register_alias("3dforniture:bars", "homedecor:bars")

View File

@ -1,63 +1,63 @@
minetest.register_craft({
output = "homedecor:table", "homedecor:chair 2",
recipe = {
{ "group:wood","group:wood", "group:wood" },
{ "group:stick", "", "group:stick" },
},
output = "homedecor:table", "homedecor:chair 2",
recipe = {
{ "group:wood","group:wood", "group:wood" },
{ "group:stick", "", "group:stick" },
},
})
minetest.register_craft({
type = "shapeless",
output = "homedecor:table_mahogany",
recipe = {
output = "homedecor:table_mahogany",
recipe = {
"homedecor:table",
"dye:brown",
},
},
})
minetest.register_craft({
type = "shapeless",
output = "homedecor:table_mahogany",
recipe = {
output = "homedecor:table_mahogany",
recipe = {
"homedecor:table",
"unifieddyes:dark_orange",
},
},
})
minetest.register_craft({
type = "shapeless",
output = "homedecor:table_white",
recipe = {
output = "homedecor:table_white",
recipe = {
"homedecor:table",
"dye:white",
},
},
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:table",
burntime = 30,
type = "fuel",
recipe = "homedecor:table",
burntime = 30,
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:table_mahogany",
burntime = 30,
type = "fuel",
recipe = "homedecor:table_mahogany",
burntime = 30,
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:table_white",
burntime = 30,
type = "fuel",
recipe = "homedecor:table_white",
burntime = 30,
})
minetest.register_craft({
output = "homedecor:chair 2",
recipe = {
{ "group:stick",""},
{ "group:wood","group:wood" },
{ "group:stick","group:stick" },
{ "group:stick",""},
{ "group:wood","group:wood" },
{ "group:stick","group:stick" },
},
})
@ -98,26 +98,26 @@ for _, color in ipairs(chaircolors) do
end
minetest.register_craft({
type = "fuel",
recipe = "homedecor:armchair",
burntime = 30,
type = "fuel",
recipe = "homedecor:armchair",
burntime = 30,
})
minetest.register_craft({
output = "homedecor:table_lamp_off",
recipe = {
{"default:paper","default:torch" ,"default:paper"},
{"","group:stick",""},
{"","stairs:slab_wood",""},
{"default:paper","default:torch" ,"default:paper"},
{"","group:stick",""},
{"","stairs:slab_wood",""},
},
})
minetest.register_craft({
output = "homedecor:table_lamp_off",
recipe = {
{"default:paper","default:torch" ,"default:paper"},
{"","group:stick",""},
{"","moreblocks:slab_wood",""},
{"default:paper","default:torch" ,"default:paper"},
{"","group:stick",""},
{"","moreblocks:slab_wood",""},
},
})
@ -131,9 +131,9 @@ minetest.register_craft({
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:table_lamp_off",
burntime = 10,
type = "fuel",
recipe = "homedecor:table_lamp_off",
burntime = 10,
})
local lamp_colors = { "blue", "green", "pink", "red", "violet" }
@ -143,18 +143,18 @@ for _, color in ipairs(lamp_colors) do
minetest.register_craft({
output = "homedecor:table_lamp_"..color.."_off",
recipe = {
{"wool:"..color,"default:torch" ,"wool:"..color},
{"","group:stick",""},
{"","stairs:slab_wood",""},
{"wool:"..color,"default:torch" ,"wool:"..color},
{"","group:stick",""},
{"","stairs:slab_wood",""},
},
})
minetest.register_craft({
output = "homedecor:table_lamp_"..color.."_off",
recipe = {
{"wool:"..color,"default:torch" ,"wool:"..color},
{"","group:stick",""},
{"","moreblocks:slab_wood",""},
{"wool:"..color,"default:torch" ,"wool:"..color},
{"","group:stick",""},
{"","moreblocks:slab_wood",""},
},
})
@ -176,9 +176,9 @@ for _, color in ipairs(lamp_colors) do
minetest.register_craft({
output = "homedecor:standing_lamp_bottom_"..color.."_off",
recipe = {
{"homedecor:table_lamp_"..color.."_off"},
{"group:stick"},
{"group:stick"},
{"homedecor:table_lamp_"..color.."_off"},
{"group:stick"},
{"group:stick"},
},
})
@ -194,62 +194,62 @@ for _, color in ipairs(lamp_colors) do
end
minetest.register_craft({
output = "homedecor:toilet",
recipe = {
{"","","bucket:bucket_water"},
{ "building_blocks:Marble","building_blocks:Marble", "building_blocks:Marble" },
{ "", "bucket:bucket_empty", "" },
},
output = "homedecor:toilet",
recipe = {
{"","","bucket:bucket_water"},
{ "building_blocks:Marble","building_blocks:Marble", "building_blocks:Marble" },
{ "", "bucket:bucket_empty", "" },
},
})
minetest.register_craft({
output = "homedecor:sink",
recipe = {
{ "building_blocks:Marble","bucket:bucket_empty", "building_blocks:Marble" },
},
output = "homedecor:sink",
recipe = {
{ "building_blocks:Marble","bucket:bucket_empty", "building_blocks:Marble" },
},
})
minetest.register_craft({
output = "homedecor:taps",
recipe = {
{ "default:steel_ingot","bucket:bucket_water", "default:steel_ingot" },
},
output = "homedecor:taps",
recipe = {
{ "default:steel_ingot","bucket:bucket_water", "default:steel_ingot" },
},
})
minetest.register_craft({
output = "homedecor:shower_tray",
recipe = {
{ "building_blocks:Marble","bucket:bucket_water", "building_blocks:Marble" },
},
output = "homedecor:shower_tray",
recipe = {
{ "building_blocks:Marble","bucket:bucket_water", "building_blocks:Marble" },
},
})
minetest.register_craft({
output = "homedecor:shower_head",
recipe = {
{"default:steel_ingot", "bucket:bucket_water"},
},
output = "homedecor:shower_head",
recipe = {
{"default:steel_ingot", "bucket:bucket_water"},
},
})
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" },
},
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" },
},
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" },
},
output = "homedecor:torch_wall 10",
recipe = {
{ "default:coal_lump" },
{ "default:steel_ingot" },
},
})

View File

@ -0,0 +1,115 @@
local S = homedecor.gettext
-- selects which node was pointed at based on it being known, and either clickable or buildable_to
local function select_node(pointed_thing)
local pos = pointed_thing.under
local def = minetest.registered_nodes[minetest.get_node(pos).name]
if not def or (not def.on_rightclick and not def.buildable_to) then
pos = pointed_thing.above
def = minetest.registered_nodes[minetest.get_node(pos).name]
end
return pos, def
end
-- abstract function checking if 2 given nodes can and may be build to a place
local function is_buildable_to(placer_name, pos, def, pos2)
local def = def or minetest.registered_nodes[minetest.get_node(pos).name]
local def2 = minetest.registered_nodes[minetest.get_node(pos2).name]
return def and def.buildable_to and def2 and def2.buildable_to
and not minetest.is_protected(pos, placer_name)
and not minetest.is_protected(pos2, placer_name)
end
-- place one or two nodes if and only if both can be placed
local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
local placer_name = placer:get_player_name() or ""
if is_buildable_to(placer_name, pos, def, pos2) then
local fdir = fdir or minetest.dir_to_facedir(placer:get_look_dir())
minetest.set_node(pos, { name = node1, param2 = fdir })
node2 = node2 or "air" -- this can be used to clear buildable_to nodes even though we are using a multinode mesh
minetest.set_node(pos2, { name = node2, param2 = (node2 ~= "air" and fdir) or nil })
-- temporary check if this is a locked node to set its infotext
local nodename = itemstack:get_name()
if string.find(nodename, "_locked") then
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer_name)
meta:set_string("infotext", S("Locked %s (owned by %s)"):format(minetest.registered_nodes[nodename].infotext, placer_name))
end
if not homedecor.expect_infinite_stacks then
itemstack:take_item()
return itemstack
end
end
end
-- Stack one node above another
-- leave the last argument nil if it's one 2m high node
function homedecor.stack_vertically(itemstack, placer, pointed_thing, node1, node2)
local pos, def = select_node(pointed_thing)
if def.on_rightclick then
return def.on_rightclick(pointed_thing.under, minetest.get_node(pos), placer, itemstack)
end
local top_pos = { x=pos.x, y=pos.y+1, z=pos.z }
return stack(itemstack, placer, nil, pos, def, top_pos, node1, node2)
end
-- Stack one door node above another
-- like homedecor.stack_vertically but tests first if it was placed as a right wing, then uses node1_right and node2_right instead
local fdir_to_left = {
{ -1, 0 },
{ 0, 1 },
{ 1, 0 },
{ 0, -1 },
}
function homedecor.stack_wing(itemstack, placer, pointed_thing, node1, node2, node1_right, node2_right)
local pos, def = select_node(pointed_thing)
if def.on_rightclick then
return def.on_rightclick(pointed_thing.under, minetest.get_node(pos), placer, itemstack)
end
local forceright = placer:get_player_control()["sneak"]
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local is_right_wing = node1 == minetest.get_node({ x = pos.x + fdir_to_left[fdir+1][1], y=pos.y, z = pos.z + fdir_to_left[fdir+1][2] }).name
if forceright or is_right_wing then
node1, node2 = node1_right, node2_right
end
local top_pos = { x=pos.x, y=pos.y+1, z=pos.z }
return stack(itemstack, placer, fdir, pos, def, top_pos, node1, node2)
end
-- Place one node right of or behind another
homedecor.fdir_to_right = {
{ 1, 0 },
{ 0, -1 },
{ -1, 0 },
{ 0, 1 },
}
homedecor.fdir_to_fwd = {
{ 0, 1 },
{ 1, 0 },
{ 0, -1 },
{ -1, 0 },
}
function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2, dir)
local pos, def = select_node(pointed_thing)
if def.on_rightclick then
return def.on_rightclick(pointed_thing.under, minetest.get_node(pos), placer, itemstack)
end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local fdir_transform = dir and homedecor.fdir_to_right or homedecor.fdir_to_fwd
local pos2 = { x = pos.x + fdir_transform[fdir+1][1], y=pos.y, z = pos.z + fdir_transform[fdir+1][2] }
return stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
end

View File

@ -263,13 +263,13 @@ function homedecor.register_furnace(name, furnacedef)
local srclist = inv:get_list("src")
local cooked = nil
local aftercooked
if srclist then
cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
end
local was_active = false
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
was_active = true
meta:set_float("fuel_time", meta:get_float("fuel_time") + 1)
@ -306,7 +306,7 @@ function homedecor.register_furnace(name, furnacedef)
local cooked = nil
local fuellist = inv:get_list("fuel")
local srclist = inv:get_list("src")
if srclist then
cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
end
@ -345,45 +345,3 @@ function homedecor.register_furnace(name, furnacedef)
})
end
homedecor.register_furnace("homedecor:oven", {
description = S("Oven"),
tile_format = "homedecor_oven_%s%s.png",
output_slots = 4,
output_width = 2,
cook_speed = 1.25,
})
homedecor.register_furnace("homedecor: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("homedecor: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 = {
drawtype = "nodebox",
paramtype = "light",
--paramtype2 = "facedir", -- Not needed, set by register_furnace
node_box = {
type = "fixed",
fixed = { { -0.5, -0.5, -0.125, 0.5, 0.125, 0.5 } },
},
},
})

View File

@ -0,0 +1,161 @@
-- Locked Stuff for Home Decor mod, by Kaeza
--
-- The code is mostly copypasta from default:chest_locked, with a few
-- tidbits to ease creation of new items, should need arise.
local S = homedecor.gettext
--[[
| create_locked ( name, infotext )
|
| Description:
| This function takes a base node name such as "homedecor:refrigerator",
| copies the definition from the original item into a new table, modifies
| it a bit, and registers a new node with a "_locked" suffix such as
| "homedecor:refrigerator_locked". The new node behaves identically to
| the base node, except that moving items to/from the node's inventory
| is only allowed for the original placer. In addition, it register a new
| shapeless recipe for the node, using the base node plus a steel ingot.
|
| Arguments:
| name The base node name
| infotext The infotext description (in case the name is too long).
|
| Example Usage:
| create_locked("homedecor:refrigerator", "Locked Fridge")
| ^ This generates a new "Locked Refrigerator" node, whose infotext is
| "Locked Fridge (owned by <placer>)".
|
| Notes:
| If <infotext> is not specified (or is nil), the infotext will be the
| base node's description prefixed by "Locked ".
|
| The ABM for the locked oven is defined in oven.lua.
]]
local function create_locked ( name, infotext )
local def = { }
for k, v in pairs(minetest.registered_nodes[name]) do
def[k] = v
end
def.type = nil
def.name = nil
def.description = S("%s (Locked)"):format(def.description)
local after_place_node = def.after_place_node
def.after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", S("%s (owned by %s)"):format(infotext,meta:get_string("owner")))
if (after_place_node) then
return after_place_node(pos, placer)
end
end
local allow_metadata_inventory_move = def.allow_metadata_inventory_move;
def.allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
if (player:get_player_name() ~= meta:get_string("owner")) then
minetest.log("action", S("%s tried to access a %s belonging to %s at %s"):format(
player:get_player_name(),
infotext,
meta:get_string("owner"),
minetest.pos_to_string(pos)
))
return 0
end
if (allow_metadata_inventory_move) then
return allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player)
else
return count
end
end
local allow_metadata_inventory_put = def.allow_metadata_inventory_put;
def.allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if (player:get_player_name() ~= meta:get_string("owner")) then
minetest.log("action", S("%s tried to access a %s belonging to %s at %s"):format(
player:get_player_name(),
infotext,
meta:get_string("owner"),
minetest.pos_to_string(pos)
))
return 0
end
if (allow_metadata_inventory_put) then
return allow_metadata_inventory_put(pos, listname, index, stack, player)
else
return stack:get_count()
end
end
local allow_metadata_inventory_take = def.allow_metadata_inventory_take;
def.allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if (player:get_player_name() ~= meta:get_string("owner")) then
minetest.log("action", S("%s tried to access a %s belonging to %s at %s"):format(
player:get_player_name(),
infotext,
meta:get_string("owner"),
minetest.pos_to_string(pos)
))
return 0
end
if (allow_metadata_inventory_take) then
return allow_metadata_inventory_take(pos, listname, index, stack, player)
else
return stack:get_count()
end
end
minetest.register_node(name.."_locked", def)
minetest.register_craft({
output = name.."_locked",
type = "shapeless",
recipe = {
name,
"default:steel_ingot",
}
})
end
local items = {
{ "refrigerator_white_bottom",
"Refrigerator" },
{ "refrigerator_steel_bottom",
"Refrigerator (stainless steel)" },
{ "kitchen_cabinet",
"Cabinet" },
{ "kitchen_cabinet_steel",
"Cabinet (stainless steel top)" },
{ "kitchen_cabinet_granite",
"Cabinet (granite top)" },
{ "kitchen_cabinet_marble",
"Cabinet (marble top)" },
{ "kitchen_cabinet_half",
"Cabinet" },
{ "kitchen_cabinet_with_sink",
"Cabinet" },
{ "nightstand_oak_one_drawer",
"Nightstand" },
{ "nightstand_oak_two_drawers",
"Nightstand" },
{ "nightstand_mahogany_one_drawer",
"Nightstand" },
{ "nightstand_mahogany_two_drawers",
"Nightstand" },
{ "filing_cabinet",
"Filing cabinet" },
{ "oven",
"Oven" },
{ "oven_active",
"Oven (active)" },
{ "oven_steel",
"Oven (stainless steel)" },
{ "oven_steel_active",
"Oven (stainless steel, active)" },
{ "microwave_oven",
"Microwave Oven" },
{ "microwave_oven_active",
"Microwave Oven (active)" },
}
for _,item in ipairs(items) do
local name, info = item[1], item[2];
create_locked("homedecor:"..name, S("Locked "..info));
end

View File

@ -0,0 +1,39 @@
-- please keep any non-generic nodeboxe with its node definition
-- this file should not accumulate any left over nodeboxes
-- but is meant to host any abstractions or calculations based on nodeboxes
-- a box is defined as {x1, y1, z1, x2, y2, z2}
homedecor.box = {
slab_y = function(height, shift) return { -0.5, -0.5+(shift or 0), -0.5, 0.5, -0.5+height+(shift or 0), 0.5 } end,
slab_z = function(depth) return { -0.5, -0.5, -0.5+depth, 0.5, 0.5, 0.5 } end,
bar_y = function(radius) return {-radius, -0.5, -radius, radius, 0.5, radius} end,
cuboid = function(radius_x, radius_y, radius_z) return {-radius_x, -radius_y, -radius_z, radius_x, radius_y, radius_z} end,
}
homedecor.nodebox = {
-- { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 },
-- can be used in-place as:
-- { type="regular" },
regular = { type="regular" },
null = { type = "fixed", fixed = { 0, 0, 0, 0, 0, 0 } },
}
local mt = {}
mt.__index = function(table, key)
local ref = homedecor.box[key]
local ref_type = type(ref)
if ref_type == "function" then
return function(...)
return { type = "fixed", fixed = ref(...) }
end
elseif ref_type == "table" then
return { type = "fixed", fixed = ref }
elseif ref_type == "nil" then
error(key .. "could not be found among nodebox presets and functions")
end
error("unexpected datatype " .. tostring(type(ref)) .. " while looking for " .. key)
end
setmetatable(homedecor.nodebox, mt)

View File

@ -0,0 +1,155 @@
homedecor = homedecor or {}
local S = homedecor.gettext
local default_can_dig = function(pos,player)
local meta = minetest.get_meta(pos)
return meta:get_inventory():is_empty("main")
end
local default_inventory_size = 32
local default_inventory_formspecs = {
["4"]="size[8,6]"..
"list[context;main;2,0;4,1;]"..
"list[current_player;main;0,2;8,4;]",
["6"]="size[8,6]"..
"list[context;main;1,0;6,1;]"..
"list[current_player;main;0,2;8,4;]",
["8"]="size[8,6]"..
"list[context;main;0,0;8,1;]"..
"list[current_player;main;0,2;8,4;]",
["12"]="size[8,7]"..
"list[context;main;1,0;6,2;]"..
"list[current_player;main;0,3;8,4;]",
["16"]="size[8,7]"..
"list[context;main;0,0;8,2;]"..
"list[current_player;main;0,3;8,4;]",
["24"]="size[8,8]"..
"list[context;main;0,0;8,3;]"..
"list[current_player;main;0,4;8,4;]",
["32"]="size[8,9]".. default.gui_bg .. default.gui_bg_img .. default.gui_slots ..
"list[context;main;0,0.3;8,4;]"..
"list[current_player;main;0,4.85;8,1;]"..
"list[current_player;main;0,6.08;8,3;8]"..
default.get_hotbar_bg(0,4.85),
["50"]="size[10,10]"..
"list[context;main;0,0;10,5;]"..
"list[current_player;main;1,6;8,4;]",
}
local function get_formspec_by_size(size)
--TODO heuristic to use the "next best size"
local formspec = default_inventory_formspecs[tostring(size)]
return formspec or default_inventory_formspecs
end
--wrapper around minetest.register_node that sets sane defaults and interprets some specialized settings
function homedecor.register(name, def)
def.paramtype = def.paramtype or "light"
def.paramtype2 = def.paramtype2 or "facedir"
def.drawtype = def.drawtype
or (def.mesh and "mesh")
or (def.node_box and "nodebox")
local infotext = def.infotext
--def.infotext = nil -- currently used to set locked refrigerator infotexts
-- handle inventory setting
-- inventory = {
-- size = 16
-- formspec = …
-- }
local inventory = def.inventory
def.inventory = nil
if inventory then
def.on_construct = def.on_construct or function(pos)
local meta = minetest.get_meta(pos)
if infotext then
meta:set_string("infotext", infotext)
end
local size = inventory.size or default_inventory_size
meta:get_inventory():set_size("main", size)
meta:set_string("formspec", inventory.formspec or get_formspec_by_size(size))
end
def.can_dig = def.can_dig or default_can_dig
def.on_metadata_inventory_move = def.on_metadata_inventory_move or function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", S("%s moves stuff in %s at %s"):format(
player:get_player_name(), name, minetest.pos_to_string(pos)
))
end
def.on_metadata_inventory_put = def.on_metadata_inventory_put or function(pos, listname, index, stack, player)
minetest.log("action", S("%s moves stuff to %s at %s"):format(
player:get_player_name(), name, minetest.pos_to_string(pos)
))
end
def.on_metadata_inventory_take = def.on_metadata_inventory_take or function(pos, listname, index, stack, player)
minetest.log("action", S("%s takes stuff from %s at %s"):format(
player:get_player_name(), name, minetest.pos_to_string(pos)
))
end
elseif infotext and not def.on_construct then
def.on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", infotext)
end
end
local expand = def.expand
def.expand = nil
local after_unexpand = def.after_unexpand
def.after_unexpand = nil
if expand then
def.on_place = def.on_place or function(itemstack, placer, pointed_thing)
if expand.top then
homedecor.stack_vertically(itemstack, placer, pointed_thing, itemstack:get_name(), expand.top)
end
if expand.right then
homedecor.stack_sideways(itemstack, placer, pointed_thing, itemstack:get_name(), expand.right, true)
end
if expand.forward then
homedecor.stack_sideways(itemstack, placer, pointed_thing, itemstack:get_name(), expand.forward, false)
end
end
def.after_dig_node = def.after_dig_node or function(pos, oldnode, oldmetadata, digger)
if expand.top and expand.forward ~= "air" then
local top_pos = { x=pos.x, y=pos.y+1, z=pos.z }
if minetest.get_node(top_pos).name == expand.top then
minetest.remove_node(top_pos)
end
end
local fdir = oldnode.param2
if not fdir or fdir > 3 then return end
if expand.right and expand.forward ~= "air" then
local right_pos = { x=pos.x+homedecor.fdir_to_right[fdir+1][1], y=pos.y, z=pos.z+homedecor.fdir_to_right[fdir+1][2] }
if minetest.get_node(right_pos).name == expand.right then
minetest.remove_node(right_pos)
end
end
if expand.forward and expand.forward ~= "air" then
local forward_pos = { x=pos.x+homedecor.fdir_to_fwd[fdir+1][1], y=pos.y, z=pos.z+homedecor.fdir_to_fwd[fdir+1][2] }
if minetest.get_node(forward_pos).name == expand.forward then
minetest.remove_node(forward_pos)
end
end
if after_unexpand then
after_unexpand(pos)
end
end
end
-- register the actual minetest node
minetest.register_node("homedecor:" .. name, def)
end

View File

@ -4,7 +4,7 @@
-- lua files and from ironzorg's flowers mod. Many thanks to GloopMaster
-- for helping me figure out the inventories used in the nightstands/dressers.
--
-- The code for ovens, nightstands, refrigerators are basically modified
-- The code for ovens, nightstands, refrigerators are basically modified
-- copies of the code for chests and furnaces.
homedecor = {}
@ -46,132 +46,15 @@ end
--table copy
function homedecor.table_copy(t)
local nt = { };
for k, v in pairs(t) do
if type(v) == "table" then
nt[k] = homedecor.table_copy(v)
else
nt[k] = v
end
end
return nt
end
--
function homedecor.get_nodedef_field(nodename, fieldname)
if not minetest.registered_nodes[nodename] then
return nil
end
return minetest.registered_nodes[nodename][fieldname]
end
-- Place a two-node-tall single object (e.g. a floor lamp)
function homedecor.place_twonode_vertical(itemstack, placer, pointed_thing, node)
local pos = pointed_thing.under
local pnode = minetest.get_node(pointed_thing.under)
local rnodedef = minetest.registered_nodes[pnode.name]
if not rnodedef["buildable_to"] then
pos = pointed_thing.above
end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local pos2 = { x = pos.x, y=pos.y + 1, z = pos.z }
local tnode = minetest.get_node(pos)
local tnode2 = minetest.get_node(pos2)
if homedecor.get_nodedef_field(tnode.name, "buildable_to")
and homedecor.get_nodedef_field(tnode2.name, "buildable_to")
and not minetest.is_protected(pos, placer:get_player_name())
and not minetest.is_protected(pos2, placer:get_player_name()) then
minetest.add_node(pos, { name = node, param2 = fdir })
if not homedecor.expect_infinite_stacks then
itemstack:take_item()
return itemstack
end
end
end
-- Stack one node above another
function homedecor.stack_vertically(itemstack, placer, pointed_thing, node1, node2)
local pos = pointed_thing.under
local pnode = minetest.get_node(pointed_thing.under)
local rnodedef = minetest.registered_nodes[pnode.name]
if not rnodedef["buildable_to"] then
pos = pointed_thing.above
end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local pos2 = { x = pos.x, y=pos.y + 1, z = pos.z }
local tnode = minetest.get_node(pos)
local tnode2 = minetest.get_node(pos2)
if homedecor.get_nodedef_field(tnode.name, "buildable_to")
and homedecor.get_nodedef_field(tnode2.name, "buildable_to")
and not minetest.is_protected(pos, placer:get_player_name())
and not minetest.is_protected(pos2, placer:get_player_name()) then
minetest.add_node(pos, { name = node1, param2 = fdir })
minetest.add_node(pos2, { name = node2, param2 = fdir })
if not homedecor.expect_infinite_stacks then
itemstack:take_item()
return itemstack
end
end
end
-- Place one node right of or behind another
homedecor.fdir_to_right = {
{ 1, 0 },
{ 0, -1 },
{ -1, 0 },
{ 0, 1 },
}
homedecor.fdir_to_fwd = {
{ 0, 1 },
{ 1, 0 },
{ 0, -1 },
{ -1, 0 },
}
function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2, dir)
local pos = pointed_thing.under
local pnode = minetest.get_node(pointed_thing.under)
local rnodedef = minetest.registered_nodes[pnode.name]
if not rnodedef["buildable_to"] then
pos = pointed_thing.above
end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local pos2
if dir then
pos2 = { x = pos.x + homedecor.fdir_to_right[fdir+1][1], y=pos.y, z = pos.z + homedecor.fdir_to_right[fdir+1][2] }
else
pos2 = { x = pos.x + homedecor.fdir_to_fwd[fdir+1][1], y=pos.y, z = pos.z + homedecor.fdir_to_fwd[fdir+1][2] }
end
local tnode = minetest.get_node(pos)
local tnode2 = minetest.get_node(pos2)
if homedecor.get_nodedef_field(tnode.name, "buildable_to")
and homedecor.get_nodedef_field(tnode2.name, "buildable_to")
and not minetest.is_protected(pos, placer:get_player_name())
and not minetest.is_protected(pos2, placer:get_player_name()) then
minetest.add_node(pos, { name = node1, param2 = fdir })
minetest.add_node(pos2, { name = node2, param2 = fdir })
if not homedecor.expect_infinite_stacks then
itemstack:take_item()
return itemstack
local nt = { };
for k, v in pairs(t) do
if type(v) == "table" then
nt[k] = homedecor.table_copy(v)
else
nt[k] = v
end
end
return nt
end
-- Determine if the item being pointed at is the underside of a node (e.g a ceiling)
@ -222,8 +105,17 @@ function homedecor.find_ceiling(itemstack, placer, pointed_thing)
return isceiling, pos
end
-- load various other components
-- nodebox arithmetics and helpers
-- (please keep non-generic nodeboxes with their node definition)
dofile(homedecor.modpath.."/handlers/nodeboxes.lua")
-- expand and unexpand decor
dofile(homedecor.modpath.."/handlers/expansion.lua")
-- register nodes that cook stuff
dofile(homedecor.modpath.."/handlers/furnaces.lua")
-- glue it all together into a registration function
dofile(homedecor.modpath.."/handlers/registration.lua")
-- load various other components
dofile(homedecor.modpath.."/misc-nodes.lua") -- the catch-all for all misc nodes
dofile(homedecor.modpath.."/tables.lua")
dofile(homedecor.modpath.."/electronics.lua")
@ -237,14 +129,15 @@ dofile(homedecor.modpath.."/doors_and_gates.lua")
dofile(homedecor.modpath.."/fences.lua")
dofile(homedecor.modpath.."/lighting.lua")
dofile(homedecor.modpath.."/kitchen_cabinet.lua")
dofile(homedecor.modpath.."/refrigerator.lua")
dofile(homedecor.modpath.."/misc-bathroom.lua")
dofile(homedecor.modpath.."/kitchen_appliances.lua")
dofile(homedecor.modpath.."/kitchen_furniture.lua")
dofile(homedecor.modpath.."/bathroom_furniture.lua")
dofile(homedecor.modpath.."/bathroom_sanitation.lua")
dofile(homedecor.modpath.."/laundry.lua")
dofile(homedecor.modpath.."/furnaces.lua")
dofile(homedecor.modpath.."/nightstands.lua")
dofile(homedecor.modpath.."/clocks.lua")
dofile(homedecor.modpath.."/misc-electrical.lua")
@ -256,14 +149,11 @@ dofile(homedecor.modpath.."/crafts.lua")
dofile(homedecor.modpath.."/furniture.lua")
dofile(homedecor.modpath.."/furniture_medieval.lua")
dofile(homedecor.modpath.."/furniture_bathroom.lua")
dofile(homedecor.modpath.."/furniture_recipes.lua")
dofile(homedecor.modpath.."/climate-control.lua")
dofile(homedecor.modpath.."/cobweb.lua")
dofile(homedecor.modpath.."/locked.lua")
dofile(homedecor.modpath.."/handlers/locked.lua")
print("[HomeDecor] "..S("Loaded!"))

View File

@ -0,0 +1,438 @@
-- This file supplies refrigerators
local S = homedecor.gettext
-- nodebox models
local fridge_model_bottom = {
type = "fixed",
fixed = {
{0, -0.4375, -0.4375, 0.5, 0.5, 0.5}, -- NodeBox1
{-0.5, -0.5, -0.42, 0.5, 0.5, 0.5}, -- NodeBox2
{-0.5, -0.4375, -0.4375, -0.0625, 0.5, 0.5}, -- NodeBox3
{0, 0.25, -0.5, 0.0625, 0.3125, -0.4375}, -- NodeBox4
{-0.125, 0.25, -0.5, -0.0625, 0.3125, -0.4375}, -- NodeBox5
{0, 0.25, -0.5, 0.0625, 0.5, -0.473029}, -- NodeBox6
{-0.125, 0.25, -0.5, -0.0625, 0.5, -0.473029}, -- NodeBox7
}
}
local fridge_model_top = {
type = "fixed",
fixed = {
{0, -0.5, -0.4375, 0.5, 0.5, 0.5}, -- NodeBox1
{-0.0625, -0.5, -0.42, 0, 0.5, 0.5}, -- NodeBox2
{-0.5, -0.5, -0.4375, -0.0625, -0.4375, 0.5}, -- NodeBox3
{-0.5, -0.5, -0.4375, -0.4375, 0.5, 0.5}, -- NodeBox4
{-0.5, -0.1875, -0.4375, -0.0625, 0.5, 0.5}, -- NodeBox5
{-0.4375, -0.4375, -0.125, -0.0625, -0.1875, 0.5}, -- NodeBox6
{-0.125, -0.4375, -0.4375, -0.0625, -0.1875, -0.125}, -- NodeBox7
{-0.3125, -0.3125, -0.307054, -0.25, -0.1875, -0.286307}, -- NodeBox8
{-0.125, 0, -0.5, -0.0625, 0.0625, -0.4375}, -- NodeBox9
{0, 0, -0.5, 0.0625, 0.0625, -0.4375}, -- NodeBox10
{0, -0.5, -0.5, 0.0625, 0.0625, -0.473029}, -- NodeBox11
{-0.125, -0.5, -0.5, -0.0625, 0.0625, -0.473029}, -- NodeBox12
}
}
-- steel-textured fridge
homedecor.register("refrigerator_steel_bottom", {
tiles = {
"default_steel_block.png",
"homedecor_refrigerator_steel_bottom.png",
"homedecor_refrigerator_steel_sides1.png",
"homedecor_refrigerator_steel_sides1.png^[transformFX",
"homedecor_refrigerator_steel_back1.png",
"homedecor_refrigerator_steel_front2.png"
},
inventory_image = "homedecor_refrigerator_steel_inv.png",
description = S("Refrigerator (stainless steel)"),
groups = {snappy=3},
node_box = fridge_model_bottom,
selection_box = homedecor.nodebox.slab_y(2),
expand = {
top="homedecor:refrigerator_steel_top"
},
infotext=S("Refrigerator"),
inventory = {
size=50,
lockable=true,
},
})
homedecor.register("refrigerator_steel_top", {
tiles = {
"homedecor_refrigerator_steel_top.png",
"default_steel_block.png",
"homedecor_refrigerator_steel_sides1.png",
"homedecor_refrigerator_steel_sides1.png^[transformFX",
"homedecor_refrigerator_steel_back1.png",
"homedecor_refrigerator_steel_front1.png"
},
groups = {snappy=3},
node_box = fridge_model_top,
selection_box = homedecor.nodebox.null,
})
-- white, enameled fridge
homedecor.register("refrigerator_white_bottom", {
tiles = {
"default_steel_block.png",
"homedecor_refrigerator_white_bottom.png",
"homedecor_refrigerator_white_sides1.png",
"homedecor_refrigerator_white_sides1.png^[transformFX",
"homedecor_refrigerator_white_back1.png",
"homedecor_refrigerator_white_front2.png"
},
inventory_image = "homedecor_refrigerator_white_inv.png",
description = S("Refrigerator"),
groups = {snappy=3},
node_box = fridge_model_bottom,
selection_box = homedecor.nodebox.slab_y(2),
expand = {
top="homedecor:refrigerator_white_top"
},
infotext=S("Refrigerator"),
inventory = {
size=50,
lockable=true
},
})
homedecor.register("refrigerator_white_top", {
tiles = {
"homedecor_refrigerator_white_top.png",
"default_steel_block.png",
"homedecor_refrigerator_white_sides1.png",
"homedecor_refrigerator_white_sides1.png^[transformFX",
"homedecor_refrigerator_white_back1.png",
"homedecor_refrigerator_white_front1.png"
},
groups = {snappy=3},
node_box = fridge_model_top,
selection_box = homedecor.nodebox.null,
})
-- convert the old single-node fridges to the new two-node models
minetest.register_abm({
nodenames = { "homedecor:refrigerator" },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2
local p_top = { x=pos.x, y=pos.y+1, z=pos.z }
minetest.swap_node(pos, { name = "homedecor:refrigerator_white_bottom", param2 = fdir })
minetest.set_node(p_top, { name = "homedecor:refrigerator_white_top", param2 = fdir })
end
})
minetest.register_abm({
nodenames = { "homedecor:refrigerator_locked" },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2
local p_top = { x=pos.x, y=pos.y+1, z=pos.z }
minetest.swap_node(pos, { name = "homedecor:refrigerator_white_bottom_locked", param2 = fdir })
minetest.set_node(p_top, { name = "homedecor:refrigerator_white_top", param2 = fdir })
end
})
minetest.register_abm({
nodenames = { "homedecor:refrigerator_steel" },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2
local p_top = { x=pos.x, y=pos.y+1, z=pos.z }
minetest.swap_node(pos, { name = "homedecor:refrigerator_steel_bottom", param2 = fdir })
minetest.set_node(p_top, { name = "homedecor:refrigerator_steel_top", param2 = fdir })
end
})
minetest.register_abm({
nodenames = { "homedecor:refrigerator_steel_locked" },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2
local p_top = { x=pos.x, y=pos.y+1, z=pos.z }
minetest.swap_node(pos, { name = "homedecor:refrigerator_steel_bottom_locked", param2 = fdir })
minetest.set_node(p_top, { name = "homedecor:refrigerator_steel_top", param2 = fdir })
end
})
-- kitchen "furnaces"
homedecor.register_furnace("homedecor:oven", {
description = S("Oven"),
tile_format = "homedecor_oven_%s%s.png",
output_slots = 4,
output_width = 2,
cook_speed = 1.25,
})
homedecor.register_furnace("homedecor: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("homedecor: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 = {
drawtype = "nodebox",
paramtype = "light",
--paramtype2 = "facedir", -- Not needed, set by register_furnace
node_box = {
type = "fixed",
fixed = { { -0.5, -0.5, -0.125, 0.5, 0.125, 0.5 } },
},
},
})
-- coffee!
-- coffee!
-- coffee!
homedecor.register("coffee_maker", {
tiles = {
"homedecor_coffeemaker_top.png",
"homedecor_coffeemaker_bottom.png",
"homedecor_coffeemaker_right.png",
"homedecor_coffeemaker_right.png^[transformFX",
"homedecor_coffeemaker_back.png",
"homedecor_coffeemaker_front.png"
},
description = "Coffee Maker",
inventory_image = "homedecor_coffeemaker_inv.png",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
groups = {snappy=3},
node_box = {
type = "fixed",
fixed = {
{0.0625, -0.5, -0.025, 0.375, -0.375, 0.5}, -- NodeBox1
{0.0625, -0.375, 0.3125, 0.375, 0, 0.5}, -- NodeBox2
{0.0625, -0.052, 0.02, 0.375, 0.19, 0.5}, -- NodeBox3
{0.078, -0.375, 0, 0.36, -0.0625, 0.3125}, -- NodeBox4
{0.1875, -0.098, -0.0525, 0.25, -0.078, 0}, -- NodeBox5
{0.1875, -0.36, -0.090, 0.25, -0.078, -0.0525}, -- NodeBox6
{0.1875, -0.36, -0.0525, 0.25, -0.34, 0}, -- NodeBox7
{-0.1875, -0.5, -0.3125, -0.1, -0.4, -0.225}, -- NodeBox8
{-0.1975, -0.5, -0.3225, -0.1, -0.375, -0.3125}, -- NodeBox9
{-0.1975, -0.5, -0.235, -0.1, -0.375, -0.225}, -- NodeBox10
{-0.1975, -0.5, -0.3225, -0.1875, -0.375, -0.225}, -- NodeBox11
{-0.11, -0.5, -0.3225, -0.1, -0.375, -0.225}, -- NodeBox12
{-0.1, -0.485, -0.2838, -0.06, -0.475, -0.2638}, -- NodeBox13
{-0.1, -0.4, -0.2838, -0.06, -0.39, -0.2638}, -- NodeBox14
{-0.075, -0.485, -0.2838, -0.06, -0.39, -0.2638}, -- NodeBox15
}
},
selection_box = {
type = "fixed",
fixed = { -0.22, -0.5, -0.35, 0.4, 0.21, 0.5 }
}
})
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",
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 = "Toaster",
tiles = {
"homedecor_toaster_sides.png",
"homedecor_toaster_sides.png",
"homedecor_toaster_sides.png",
"homedecor_toaster_sides.png",
"homedecor_toaster_sides.png",
"homedecor_toaster_sides.png"
},
inventory_image = "homedecor_toaster_inv.png",
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
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)
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
})
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"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
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)
local fdir = node.param2
minetest.set_node(pos, { name = "homedecor:toaster", param2 = fdir })
end,
drop = "homedecor:toaster"
})
homedecor.register("dishwasher", {
description = "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"
},
paramtype = "light",
paramtype2 = "facedir",
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" },
groups = { snappy = 3 },
})
homedecor.register("dishwasher_wood", {
description = "Dishwasher",
tiles = {
"homedecor_kitchen_cabinet_top.png",
"homedecor_dishwasher_bottom.png",
"homedecor_dishwasher_sides.png",
"homedecor_dishwasher_sides.png^[transformFX",
"homedecor_dishwasher_back.png",
"homedecor_dishwasher_front.png"
},
paramtype = "light",
paramtype2 = "facedir",
groups = { snappy = 3 },
})
homedecor.register("dishwasher_steel", {
description = "Dishwasher",
tiles = {
"homedecor_kitchen_cabinet_top_steel.png",
"homedecor_dishwasher_bottom.png",
"homedecor_dishwasher_sides.png",
"homedecor_dishwasher_sides.png^[transformFX",
"homedecor_dishwasher_back.png",
"homedecor_dishwasher_front.png"
},
paramtype = "light",
paramtype2 = "facedir",
groups = { snappy = 3 },
})
homedecor.register("dishwasher_marble", {
description = "Dishwasher",
tiles = {
"homedecor_kitchen_cabinet_top_marble.png",
"homedecor_dishwasher_bottom.png",
"homedecor_dishwasher_sides.png",
"homedecor_dishwasher_sides.png^[transformFX",
"homedecor_dishwasher_back.png",
"homedecor_dishwasher_front.png"
},
paramtype = "light",
paramtype2 = "facedir",
groups = { snappy = 3 },
})
homedecor.register("dishwasher_granite", {
description = "Dishwasher",
tiles = {
"homedecor_kitchen_cabinet_top_granite.png",
"homedecor_dishwasher_bottom.png",
"homedecor_dishwasher_sides.png",
"homedecor_dishwasher_sides.png^[transformFX",
"homedecor_dishwasher_back.png",
"homedecor_dishwasher_front.png"
},
paramtype = "light",
paramtype2 = "facedir",
groups = { snappy = 3 },
})

View File

@ -1,170 +0,0 @@
-- This file supplies Kitchen cabinets and kitchen sink
local S = homedecor.gettext
local counter_materials = { "", "granite", "marble", "steel" }
for _, mat in ipairs(counter_materials) do
local desc = S("Kitchen Cabinet")
local material = ""
if mat ~= "" then
desc = S("Kitchen Cabinet ("..mat.." top)")
material = "_"..mat
end
minetest.register_node('homedecor:kitchen_cabinet'..material, {
description = desc,
tiles = { 'homedecor_kitchen_cabinet_top'..material..'.png',
'homedecor_kitchen_cabinet_bottom.png',
'homedecor_kitchen_cabinet_sides.png',
'homedecor_kitchen_cabinet_sides.png',
'homedecor_kitchen_cabinet_sides.png',
'homedecor_kitchen_cabinet_front.png'},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"size[8,8]"..
"list[current_name;main;0,0;8,3;]"..
"list[current_player;main;0,4;8,4;]")
meta:set_string("infotext", S("Kitchen Cabinet"))
local inv = meta:get_inventory()
inv:set_size("main", 24)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", S("%s moves stuff in kitchen cabinet at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", S("%s moves stuff to kitchen cabinet at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", S("%s takes stuff from kitchen cabinet at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
})
end
minetest.register_node('homedecor:kitchen_cabinet_half', {
drawtype="nodebox",
description = S('Half-height Kitchen Cabinet (on ceiling)'),
tiles = { 'homedecor_kitchen_cabinet_sides.png',
'homedecor_kitchen_cabinet_bottom.png',
'homedecor_kitchen_cabinet_sides.png',
'homedecor_kitchen_cabinet_sides.png',
'homedecor_kitchen_cabinet_sides.png',
'homedecor_kitchen_cabinet_front_half.png'},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = {
type = "fixed",
fixed = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 }
},
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"size[8,7]"..
"list[current_name;main;1,0;6,2;]"..
"list[current_player;main;0,3;8,4;]")
meta:set_string("infotext", S("Kitchen Cabinet"))
local inv = meta:get_inventory()
inv:set_size("main", 12)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", S("%s moves stuff in kitchen cabinet at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", S("%s moves stuff to kitchen cabinet at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", S("%s takes stuff from kitchen cabinet at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
})
minetest.register_node('homedecor:kitchen_cabinet_with_sink', {
description = S("Kitchen Cabinet with sink"),
drawtype = "mesh",
mesh = "homedecor_kitchen_sink.obj",
tiles = { "homedecor_kitchen_sink.png" },
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"size[8,7]"..
"list[current_name;main;0,0;8,2;]"..
"list[current_player;main;0,3;8,4;]")
meta:set_string("infotext", S("Under-sink cabinet"))
local inv = meta:get_inventory()
inv:set_size("main", 16)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", S("%s moves stuff in kitchen cabinet at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", S("%s moves stuff to kitchen cabinet at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", S("%s takes stuff from kitchen cabinet at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
})

View File

@ -0,0 +1,134 @@
-- This file supplies Kitchen cabinets and kitchen sink
local S = homedecor.gettext
local counter_materials = { "", "granite", "marble", "steel" }
for _, mat in ipairs(counter_materials) do
local desc = S("Kitchen Cabinet")
local material = ""
if mat ~= "" then
desc = S("Kitchen Cabinet ("..mat.." top)")
material = "_"..mat
end
homedecor.register("kitchen_cabinet"..material, {
description = desc,
tiles = { 'homedecor_kitchen_cabinet_top'..material..'.png',
'homedecor_kitchen_cabinet_bottom.png',
'homedecor_kitchen_cabinet_sides.png',
'homedecor_kitchen_cabinet_sides.png',
'homedecor_kitchen_cabinet_sides.png',
'homedecor_kitchen_cabinet_front.png'},
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
infotext=S("Kitchen Cabinet"),
inventory = {
size=24,
},
})
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 = { 'homedecor_kitchen_cabinet_sides.png',
'homedecor_kitchen_cabinet_bottom.png',
'homedecor_kitchen_cabinet_sides.png',
'homedecor_kitchen_cabinet_sides.png',
'homedecor_kitchen_cabinet_sides.png',
'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,
},
})
homedecor.register("kitchen_cabinet_with_sink", {
description = S("Kitchen Cabinet with sink"),
mesh = "homedecor_kitchen_sink.obj",
tiles = { "homedecor_kitchen_sink.png" },
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
infotext=S("Under-sink cabinet"),
inventory = {
size=16,
},
})
homedecor.register("copper_pans", {
description = "Copper pans",
tiles = {
"homedecor_polished_copper.png"
},
inventory_image = "homedecor_copper_pans_inv.png",
groups = { snappy=3 },
node_box = {
type = "fixed",
fixed = {
{-0.375, -0.5, -0.1875, -0.0625, -0.48, 0.125}, -- NodeBox1
{-0.375, -0.48, -0.1875, -0.36, -0.3125, 0.125}, -- NodeBox2
{-0.0775, -0.48, -0.1875, -0.0625, -0.3125, 0.125}, -- NodeBox3
{-0.375, -0.48, 0.11, -0.0625, -0.3125, 0.125}, -- NodeBox4
{-0.375, -0.48, -0.1875, -0.0625, -0.3125, -0.1725}, -- NodeBox5
{-0.25, -0.36, -0.5, -0.1875, -0.33, -0.1875}, -- NodeBox6
{0.0625, -0.5, 0, 0.375, -0.48, 0.3125}, -- NodeBox7
{0.0625, -0.48, 0, 0.0775, -0.3125, 0.3125}, -- NodeBox8
{0.36, -0.48, 0, 0.375, -0.3125, 0.3125}, -- NodeBox9
{0.0625, -0.48, 0, 0.375, -0.3125, 0.0175}, -- NodeBox10
{0.0625, -0.48, 0.295, 0.375, -0.3125, 0.3125}, -- NodeBox11
{0.1875, -0.36, -0.3125, 0.25, -0.33, 0}, -- NodeBox12
}
},
selection_box = {
type = "fixed",
fixed = { -0.375, -0.5, -0.5, 0.375, -0.3125, 0.3125 }
},
on_place = minetest.rotate_node
})
homedecor.register("kitchen_faucet", {
tiles = { "homedecor_bright_metal.png" },
inventory_image = "homedecor_kitchen_faucet_inv.png",
description = "Kitchen Faucet",
groups = {snappy=3},
node_box = {
type = "fixed",
fixed = {
{0, -0.5, 0.375, 0.0625, -0.1875, 0.4375}, -- NodeBox1
{0, -0.1875, 0.35, 0.0625, -0.15, 0.4375}, -- NodeBox2
{0, -0.15, 0.32, 0.0625, -0.11, 0.41}, -- NodeBox3
{0.007, -0.12, 0.17, 0.055, -0.11, 0.1285}, -- NodeBox4
{0, -0.11, 0.125, 0.0625, -0.07, 0.37}, -- NodeBox5
{-0.05, -0.48, 0.385, 0.115, -0.455, 0.43}, -- NodeBox6
{-0.05, -0.49, 0.395, 0.115, -0.445, 0.42}, -- NodeBox7
}
},
selection_box = {
type = "fixed",
fixed = { -0.055, -0.5, 0.125, 0.12, -0.065, 0.4375 }
},
})
homedecor.register("paper_towel", {
mesh = "homedecor_paper_towel.obj",
tiles = { "homedecor_paper_towel.png" },
inventory_image = "homedecor_paper_towel_inv.png",
description = "Paper towels",
groups = { snappy=3 },
selection_box = {
type = "fixed",
fixed = { -0.4375, 0.125, 0.0625, 0.4375, 0.4375, 0.5 }
},
collision_box = {
type = "fixed",
fixed = { -0.4375, 0.125, 0.0625, 0.4375, 0.4375, 0.5 }
}
})

View File

@ -1,8 +1,7 @@
-- laundry devices
minetest.register_node("homedecor:washing_machine", {
homedecor.register("washing_machine", {
description = "Washing Machine",
drawtype = "nodebox",
tiles = {
"homedecor_washing_machine_top.png",
"homedecor_washing_machine_bottom.png",
@ -11,8 +10,6 @@ minetest.register_node("homedecor:washing_machine", {
"homedecor_washing_machine_back.png",
"homedecor_washing_machine_front.png"
},
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
@ -20,16 +17,12 @@ minetest.register_node("homedecor:washing_machine", {
{-0.5, -0.5, 0.3125, 0.5, 0.5, 0.5},
}
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
},
selection_box = { type = "regular" },
groups = { snappy = 3 },
})
minetest.register_node("homedecor:dryer", {
homedecor.register("dryer", {
description = "Tumble dryer",
drawtype = "nodebox",
tiles = {
"homedecor_dryer_top.png",
"homedecor_dryer_bottom.png",
@ -38,8 +31,6 @@ minetest.register_node("homedecor:dryer", {
"homedecor_dryer_back.png",
"homedecor_dryer_front.png"
},
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
@ -47,10 +38,7 @@ minetest.register_node("homedecor:dryer", {
{-0.5, -0.5, 0.3125, 0.5, 0.5, 0.5},
}
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
},
selection_box = { type = "regular" },
groups = { snappy = 3 },
})

View File

@ -61,11 +61,19 @@ for i in ipairs(colors) do
})
end
local glowlight_nodebox = {
half = homedecor.nodebox.slab_y(1/2),
quarter = homedecor.nodebox.slab_y(1/4),
small_cube = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
},
}
-- Yellow
minetest.register_node('homedecor:glowlight_half_yellow', {
homedecor.register("glowlight_half_yellow", {
description = S("Yellow Glowlight (thick)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_yellow_top.png',
'homedecor_glowlight_yellow_bottom.png',
@ -74,28 +82,16 @@ minetest.register_node('homedecor:glowlight_half_yellow', {
'homedecor_glowlight_thick_yellow_sides.png',
'homedecor_glowlight_thick_yellow_sides.png'
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = glowlight_nodebox.half,
node_box = glowlight_nodebox.half,
groups = { snappy = 3 },
light_source = LIGHT_MAX,
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node
})
minetest.register_node('homedecor:glowlight_quarter_yellow', {
homedecor.register("glowlight_quarter_yellow", {
description = S("Yellow Glowlight (thin)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_yellow_top.png',
'homedecor_glowlight_yellow_bottom.png',
@ -104,19 +100,8 @@ minetest.register_node('homedecor:glowlight_quarter_yellow', {
'homedecor_glowlight_thin_yellow_sides.png',
'homedecor_glowlight_thin_yellow_sides.png'
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = glowlight_nodebox.quarter,
node_box = glowlight_nodebox.quarter,
groups = { snappy = 3 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
@ -125,9 +110,8 @@ minetest.register_node('homedecor:glowlight_quarter_yellow', {
-- White
minetest.register_node('homedecor:glowlight_half_white', {
homedecor.register("glowlight_half_white", {
description = S("White Glowlight (thick)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_white_top.png',
'homedecor_glowlight_white_bottom.png',
@ -136,28 +120,16 @@ minetest.register_node('homedecor:glowlight_half_white', {
'homedecor_glowlight_thick_white_sides.png',
'homedecor_glowlight_thick_white_sides.png'
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = glowlight_nodebox.half,
node_box = glowlight_nodebox.half,
groups = { snappy = 3 },
light_source = LIGHT_MAX,
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node
})
minetest.register_node('homedecor:glowlight_quarter_white', {
homedecor.register("glowlight_quarter_white", {
description = S("White Glowlight (thin)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_white_top.png',
'homedecor_glowlight_white_bottom.png',
@ -166,19 +138,8 @@ minetest.register_node('homedecor:glowlight_quarter_white', {
'homedecor_glowlight_thin_white_sides.png',
'homedecor_glowlight_thin_white_sides.png'
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = glowlight_nodebox.quarter,
node_box = glowlight_nodebox.quarter,
groups = { snappy = 3 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
@ -187,9 +148,8 @@ minetest.register_node('homedecor:glowlight_quarter_white', {
-- Glowlight "cubes"
minetest.register_node('homedecor:glowlight_small_cube_yellow', {
homedecor.register("glowlight_small_cube_yellow", {
description = S("Yellow Glowlight (small cube)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_cube_yellow_tb.png',
'homedecor_glowlight_cube_yellow_tb.png',
@ -198,28 +158,16 @@ minetest.register_node('homedecor:glowlight_small_cube_yellow', {
'homedecor_glowlight_cube_yellow_sides.png',
'homedecor_glowlight_cube_yellow_sides.png'
},
selection_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
},
node_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = glowlight_nodebox.small_cube,
node_box = glowlight_nodebox.small_cube,
groups = { snappy = 3 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node
})
minetest.register_node('homedecor:glowlight_small_cube_white', {
homedecor.register("glowlight_small_cube_white", {
description = S("White Glowlight (small cube)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_cube_white_tb.png',
'homedecor_glowlight_cube_white_tb.png',
@ -228,26 +176,15 @@ minetest.register_node('homedecor:glowlight_small_cube_white', {
'homedecor_glowlight_cube_white_sides.png',
'homedecor_glowlight_cube_white_sides.png'
},
selection_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
},
node_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = glowlight_nodebox.small_cube,
node_box = glowlight_nodebox.small_cube,
groups = { snappy = 3 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node
})
minetest.register_node("homedecor:plasma_lamp", {
homedecor.register("plasma_lamp", {
description = "Plasma Lamp",
drawtype = "glasslike_framed",
tiles = {"homedecor_gold_block.png","homedecor_glass_face_clean.png"},
@ -258,7 +195,6 @@ minetest.register_node("homedecor:plasma_lamp", {
}
},
-- use_texture_alpha = true,
paramtype = "light",
light_source = LIGHT_MAX - 1,
sunlight_propagates = true,
groups = {cracky=3,oddly_breakable_by_hand=3},
@ -268,129 +204,109 @@ minetest.register_node("homedecor:plasma_lamp", {
end
})
minetest.register_node('homedecor:candle', {
homedecor.register("candle", {
description = S("Thick Candle"),
drawtype = "nodebox",
tiles = {
'homedecor_candle_top.png',
'homedecor_candle_top.png',
{name="homedecor_candle_sides.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
},
node_box = {
type = "fixed",
fixed = {
{ -0.125, -0.5, -0.125, 0.125, 0, 0.125 },
{ -0.125, 0, 0, 0.125, 0.5, 0 },
{ 0, 0, -0.125, 0, 0.5, 0.125 }
}
},
selection_box = {
type = "fixed",
fixed = {
{ -0.1875, -0.5, -0.1875, 0.1875, 0.5, 0.1875 },
}
},
node_box = {
type = "fixed",
fixed = {
{ -0.125, -0.5, -0.125, 0.125, 0, 0.125 },
{ -0.125, 0, 0, 0.125, 0.5, 0 },
{ 0, 0, -0.125, 0, 0.5, 0.125 }
}
},
selection_box = {
type = "fixed",
fixed = {
{ -0.1875, -0.5, -0.1875, 0.1875, 0.5, 0.1875 },
}
},
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
groups = { snappy = 3 },
light_source = LIGHT_MAX-4,
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node('homedecor:candle_thin', {
homedecor.register("candle_thin", {
description = S("Little Candle"),
inventory_image = 'homedecor_candle_inv.png',
drawtype = "plantlike",
tiles = {
{name="homedecor_candle.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1.0}},
},
selection_box = {
type = "fixed",
fixed = {
{ -0.1, -0.5, -0.1, 0.125, 0.05, 0.125 },
}
},
selection_box = {
type = "fixed",
fixed = {
{ -0.1, -0.5, -0.1, 0.125, 0.05, 0.125 },
}
},
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
walkable = false,
groups = { snappy = 3 },
light_source = LIGHT_MAX-4,
})
minetest.register_node('homedecor:oil_lamp', {
homedecor.register("oil_lamp", {
description = S("Oil lamp"),
drawtype = "plantlike",
tiles = { 'homedecor_oil_lamp.png' },
inventory_image = 'homedecor_oil_lamp.png',
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = {
type = "fixed",
fixed = {
{ -0.3, -0.5, -0.3, 0.3, 0.5, 0.3 },
}
},
selection_box = {
type = "fixed",
fixed = {
{ -0.3, -0.5, -0.3, 0.3, 0.5, 0.3 },
}
},
groups = { snappy = 3 },
light_source = LIGHT_MAX-4,
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node('homedecor:wall_lantern', {
homedecor.register("wall_lantern", {
description = S("Wall lantern"),
drawtype = "plantlike",
tiles = { 'homedecor_wall_lantern.png' },
inventory_image = 'homedecor_wall_lantern.png',
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = {
type = "fixed",
fixed = {
{ -0.3, -0.5, -0.3, 0.3, 0.5, 0.3 },
}
},
selection_box = {
type = "fixed",
fixed = {
{ -0.3, -0.5, -0.3, 0.3, 0.5, 0.3 },
}
},
groups = { snappy = 3 },
light_source = LIGHT_MAX-4,
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node('homedecor:lattice_lantern_large', {
homedecor.register("lattice_lantern_large", {
description = S("Lattice lantern (large)"),
tiles = { 'homedecor_lattice_lantern_large.png' },
sunlight_propagates = false,
paramtype = "light",
walkable = true,
groups = { snappy = 3 },
light_source = LIGHT_MAX,
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node('homedecor:lattice_lantern_small', {
homedecor.register("lattice_lantern_small", {
description = S("Lattice lantern (small)"),
drawtype = "nodebox",
tiles = {
'homedecor_lattice_lantern_small_tb.png',
'homedecor_lattice_lantern_small_tb.png',
'homedecor_lattice_lantern_small_sides.png'
},
selection_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
},
node_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
},
node_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
},
groups = { snappy = 3 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
@ -418,12 +334,10 @@ local function reg_lamp(suffix, nxt, tilesuffix, light, color)
colordesc = " (white)"
end
minetest.register_node("homedecor:table_lamp"..lampcolor.."_"..suffix, {
homedecor.register("table_lamp"..lampcolor.."_"..suffix, {
description = S("Table Lamp "..colordesc),
drawtype = "mesh",
mesh = "homedecor_table_lamp.obj",
tiles = { "homedecor_table_standing_lamp"..lampcolor.."_"..suffix..".png" },
paramtype = "light",
walkable = false,
light_source = light,
selection_box = tlamp_cbox,
@ -441,13 +355,11 @@ local function reg_lamp(suffix, nxt, tilesuffix, light, color)
-- standing lamps
minetest.register_node("homedecor:standing_lamp"..lampcolor.."_"..suffix, {
homedecor.register("standing_lamp"..lampcolor.."_"..suffix, {
description = S("Standing Lamp"..colordesc),
drawtype = "mesh",
mesh = "homedecor_standing_lamp.obj",
tiles = { "homedecor_table_standing_lamp"..lampcolor.."_"..suffix..".png" },
inventory_image = "homedecor_standing_lamp"..lampcolor.."_inv.png",
paramtype = "light",
walkable = false,
light_source = light,
groups = {cracky=2,oddly_breakable_by_hand=1,
@ -455,15 +367,12 @@ local function reg_lamp(suffix, nxt, tilesuffix, light, color)
},
selection_box = slamp_cbox,
collision_box = slamp_cbox,
on_place = function(itemstack, placer, pointed_thing)
return homedecor.place_twonode_vertical(itemstack, placer, pointed_thing,
"homedecor:standing_lamp"..lampcolor.."_"..suffix)
end,
on_punch = function(pos, node, puncher)
node.name = "homedecor:standing_lamp"..lampcolor.."_"..repl[suffix]
minetest.set_node(pos, node)
nodeupdate(pos)
end,
expand = { top="air" },
})
-- "bottom" in the node name is obsolete now, as "top" node doesn't exist anymore.
@ -471,7 +380,7 @@ local function reg_lamp(suffix, nxt, tilesuffix, light, color)
minetest.register_alias("homedecor:standing_lamp_top"..lampcolor.."_"..suffix, "air")
-- for old maps that had 3dfornit`ure
if lampcolor == "" then
if lampcolor == "" then
minetest.register_alias("3dforniture:table_lamp_"..suffix, "homedecor:table_lamp_"..suffix)
end
end

View File

@ -1,161 +0,0 @@
-- Locked Stuff for Home Decor mod, by Kaeza
--
-- The code is mostly copypasta from default:chest_locked, with a few
-- tidbits to ease creation of new items, should need arise.
local S = homedecor.gettext
--[[
| create_locked ( name, infotext )
|
| Description:
| This function takes a base node name such as "homedecor:refrigerator",
| copies the definition from the original item into a new table, modifies
| it a bit, and registers a new node with a "_locked" suffix such as
| "homedecor:refrigerator_locked". The new node behaves identically to
| the base node, except that moving items to/from the node's inventory
| is only allowed for the original placer. In addition, it register a new
| shapeless recipe for the node, using the base node plus a steel ingot.
|
| Arguments:
| name The base node name
| infotext The infotext description (in case the name is too long).
|
| Example Usage:
| create_locked("homedecor:refrigerator", "Locked Fridge")
| ^ This generates a new "Locked Refrigerator" node, whose infotext is
| "Locked Fridge (owned by <placer>)".
|
| Notes:
| If <infotext> is not specified (or is nil), the infotext will be the
| base node's description prefixed by "Locked ".
|
| The ABM for the locked oven is defined in oven.lua.
]]
local function create_locked ( name, infotext )
local def = { }
for k, v in pairs(minetest.registered_nodes[name]) do
def[k] = v
end
def.type = nil
def.name = nil
def.description = S("%s (Locked)"):format(def.description)
local after_place_node = def.after_place_node
def.after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", S("%s (owned by %s)"):format(infotext,meta:get_string("owner")))
if (after_place_node) then
return after_place_node(pos, placer)
end
end
local allow_metadata_inventory_move = def.allow_metadata_inventory_move;
def.allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
if (player:get_player_name() ~= meta:get_string("owner")) then
minetest.log("action", S("%s tried to access a %s belonging to %s at %s"):format(
player:get_player_name(),
infotext,
meta:get_string("owner"),
minetest.pos_to_string(pos)
))
return 0
end
if (allow_metadata_inventory_move) then
return allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player)
else
return count
end
end
local allow_metadata_inventory_put = def.allow_metadata_inventory_put;
def.allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if (player:get_player_name() ~= meta:get_string("owner")) then
minetest.log("action", S("%s tried to access a %s belonging to %s at %s"):format(
player:get_player_name(),
infotext,
meta:get_string("owner"),
minetest.pos_to_string(pos)
))
return 0
end
if (allow_metadata_inventory_put) then
return allow_metadata_inventory_put(pos, listname, index, stack, player)
else
return stack:get_count()
end
end
local allow_metadata_inventory_take = def.allow_metadata_inventory_take;
def.allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if (player:get_player_name() ~= meta:get_string("owner")) then
minetest.log("action", S("%s tried to access a %s belonging to %s at %s"):format(
player:get_player_name(),
infotext,
meta:get_string("owner"),
minetest.pos_to_string(pos)
))
return 0
end
if (allow_metadata_inventory_take) then
return allow_metadata_inventory_take(pos, listname, index, stack, player)
else
return stack:get_count()
end
end
minetest.register_node(name.."_locked", def)
minetest.register_craft({
output = name.."_locked",
type = "shapeless",
recipe = {
name,
"default:steel_ingot",
}
})
end
local items = {
{ "refrigerator_white_bottom",
"Refrigerator" },
{ "refrigerator_steel_bottom",
"Refrigerator (stainless steel)" },
{ "kitchen_cabinet",
"Cabinet" },
{ "kitchen_cabinet_steel",
"Cabinet (stainless steel top)" },
{ "kitchen_cabinet_granite",
"Cabinet (granite top)" },
{ "kitchen_cabinet_marble",
"Cabinet (marble top)" },
{ "kitchen_cabinet_half",
"Cabinet" },
{ "kitchen_cabinet_with_sink",
"Cabinet" },
{ "nightstand_oak_one_drawer",
"Nightstand" },
{ "nightstand_oak_two_drawers",
"Nightstand" },
{ "nightstand_mahogany_one_drawer",
"Nightstand" },
{ "nightstand_mahogany_two_drawers",
"Nightstand" },
{ "filing_cabinet",
"Filing cabinet" },
{ "oven",
"Oven" },
{ "oven_active",
"Oven (active)" },
{ "oven_steel",
"Oven (stainless steel)" },
{ "oven_steel_active",
"Oven (stainless steel, active)" },
{ "microwave_oven",
"Microwave Oven" },
{ "microwave_oven_active",
"Microwave Oven (active)" },
}
for _,item in ipairs(items) do
local name, info = item[1], item[2];
create_locked("homedecor:"..name, S("Locked "..info));
end

View File

@ -1,7 +1,4 @@
minetest.register_node("homedecor:power_outlet", {
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
homedecor.register("power_outlet", {
description = "Power Outlet",
tiles = {
"homedecor_outlet_edges.png",
@ -28,10 +25,7 @@ minetest.register_node("homedecor:power_outlet", {
sounds = default.node_sound_stone_defaults()
})
minetest.register_node("homedecor:light_switch", {
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
homedecor.register("light_switch", {
description = "Light switch",
tiles = {
"homedecor_light_switch_edges.png",
@ -60,3 +54,25 @@ minetest.register_node("homedecor:light_switch", {
sounds = default.node_sound_stone_defaults()
})
homedecor.register("doorbell", {
tiles = { "homedecor_doorbell.png" },
inventory_image = "homedecor_doorbell_inv.png",
description = "Doorbell",
groups = {snappy=3},
node_box = {
type = "fixed",
fixed = {
{-0.0625, 0, 0.46875, 0.0625, 0.1875, 0.5}, -- NodeBox1
{-0.03125, 0.0625, 0.45, 0.03125, 0.125, 0.4675}, -- NodeBox2
}
},
on_punch = function(pos, node, puncher, pointed_thing)
minetest.sound_play("homedecor_doorbell", {
pos = pos,
gain = 1.0,
max_hear_distance = 15
})
end
})

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 B

After

Width:  |  Height:  |  Size: 165 B

View File

@ -2,8 +2,7 @@
local S = homedecor.gettext
minetest.register_node('homedecor:nightstand_oak_one_drawer', {
drawtype = "nodebox",
homedecor.register("nightstand_oak_one_drawer", {
description = S("Oak Nightstand with One Drawer"),
tiles = { 'homedecor_nightstand_oak_top.png',
'homedecor_nightstand_oak_bottom.png',
@ -11,16 +10,9 @@ minetest.register_node('homedecor:nightstand_oak_one_drawer', {
'homedecor_nightstand_oak_left.png',
'homedecor_nightstand_oak_back.png',
'homedecor_nightstand_oak_1_drawer_front.png'},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
selection_box = { type = "regular" },
node_box = {
type = "fixed",
fixed = {
{ -8/16, 0, -30/64, 8/16, 8/16, 8/16 }, -- top half
{ -7/16, 1/16, -32/64, 7/16, 7/16, -29/64}, -- drawer face
@ -29,47 +21,16 @@ minetest.register_node('homedecor:nightstand_oak_one_drawer', {
{ -8/16, -8/16, 7/16, 8/16, 0, 8/16 }, -- back
{ -8/16, -8/16, -30/64, 8/16, -7/16, 8/16 } -- bottom
}
},
},
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"size[8,6]"..
"list[current_name;main;0,0;8,1;]"..
"list[current_player;main;0,2;8,4;]")
meta:set_string("infotext", S("One-drawer Nightstand"))
local inv = meta:get_inventory()
inv:set_size("main", 8)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", S("%s moves stuff in nightstand at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", S("%s moves stuff to nightstand at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", S("%s takes stuff from nightstand at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
infotext=S("One-drawer Nightstand"),
inventory = {
size=8,
},
})
minetest.register_node('homedecor:nightstand_oak_two_drawers', {
drawtype = "nodebox",
homedecor.register("nightstand_oak_two_drawers", {
description = S("Oak Nightstand with Two Drawers"),
tiles = { 'homedecor_nightstand_oak_top.png',
'homedecor_nightstand_oak_bottom.png',
@ -77,62 +38,25 @@ minetest.register_node('homedecor:nightstand_oak_two_drawers', {
'homedecor_nightstand_oak_left.png',
'homedecor_nightstand_oak_back.png',
'homedecor_nightstand_oak_2_drawer_front.png'},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
selection_box = { type = "regular" },
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, -30/64, 8/16, 8/16, 8/16 }, -- main body
{ -7/16, 1/16, -32/64, 7/16, 7/16, -29/64 }, -- top drawer face
{ -7/16, -7/16, -32/64, 7/16, -1/16, -29/64 }, -- bottom drawer face
}
},
},
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"size[8,7]"..
"list[current_name;main;0,0;8,2;]"..
"list[current_player;main;0,3;8,4;]")
meta:set_string("infotext", S("Two-drawer Nightstand"))
local inv = meta:get_inventory()
inv:set_size("main", 16)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", S("%s moves stuff in nightstand at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", S("%s moves stuff to nightstand at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", S("%s takes stuff from nightstand at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
infotext=S("Two-drawer Nightstand"),
inventory = {
size=16,
},
})
minetest.register_node('homedecor:nightstand_mahogany_one_drawer', {
drawtype = "nodebox",
homedecor.register("nightstand_mahogany_one_drawer", {
description = S("Mahogany Nightstand with One Drawer"),
tiles = { 'homedecor_nightstand_mahogany_top.png',
'homedecor_nightstand_mahogany_bottom.png',
@ -140,16 +64,9 @@ minetest.register_node('homedecor:nightstand_mahogany_one_drawer', {
'homedecor_nightstand_mahogany_left.png',
'homedecor_nightstand_mahogany_back.png',
'homedecor_nightstand_mahogany_1_drawer_front.png'},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
selection_box = { type = "regular" },
node_box = {
type = "fixed",
fixed = {
{ -8/16, 0, -30/64, 8/16, 8/16, 8/16 }, -- top half
{ -7/16, 1/16, -32/64, 7/16, 7/16, -29/64}, -- drawer face
@ -158,47 +75,16 @@ minetest.register_node('homedecor:nightstand_mahogany_one_drawer', {
{ -8/16, -8/16, 7/16, 8/16, 0, 8/16 }, -- back
{ -8/16, -8/16, -30/64, 8/16, -7/16, 8/16 } -- bottom
}
},
},
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"size[8,6]"..
"list[current_name;main;0,0;8,1;]"..
"list[current_player;main;0,2;8,4;]")
meta:set_string("infotext", S("One-drawer Nightstand"))
local inv = meta:get_inventory()
inv:set_size("main", 8)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", S("%s moves stuff in nightstand at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", S("%s moves stuff to nightstand at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", S("%s takes stuff from nightstand at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
infotext=S("One-drawer Nightstand"),
inventory = {
size=8,
},
})
minetest.register_node('homedecor:nightstand_mahogany_two_drawers', {
drawtype = "nodebox",
homedecor.register("nightstand_mahogany_two_drawers", {
description = S("Mahogany Nightstand with Two Drawers"),
tiles = { 'homedecor_nightstand_mahogany_top.png',
'homedecor_nightstand_mahogany_bottom.png',
@ -206,56 +92,20 @@ minetest.register_node('homedecor:nightstand_mahogany_two_drawers', {
'homedecor_nightstand_mahogany_left.png',
'homedecor_nightstand_mahogany_back.png',
'homedecor_nightstand_mahogany_2_drawer_front.png'},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
selection_box = { type = "regular" },
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, -30/64, 8/16, 8/16, 8/16 }, -- main body
{ -7/16, 1/16, -32/64, 7/16, 7/16, -29/64 }, -- top drawer face
{ -7/16, -7/16, -32/64, 7/16, -1/16, -29/64 }, -- bottom drawer face
}
},
},
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"size[8,7]"..
"list[current_name;main;0,0;8,2;]"..
"list[current_player;main;0,3;8,4;]")
meta:set_string("infotext", S("Two-drawer Nightstand"))
local inv = meta:get_inventory()
inv:set_size("main", 16)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", S("%s moves stuff in nightstand at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", S("%s moves stuff to nightstand at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", S("%s takes stuff from nightstand at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
infotext=S("Two-drawer Nightstand"),
inventory = {
size=16,
},
})

View File

@ -1,9 +1,8 @@
--Various kinds of paintings
for i = 1,20 do
minetest.register_node("homedecor:painting_"..i, {
homedecor.register("painting_"..i, {
description = "Decorative painting #"..i,
drawtype = "nodebox",
tiles = {
"homedecor_painting_edges.png",
"homedecor_painting_edges.png",
@ -12,8 +11,6 @@ for i = 1,20 do
"homedecor_painting_back.png",
"homedecor_painting"..i..".png"
},
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {

View File

@ -1,323 +0,0 @@
-- This file supplies refrigerators
local S = homedecor.gettext
-- nodebox models
local fridge_model_bottom = {
type = "fixed",
fixed = {
{0, -0.4375, -0.4375, 0.5, 0.5, 0.5}, -- NodeBox1
{-0.5, -0.5, -0.42, 0.5, 0.5, 0.5}, -- NodeBox2
{-0.5, -0.4375, -0.4375, -0.0625, 0.5, 0.5}, -- NodeBox3
{0, 0.25, -0.5, 0.0625, 0.3125, -0.4375}, -- NodeBox4
{-0.125, 0.25, -0.5, -0.0625, 0.3125, -0.4375}, -- NodeBox5
{0, 0.25, -0.5, 0.0625, 0.5, -0.473029}, -- NodeBox6
{-0.125, 0.25, -0.5, -0.0625, 0.5, -0.473029}, -- NodeBox7
}
}
local fridge_model_top = {
type = "fixed",
fixed = {
{0, -0.5, -0.4375, 0.5, 0.5, 0.5}, -- NodeBox1
{-0.0625, -0.5, -0.42, 0, 0.5, 0.5}, -- NodeBox2
{-0.5, -0.5, -0.4375, -0.0625, -0.4375, 0.5}, -- NodeBox3
{-0.5, -0.5, -0.4375, -0.4375, 0.5, 0.5}, -- NodeBox4
{-0.5, -0.1875, -0.4375, -0.0625, 0.5, 0.5}, -- NodeBox5
{-0.4375, -0.4375, -0.125, -0.0625, -0.1875, 0.5}, -- NodeBox6
{-0.125, -0.4375, -0.4375, -0.0625, -0.1875, -0.125}, -- NodeBox7
{-0.3125, -0.3125, -0.307054, -0.25, -0.1875, -0.286307}, -- NodeBox8
{-0.125, 0, -0.5, -0.0625, 0.0625, -0.4375}, -- NodeBox9
{0, 0, -0.5, 0.0625, 0.0625, -0.4375}, -- NodeBox10
{0, -0.5, -0.5, 0.0625, 0.0625, -0.473029}, -- NodeBox11
{-0.125, -0.5, -0.5, -0.0625, 0.0625, -0.473029}, -- NodeBox12
}
}
-- steel-textured fridge
minetest.register_node("homedecor:refrigerator_steel_bottom", {
tiles = {
"default_steel_block.png",
"homedecor_refrigerator_steel_bottom.png",
"homedecor_refrigerator_steel_sides1.png",
"homedecor_refrigerator_steel_sides1.png^[transformFX",
"homedecor_refrigerator_steel_back1.png",
"homedecor_refrigerator_steel_front2.png"
},
inventory_image = "homedecor_refrigerator_steel_inv.png",
description = S("Refrigerator (stainless steel)"),
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
node_box = fridge_model_bottom,
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 }
},
on_place = function(itemstack, placer, pointed_thing)
local pos = pointed_thing.under
local pnode = minetest.get_node(pointed_thing.under)
local rnodedef = minetest.registered_nodes[pnode.name]
if not rnodedef["buildable_to"] then
pos = pointed_thing.above
end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local pos2 = { x = pos.x, y=pos.y + 1, z = pos.z }
local tnode = minetest.get_node(pos)
local tnode2 = minetest.get_node(pos2)
if homedecor.get_nodedef_field(tnode.name, "buildable_to")
and homedecor.get_nodedef_field(tnode2.name, "buildable_to")
and not minetest.is_protected(pos, placer:get_player_name())
and not minetest.is_protected(pos2, placer:get_player_name()) then
local nodename = itemstack:get_name()
minetest.add_node(pos, { name = nodename, param2 = fdir })
minetest.add_node(pos2, { name = "homedecor:refrigerator_steel_top", param2 = fdir })
if string.find(nodename, "_locked") then
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", S("Locked Refrigerator (owned by %s)"):format(meta:get_string("owner")))
end
if not homedecor.expect_infinite_stacks then
itemstack:take_item()
return itemstack
end
end
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local pos2 = { x = pos.x, y=pos.y + 1, z = pos.z }
if minetest.get_node(pos2).name == "homedecor:refrigerator_steel_top" then
minetest.remove_node(pos2)
end
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"size[10,10]"..
"list[current_name;main;0,0;10,5;]"..
"list[current_player;main;1,6;8,4;]")
meta:set_string("infotext", S("Refrigerator"))
local inv = meta:get_inventory()
inv:set_size("main",50)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", S("%s moves stuff in refrigerator at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", S("%s moves stuff to refrigerator at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", S("%s takes stuff from refrigerator at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
})
minetest.register_node("homedecor:refrigerator_steel_top", {
tiles = {
"homedecor_refrigerator_steel_top.png",
"default_steel_block.png",
"homedecor_refrigerator_steel_sides1.png",
"homedecor_refrigerator_steel_sides1.png^[transformFX",
"homedecor_refrigerator_steel_back1.png",
"homedecor_refrigerator_steel_front1.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
node_box = fridge_model_top,
selection_box = {
type = "fixed",
fixed = { 0, 0, 0, 0, 0, 0 }
},
})
-- white, enameled fridge
minetest.register_node("homedecor:refrigerator_white_bottom", {
tiles = {
"default_steel_block.png",
"homedecor_refrigerator_white_bottom.png",
"homedecor_refrigerator_white_sides1.png",
"homedecor_refrigerator_white_sides1.png^[transformFX",
"homedecor_refrigerator_white_back1.png",
"homedecor_refrigerator_white_front2.png"
},
inventory_image = "homedecor_refrigerator_white_inv.png",
description = S("Refrigerator"),
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
node_box = fridge_model_bottom,
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 }
},
on_place = function(itemstack, placer, pointed_thing)
local pos = pointed_thing.under
local pnode = minetest.get_node(pointed_thing.under)
local rnodedef = minetest.registered_nodes[pnode.name]
if not rnodedef["buildable_to"] then
pos = pointed_thing.above
end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local pos2 = { x = pos.x, y=pos.y + 1, z = pos.z }
local tnode = minetest.get_node(pos)
local tnode2 = minetest.get_node(pos2)
if homedecor.get_nodedef_field(tnode.name, "buildable_to")
and homedecor.get_nodedef_field(tnode2.name, "buildable_to")
and not minetest.is_protected(pos, placer:get_player_name())
and not minetest.is_protected(pos2, placer:get_player_name()) then
local nodename = itemstack:get_name()
minetest.add_node(pos, { name = nodename, param2 = fdir })
minetest.add_node(pos2, { name = "homedecor:refrigerator_white_top", param2 = fdir })
if string.find(nodename, "_locked") then
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", S("Locked Refrigerator (owned by %s)"):format(meta:get_string("owner")))
end
if not homedecor.expect_infinite_stacks then
itemstack:take_item()
return itemstack
end
end
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local pos2 = { x = pos.x, y=pos.y + 1, z = pos.z }
if minetest.get_node(pos2).name == "homedecor:refrigerator_white_top" then
minetest.remove_node(pos2)
end
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"size[10,10]"..
"list[current_name;main;0,0;10,5;]"..
"list[current_player;main;1,6;8,4;]")
meta:set_string("infotext", S("Refrigerator"))
local inv = meta:get_inventory()
inv:set_size("main",50)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main")
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", S("%s moves stuff in refrigerator at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", S("%s moves stuff to refrigerator at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", S("%s takes stuff from refrigerator at %s"):format(
player:get_player_name(),
minetest.pos_to_string(pos)
))
end,
})
minetest.register_node("homedecor:refrigerator_white_top", {
tiles = {
"homedecor_refrigerator_white_top.png",
"default_steel_block.png",
"homedecor_refrigerator_white_sides1.png",
"homedecor_refrigerator_white_sides1.png^[transformFX",
"homedecor_refrigerator_white_back1.png",
"homedecor_refrigerator_white_front1.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
node_box = fridge_model_top,
selection_box = {
type = "fixed",
fixed = { 0, 0, 0, 0, 0, 0 }
},
})
-- convert the old single-node fridges to the new two-node models
minetest.register_abm({
nodenames = { "homedecor:refrigerator" },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2
local p_top = { x=pos.x, y=pos.y+1, z=pos.z }
minetest.swap_node(pos, { name = "homedecor:refrigerator_white_bottom", param2 = fdir })
minetest.set_node(p_top, { name = "homedecor:refrigerator_white_top", param2 = fdir })
end
})
minetest.register_abm({
nodenames = { "homedecor:refrigerator_locked" },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2
local p_top = { x=pos.x, y=pos.y+1, z=pos.z }
minetest.swap_node(pos, { name = "homedecor:refrigerator_white_bottom_locked", param2 = fdir })
minetest.set_node(p_top, { name = "homedecor:refrigerator_white_top", param2 = fdir })
end
})
minetest.register_abm({
nodenames = { "homedecor:refrigerator_steel" },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2
local p_top = { x=pos.x, y=pos.y+1, z=pos.z }
minetest.swap_node(pos, { name = "homedecor:refrigerator_steel_bottom", param2 = fdir })
minetest.set_node(p_top, { name = "homedecor:refrigerator_steel_top", param2 = fdir })
end
})
minetest.register_abm({
nodenames = { "homedecor:refrigerator_steel_locked" },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2
local p_top = { x=pos.x, y=pos.y+1, z=pos.z }
minetest.swap_node(pos, { name = "homedecor:refrigerator_steel_bottom_locked", param2 = fdir })
minetest.set_node(p_top, { name = "homedecor:refrigerator_steel_top", param2 = fdir })
end
})

View File

@ -10,13 +10,9 @@ minetest.register_node("homedecor:skylight", {
inventory_image = "homedecor_skylight_inv.png",
paramtype = "light",
sunlight_propagates = true,
walkable = true,
groups = { snappy = 3 },
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, -0.4, 0.5 }
}
selection_box = homedecor.nodebox.slab_y(0.1),
})
minetest.register_node("homedecor:skylight_frosted", {
@ -28,13 +24,9 @@ minetest.register_node("homedecor:skylight_frosted", {
paramtype = "light",
sunlight_propagates = true,
use_texture_alpha = true,
walkable = true,
groups = { snappy = 3 },
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, -0.4, 0.5 }
}
selection_box = homedecor.nodebox.slab_y(0.1),
})
minetest.register_node("homedecor:shingles_wood", {
@ -44,14 +36,10 @@ minetest.register_node("homedecor:shingles_wood", {
wield_image = "homedecor_shingles_wood.png",
inventory_image = "homedecor_shingles_wood_inv.png",
paramtype = "light",
sunlight_propagates = false,
walkable = false,
groups = { snappy = 3 },
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, -0.4, 0.5 }
}
selection_box = homedecor.nodebox.slab_y(0.1),
})
minetest.register_node("homedecor:shingles_asphalt", {
@ -61,14 +49,10 @@ minetest.register_node("homedecor:shingles_asphalt", {
wield_image = "homedecor_shingles_asphalt.png",
inventory_image = "homedecor_shingles_asphalt_inv.png",
paramtype = "light",
sunlight_propagates = false,
walkable = false,
groups = { snappy = 3 },
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, -0.4, 0.5 }
}
selection_box = homedecor.nodebox.slab_y(0.1),
})
minetest.register_node("homedecor:shingles_terracotta", {
@ -78,13 +62,9 @@ minetest.register_node("homedecor:shingles_terracotta", {
wield_image = "homedecor_shingles_terracotta.png",
inventory_image = "homedecor_shingles_terracotta_inv.png",
paramtype = "light",
sunlight_propagates = false,
walkable = false,
groups = { snappy = 3 },
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, -0.4, 0.5 }
}
selection_box = homedecor.nodebox.slab_y(0.1),
})

View File

@ -20,8 +20,7 @@ for i in ipairs(shutters) do
local name = shutters[i][1]
local desc = shutters[i][2]
minetest.register_node("homedecor:shutter_"..name, {
drawtype = "mesh",
homedecor.register("shutter_"..name, {
mesh = "homedecor_window_shutter.obj",
tiles = { "homedecor_window_shutter_"..name..".png" },
description = S("Wooden Shutter ("..desc..")"),

View File

@ -60,10 +60,7 @@ homedecor.register_inner_corner = function(modname, subname, groups, slope_image
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}
},
selection_box = { type = "regular" },
collision_box = icorner_cbox,
groups = groups,
on_place = minetest.rotate_node
@ -180,20 +177,20 @@ minetest.register_craft( {
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:shingle_inner_corner_wood",
burntime = 30,
type = "fuel",
recipe = "homedecor:shingle_inner_corner_wood",
burntime = 30,
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:shingle_outer_corner_wood",
burntime = 30,
type = "fuel",
recipe = "homedecor:shingle_outer_corner_wood",
burntime = 30,
})
minetest.register_craft({
type = "fuel",
recipe = "homedecor:shingle_side_wood",
type = "fuel",
recipe = "homedecor:shingle_side_wood",
burntime = 30,
})

View File

@ -25,19 +25,15 @@ for i in ipairs(materials) do
-- small square tables
minetest.register_node("homedecor:"..m.."_table_small_square", {
homedecor.register(m.."_table_small_square", {
description = S(d.." Table (Small, Square)"),
drawtype = 'mesh',
mesh = "homedecor_table_small_square.obj",
tiles = { 'homedecor_'..m..'_table_small_square.png' },
wield_image = 'homedecor_'..m..'_table_small_square_inv.png',
inventory_image = 'homedecor_'..m..'_table_small_square_inv.png',
sunlight_propagates = true,
paramtype = 'light',
walkable = true,
groups = { snappy = 3 },
sounds = s,
paramtype2 = "facedir",
selection_box = tables_cbox,
collision_box = tables_cbox,
on_place = minetest.rotate_node
@ -45,19 +41,15 @@ for i in ipairs(materials) do
-- small round tables
minetest.register_node('homedecor:'..m..'_table_small_round', {
homedecor.register(m..'_table_small_round', {
description = S(d.." Table (Small, Round)"),
drawtype = "mesh",
mesh = "homedecor_table_small_round.obj",
tiles = { "homedecor_"..m.."_table_small_round.png" },
wield_image = 'homedecor_'..m..'_table_small_round_inv.png',
inventory_image = 'homedecor_'..m..'_table_small_round_inv.png',
sunlight_propagates = true,
paramtype = 'light',
walkable = true,
groups = { snappy = 3 },
sounds = s,
paramtype2 = "facedir",
selection_box = tables_cbox,
collision_box = tables_cbox,
on_place = minetest.rotate_node
@ -65,10 +57,9 @@ for i in ipairs(materials) do
-- Large square table pieces
minetest.register_node('homedecor:'..m..'_table_large', {
homedecor.register(m..'_table_large', {
description = S(d.." Table Piece (large)"),
drawtype = 'nodebox',
tiles = {
tiles = {
'homedecor_'..m..'_table_large_tb.png',
'homedecor_'..m..'_table_large_tb.png',
'homedecor_'..m..'_table_large_edges.png',
@ -79,11 +70,8 @@ for i in ipairs(materials) do
wield_image = 'homedecor_'..m..'_table_large_inv.png',
inventory_image = 'homedecor_'..m..'_table_large_inv.png',
sunlight_propagates = true,
paramtype = 'light',
walkable = true,
groups = { snappy = 3 },
sounds = s,
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, -0.4375, 0.5 },
@ -138,7 +126,7 @@ minetest.register_abm({
-- other tables
minetest.register_node('homedecor:utility_table_top', {
homedecor.register("utility_table_top", {
description = S("Utility Table"),
tiles = {
'homedecor_utility_table_tb.png',
@ -150,10 +138,6 @@ minetest.register_node('homedecor:utility_table_top', {
},
wield_image = 'homedecor_utility_table_tb.png',
inventory_image = 'homedecor_utility_table_tb.png',
drawtype = "nodebox",
sunlight_propagates = false,
paramtype = "light",
walkable = true,
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
paramtype2 = "wallmounted",
@ -163,7 +147,7 @@ minetest.register_node('homedecor:utility_table_top', {
wall_top = { -0.5, 0.4375, -0.5, 0.5, 0.5, 0.5 },
wall_side = { -0.5, -0.5, -0.5, -0.4375, 0.5, 0.5 },
},
selection_box = {
selection_box = {
type = "wallmounted",
wall_bottom = { -0.5, -0.5, -0.5, 0.5, -0.4375, 0.5 },
wall_top = { -0.5, 0.4375, -0.5, 0.5, 0.5, 0.5 },
@ -173,59 +157,53 @@ minetest.register_node('homedecor:utility_table_top', {
-- Various kinds of table legs
minetest.register_node("homedecor:table_legs_brass", {
description = S("Brass Table Legs"),
drawtype = "plantlike",
tiles = {"homedecor_table_legs_brass.png"},
inventory_image = "homedecor_table_legs_brass.png",
wield_image = "homedecor_table_legs_brass.png",
paramtype = "light",
walkable = false,
groups = {snappy=3},
sounds = default.node_sound_leaves_defaults(),
walkable = true,
selection_box = {
homedecor.register("table_legs_brass", {
description = S("Brass Table Legs"),
drawtype = "plantlike",
tiles = {"homedecor_table_legs_brass.png"},
inventory_image = "homedecor_table_legs_brass.png",
wield_image = "homedecor_table_legs_brass.png",
walkable = false,
groups = {snappy=3},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.37, -0.5, -0.37, 0.37, 0.5, 0.37 }
},
})
minetest.register_node("homedecor:table_legs_wrought_iron", {
description = S("Wrought Iron Table Legs"),
drawtype = "plantlike",
tiles = {"homedecor_table_legs_wrought_iron.png"},
inventory_image = "homedecor_table_legs_wrought_iron.png",
wield_image = "homedecor_table_legs_wrought_iron.png",
paramtype = "light",
walkable = false,
groups = {snappy=3},
sounds = default.node_sound_leaves_defaults(),
walkable = true,
selection_box = {
homedecor.register("table_legs_wrought_iron", {
description = S("Wrought Iron Table Legs"),
drawtype = "plantlike",
tiles = {"homedecor_table_legs_wrought_iron.png"},
inventory_image = "homedecor_table_legs_wrought_iron.png",
wield_image = "homedecor_table_legs_wrought_iron.png",
walkable = false,
groups = {snappy=3},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.37, -0.5, -0.37, 0.37, 0.5, 0.37 }
},
})
minetest.register_node('homedecor:utility_table_legs', {
homedecor.register("utility_table_legs", {
description = S("Legs for Utility Table"),
drawtype = "plantlike",
tiles = { 'homedecor_utility_table_legs.png' },
inventory_image = 'homedecor_utility_table_legs_inv.png',
wield_image = 'homedecor_utility_table_legs.png',
sunlight_propagates = true,
paramtype = "light",
walkable = false,
groups = { snappy = 3 },
sounds = default.node_sound_wood_defaults(),
selection_box = {
selection_box = {
type = "fixed",
fixed = { -0.37, -0.5, -0.37, 0.37, 0.5, 0.37 }
},
})
minetest.register_node("homedecor:desk", {
drawtype = "nodebox",
homedecor.register("desk", {
description = "Desk",
tiles = {
"forniture_wood.png",
@ -236,8 +214,6 @@ minetest.register_node("homedecor:desk", {
"homedecor_desk_front_l.png"
},
inventory_image = "homedecor_desk_inv.png",
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
@ -253,22 +229,12 @@ minetest.register_node("homedecor:desk", {
fixed = { -0.5, -0.5, -0.5, 1.5, 0.5, 0.5 }
},
groups = { snappy = 3 },
on_place = function(itemstack, placer, pointed_thing)
return homedecor.stack_sideways(itemstack, placer, pointed_thing,
"homedecor:desk", "homedecor:desk_r", true)
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local fdir = oldnode.param2
if not fdir or fdir > 3 then return end
local pos2 = { x = pos.x + homedecor.fdir_to_right[fdir+1][1], y=pos.y, z = pos.z + homedecor.fdir_to_right[fdir+1][2] }
if minetest.get_node(pos2).name == "homedecor:desk_r" then
minetest.remove_node(pos2)
end
end
expand = {
right="homedecor:desk_r"
},
})
minetest.register_node("homedecor:desk_r", {
drawtype = "nodebox",
homedecor.register("desk_r", {
tiles = {
"forniture_wood.png",
"forniture_wood.png",
@ -277,8 +243,6 @@ minetest.register_node("homedecor:desk_r", {
"homedecor_desk_back_r.png",
"homedecor_desk_front_r.png"
},
paramtype = "light",
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
@ -289,10 +253,7 @@ minetest.register_node("homedecor:desk_r", {
{-0.5, -0.375, 0.4375, 0.4375, 0.25, 0.5},
}
},
selection_box = {
type = "fixed",
fixed = { 0,0,0,0,0,0 }
},
selection_box = homedecor.nodebox.null,
groups = { snappy = 3, not_in_creative_inventory=1 }
})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 476 B

After

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 481 B

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

After

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 B

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 B

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 B

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 369 B

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 467 B

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 B

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 B

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 B

After

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 838 B

After

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 866 B

After

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 682 B

After

Width:  |  Height:  |  Size: 531 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 319 B

After

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 B

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 B

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 311 B

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 B

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 417 B

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 B

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 B

After

Width:  |  Height:  |  Size: 438 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 B

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 357 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 B

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 B

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 B

After

Width:  |  Height:  |  Size: 297 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 B

After

Width:  |  Height:  |  Size: 494 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 B

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 403 B

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 B

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 B

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 B

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 399 B

After

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 B

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 B

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 B

After

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 B

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 397 B

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 730 B

After

Width:  |  Height:  |  Size: 647 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 B

After

Width:  |  Height:  |  Size: 164 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 B

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 B

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