mirror of
https://github.com/mt-mods/homedecor_modpack.git
synced 2024-12-27 18:20:22 +01:00
b51d27135b
* psuedo code for jump drive support * avoid re-calculating node hash in loop * cache new position for next move * clean comment and minetest -> core * cache seat offset for sofas * use first found sitting position * cleanup some comments * bugfix: reported seat occupied when it wasn't --------- Co-authored-by: Luke aka SwissalpS <Luke@SwissalpS.ws>
366 lines
10 KiB
Lua
366 lines
10 KiB
Lua
-- this component contains all of the random types of seating previously
|
|
-- scattered among homedecor's other mods
|
|
|
|
local S = minetest.get_translator("homedecor_seating")
|
|
|
|
local dc_cbox = {
|
|
type = "fixed",
|
|
fixed = { -0.5, -0.5, -0.5, 0.5, 0, 1 }
|
|
}
|
|
|
|
homedecor.register("deckchair", {
|
|
mesh = "homedecor_deckchair.obj",
|
|
tiles = {"homedecor_deckchair.png"},
|
|
description = S("Deck Chair"),
|
|
groups = { snappy = 3, dig_tree=2 },
|
|
expand = { forward="placeholder" },
|
|
_sound_def = {
|
|
key = "node_sound_wood_defaults",
|
|
},
|
|
selection_box = dc_cbox,
|
|
collision_box = dc_cbox,
|
|
on_rotate = minetest.get_modpath("screwdriver") and screwdriver.disallow or nil,
|
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
|
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
|
|
end,
|
|
on_destruct = lrfurn.on_seat_destruct,
|
|
on_movenode = lrfurn.on_seat_movenode,
|
|
})
|
|
|
|
minetest.register_alias("homedecor:deckchair_foot", "homedecor:deckchair")
|
|
minetest.register_alias("homedecor:deckchair_head", "air")
|
|
|
|
homedecor.register("deckchair_striped_blue", {
|
|
mesh = "homedecor_deckchair.obj",
|
|
tiles = {"homedecor_deckchair_striped_blue.png"},
|
|
description = S("Deck Chair (blue striped)"),
|
|
groups = { snappy = 3, dig_tree=2 },
|
|
expand = { forward="placeholder" },
|
|
_sound_def = {
|
|
key = "node_sound_wood_defaults",
|
|
},
|
|
selection_box = dc_cbox,
|
|
collision_box = dc_cbox,
|
|
on_rotate = minetest.get_modpath("screwdriver") and screwdriver.disallow or nil,
|
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
|
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
|
|
end,
|
|
on_destruct = lrfurn.on_seat_destruct,
|
|
on_movenode = lrfurn.on_seat_movenode,
|
|
})
|
|
|
|
homedecor.register("simple_bench", {
|
|
tiles = { "homedecor_generic_wood_old.png" },
|
|
description = S("Simple Bench"),
|
|
groups = {snappy=3, dig_tree=2},
|
|
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},
|
|
}
|
|
},
|
|
_sound_def = {
|
|
key = "node_sound_wood_defaults",
|
|
},
|
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
|
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
|
|
end,
|
|
on_destruct = lrfurn.on_seat_destruct,
|
|
on_movenode = lrfurn.on_seat_movenode,
|
|
})
|
|
|
|
local bl1_sbox = {
|
|
type = "fixed",
|
|
fixed = { -0.5, -0.5, -0.25, 1.5, 0.5, 0.5 }
|
|
}
|
|
|
|
local bl1_cbox = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.5, -0.25, 1.5, 0, 0.5 },
|
|
{-0.5, -0.5, 0.45, 1.5, 0.5, 0.5 },
|
|
}
|
|
}
|
|
|
|
homedecor.register("bench_large_1", {
|
|
mesh = "homedecor_bench_large_1.obj",
|
|
tiles = {
|
|
"homedecor_generic_wood_old.png",
|
|
"homedecor_generic_metal_wrought_iron.png"
|
|
},
|
|
description = S("Garden Bench (style 1)"),
|
|
inventory_image = "homedecor_bench_large_1_inv.png",
|
|
groups = { snappy = 3, dig_tree=2 },
|
|
expand = { right="placeholder" },
|
|
_sound_def = {
|
|
key = "node_sound_wood_defaults",
|
|
},
|
|
selection_box = bl1_sbox,
|
|
node_box = bl1_cbox,
|
|
on_rotate = minetest.get_modpath("screwdriver") and screwdriver.disallow or nil,
|
|
})
|
|
|
|
minetest.register_alias("homedecor:bench_large_1_left", "homedecor:bench_large_1")
|
|
minetest.register_alias("homedecor:bench_large_1_right", "air")
|
|
|
|
local bl2_sbox = {
|
|
type = "fixed",
|
|
fixed = { -0.5, -0.5, -0.25, 1.5, 0.5, 0.5 }
|
|
}
|
|
|
|
local bl2_cbox = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.5, -0.25, 1.5, 0, 0.5 },
|
|
{-0.5, -0.5, 0.45, 1.5, 0.5, 0.5 },
|
|
}
|
|
}
|
|
|
|
homedecor.register("bench_large_2", {
|
|
description = S("Garden Bench (style 2)"),
|
|
mesh = "homedecor_bench_large_2.obj",
|
|
tiles = { "homedecor_generic_wood_old.png" },
|
|
inventory_image = "homedecor_bench_large_2_inv.png",
|
|
groups = {snappy=3, dig_tree=2},
|
|
selection_box = bl2_sbox,
|
|
node_box = bl2_cbox,
|
|
expand = { right="placeholder" },
|
|
_sound_def = {
|
|
key = "node_sound_wood_defaults",
|
|
},
|
|
on_rotate = minetest.get_modpath("screwdriver") and screwdriver.disallow or nil,
|
|
})
|
|
|
|
minetest.register_alias("homedecor:bench_large_2_left", "homedecor:bench_large_2")
|
|
minetest.register_alias("homedecor:bench_large_2_right", "air")
|
|
|
|
local kc_cbox = {
|
|
type = "fixed",
|
|
fixed = { -0.3125, -0.3125, -0.5, 0.3125, 0.3125, 0.5 },
|
|
}
|
|
|
|
homedecor.register("kitchen_chair_wood", {
|
|
description = S("Kitchen chair"),
|
|
mesh = "homedecor_kitchen_chair.obj",
|
|
tiles = {
|
|
homedecor.plain_wood,
|
|
homedecor.plain_wood
|
|
},
|
|
inventory_image = "homedecor_chair_wood_inv.png",
|
|
paramtype2 = "wallmounted",
|
|
selection_box = kc_cbox,
|
|
collision_box = kc_cbox,
|
|
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
|
|
_sound_def = {
|
|
key = "node_sound_wood_defaults",
|
|
},
|
|
after_place_node = unifieddyes.fix_rotation_nsew,
|
|
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
|
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
|
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
|
|
end,
|
|
on_destruct = lrfurn.on_seat_destruct,
|
|
on_movenode = lrfurn.on_seat_movenode,
|
|
})
|
|
|
|
homedecor.register("kitchen_chair_padded", {
|
|
description = S("Kitchen chair"),
|
|
mesh = "homedecor_kitchen_chair.obj",
|
|
tiles = {
|
|
homedecor.plain_wood,
|
|
homedecor.textures.wool.white,
|
|
},
|
|
inventory_image = "homedecor_chair_padded_inv.png",
|
|
paramtype2 = "colorwallmounted",
|
|
palette = "unifieddyes_palette_colorwallmounted.png",
|
|
selection_box = kc_cbox,
|
|
collision_box = kc_cbox,
|
|
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, ud_param2_colorable = 1},
|
|
_sound_def = {
|
|
key = "node_sound_wood_defaults",
|
|
},
|
|
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
|
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
|
|
end,
|
|
on_dig = unifieddyes.on_dig,
|
|
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
|
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
|
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
|
|
end,
|
|
on_destruct = lrfurn.on_seat_destruct,
|
|
on_movenode = lrfurn.on_seat_movenode,
|
|
})
|
|
|
|
local ofchairs_sbox = {
|
|
type = "fixed",
|
|
fixed = { -8/16, -8/16, -8/16, 8/16, 29/32, 8/16 }
|
|
}
|
|
local ofchairs_cbox = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{ -5/16, 1/16, -7/16, 5/16, 4/16, 7/16 }, -- seat
|
|
{ -5/16, 4/16, 4/16, 5/16, 29/32, 15/32 }, -- seatback
|
|
{ -1/16, -11/32, -1/16, 1/16, 1/16, 1/16 }, -- cylinder
|
|
{ -8/16, -8/16, -8/16, 8/16, -11/32, 8/16 } -- legs/wheels
|
|
}
|
|
}
|
|
|
|
local chairs = {
|
|
{ "basic", S("Basic office chair") },
|
|
{ "upscale", S("Upscale office chair") },
|
|
}
|
|
|
|
for _, c in pairs(chairs) do
|
|
local name, desc = unpack(c)
|
|
homedecor.register("office_chair_"..name, {
|
|
description = desc,
|
|
drawtype = "mesh",
|
|
tiles = { "homedecor_office_chair_"..name..".png" },
|
|
mesh = "homedecor_office_chair_"..name..".obj",
|
|
groups = { snappy = 3, dig_tree=2 },
|
|
_sound_def = {
|
|
key = "node_sound_wood_defaults",
|
|
},
|
|
selection_box = ofchairs_sbox,
|
|
collision_box = ofchairs_cbox,
|
|
expand = { top = "placeholder" },
|
|
on_rotate = minetest.get_modpath("screwdriver") and screwdriver.rotate_simple or nil,
|
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
|
return lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, 1)
|
|
end,
|
|
on_destruct = lrfurn.on_seat_destruct,
|
|
on_movenode = lrfurn.on_seat_movenode,
|
|
})
|
|
end
|
|
|
|
-- crafts!
|
|
|
|
minetest.register_craft( {
|
|
output = "homedecor:bench_large_1",
|
|
recipe = {
|
|
{ "group:wood", "group:wood", "group:wood" },
|
|
{ "group:wood", "group:wood", "group:wood" },
|
|
{ "basic_materials:steel_bar", "", "basic_materials:steel_bar" }
|
|
},
|
|
})
|
|
|
|
minetest.register_craft( {
|
|
output = "homedecor:bench_large_2_left",
|
|
recipe = {
|
|
{ "homedecor:shutter_oak", "homedecor:shutter_oak", "homedecor:shutter_oak" },
|
|
{ "group:wood", "group:wood", "group:wood" },
|
|
{ homedecor.materials.slab_wood, "", homedecor.materials.slab_wood }
|
|
},
|
|
})
|
|
|
|
minetest.register_craft( {
|
|
output = "homedecor:bench_large_2_left",
|
|
recipe = {
|
|
{ "homedecor:shutter_oak", "homedecor:shutter_oak", "homedecor:shutter_oak" },
|
|
{ "group:wood", "group:wood", "group:wood" },
|
|
{ "moreblocks:slab_wood", "", "moreblocks:slab_wood" }
|
|
},
|
|
})
|
|
|
|
minetest.register_craft( {
|
|
output = "homedecor:simple_bench",
|
|
recipe = {
|
|
{ homedecor.materials.slab_wood, homedecor.materials.slab_wood, homedecor.materials.slab_wood },
|
|
{ homedecor.materials.slab_wood, "", homedecor.materials.slab_wood }
|
|
},
|
|
})
|
|
|
|
minetest.register_craft( {
|
|
output = "homedecor:simple_bench",
|
|
recipe = {
|
|
{ "moreblocks:slab_wood", "moreblocks:slab_wood", "moreblocks:slab_wood" },
|
|
{ "moreblocks:slab_wood", "", "moreblocks:slab_wood" }
|
|
},
|
|
})
|
|
|
|
|
|
minetest.register_craft({
|
|
output = "homedecor:deckchair",
|
|
recipe = {
|
|
{ "group:stick", "building_blocks:terrycloth_towel", "group:stick" },
|
|
{ "group:stick", "building_blocks:terrycloth_towel", "group:stick" },
|
|
{ "group:stick", "building_blocks:terrycloth_towel", "group:stick" }
|
|
},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "homedecor:deckchair_striped_blue",
|
|
type = "shapeless",
|
|
recipe = {
|
|
"homedecor:deckchair",
|
|
"dye:blue"
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "homedecor:kitchen_chair_wood 2",
|
|
recipe = {
|
|
{ "group:stick",""},
|
|
{ "group:wood","group:wood" },
|
|
{ "group:stick","group:stick" },
|
|
},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "shapeless",
|
|
output = "homedecor:kitchen_chair_padded",
|
|
recipe = {
|
|
"homedecor:kitchen_chair_wood",
|
|
homedecor.materials.wool_white,
|
|
},
|
|
})
|
|
|
|
unifieddyes.register_color_craft({
|
|
output = "homedecor:kitchen_chair_padded",
|
|
palette = "wallmounted",
|
|
type = "shapeless",
|
|
neutral_node = "homedecor:kitchen_chair_padded",
|
|
recipe = {
|
|
"NEUTRAL_NODE",
|
|
"MAIN_DYE"
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "homedecor:kitchen_chair_wood",
|
|
burntime = 15,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "homedecor:kitchen_chair_padded",
|
|
burntime = 15,
|
|
})
|
|
|
|
|
|
minetest.register_craft({
|
|
output = "homedecor:office_chair_basic",
|
|
recipe = {
|
|
{ "", "", homedecor.materials.wool_black },
|
|
{ "", homedecor.materials.wool_black, homedecor.materials.steel_ingot },
|
|
{ "group:stick", "basic_materials:steel_bar", "group:stick" }
|
|
},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "homedecor:office_chair_upscale",
|
|
recipe = {
|
|
{ homedecor.materials.dye_black, "building_blocks:sticks", "group:wool" },
|
|
{ "basic_materials:plastic_sheet", "group:wool", homedecor.materials.steel_ingot },
|
|
{ "building_blocks:sticks", "basic_materials:steel_bar", "building_blocks:sticks" }
|
|
},
|
|
})
|
|
|
|
-- aliases
|
|
|
|
minetest.register_alias("3dforniture:chair", "homedecor:chair")
|
|
minetest.register_alias('chair', 'homedecor:chair')
|