Epic/mods/furniture/seating.lua

353 lines
12 KiB
Lua

minetest.register_node('furniture:half_seat', {
description = 'Half seat with no back',
drawtype = 'airlike',
paramtype = 'light',
pointable = true,
diggable = false,
drop = '',
groups = {not_in_creative_inventory = 1, empty_node=1},
on_blast = function() end,
tiles = {'epic_blank.png'},
selection_box= {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, .0125, .375}
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0
furniture.sit(pos, node, clicker, pointed_thing, false)
return itemstack
end,
})
minetest.register_node('furniture:half_seat_back', {
description = 'Half seat with no back',
drawtype = 'airlike',
paramtype = 'light',
pointable = true,
diggable = false,
drop = '',
groups = {not_in_creative_inventory = 1, empty_node=1},
on_blast = function() end,
tiles = {'epic_blank.png'},
selection_box= {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, .0125, .375}
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0
furniture.sit(pos, node, clicker, pointed_thing, true)
return itemstack
end,
})
minetest.register_node('furniture:stool_short', {
_doc_items_crafting = 'This is crafted in the Woodworking Station.',
description = 'Short stool',
drawtype = 'mesh',
mesh = 'furniture_stool_short.obj',
tiles = {'furniture_stool_short.png'},
paramtype = 'light',
paramtype2 = 'colorfacedir',
palette = 'furniture_stain_palette.png',
selection_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, 0, .375},
},
collision_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, 0, .375},
},
groups = {oddly_breakable_by_hand = 2, choppy=3, stainable=1},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0
furniture.sit(pos, node, clicker, pointed_thing, false)
return itemstack
end
})
minetest.register_node('furniture:stool_tall', {
_doc_items_crafting = 'This is crafted in the Woodworking Station.',
description = 'Tall stool',
drawtype = 'mesh',
mesh = 'furniture_stool_tall.obj',
tiles = {'furniture_stool_tall.png'},
paramtype = 'light',
paramtype2 = 'colorfacedir',
palette = 'furniture_stain_palette.png',
selection_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, .5, .375},
},
collision_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, .5, .375},
},
groups = {oddly_breakable_by_hand = 2, choppy=3, stainable=1},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + .5
furniture.sit(pos, node, clicker, pointed_thing, false)
return itemstack
end
})
minetest.register_node('furniture:chair', {
_doc_items_crafting = 'This is crafted in the Woodworking Station.',
description = 'Chair',
drawtype = 'mesh',
mesh = 'furniture_chair.obj',
tiles = {'furniture_chair.png'},
paramtype = 'light',
paramtype2 = 'colorfacedir',
palette = 'furniture_stain_palette.png',
selection_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, 0, .375},
},
collision_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, 0, .375},
},
groups = {oddly_breakable_by_hand = 2, choppy=3, stainable=1},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0
furniture.sit(pos, node, clicker, pointed_thing, true)
return itemstack
end
})
minetest.register_node('furniture:bench', {
_doc_items_crafting = 'This is crafted in the Woodworking Station.',
description = 'Bench',
drawtype = 'mesh',
mesh = 'furniture_bench.obj',
tiles = {'furniture_bench.png'},
paramtype = 'light',
paramtype2 = 'colorfacedir',
palette = 'furniture_stain_palette.png',
selection_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, 1.375, 0, .375},
},
collision_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, 1.375, 0, .375},
},
groups = {oddly_breakable_by_hand = 2, choppy=3, stainable=1},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0
furniture.sit(pos, node, clicker, pointed_thing, false)
return itemstack
end,
after_place_node = function(pos, placer, itemstack)
if not epic.space_to_side(pos, 'furniture:half_seat') then
minetest.remove_node(pos)
return itemstack
end
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
epic.remove_side_node(pos, oldnode)
end,
on_rotate = function(pos, node)
return false
end,
})
minetest.register_node('furniture:bench_with_back', {
_doc_items_crafting = 'This is crafted in the Woodworking Station.',
description = 'Bench with Back',
drawtype = 'mesh',
mesh = 'furniture_bench_with_back.obj',
tiles = {'furniture_bench.png'},
paramtype = 'light',
paramtype2 = 'colorfacedir',
palette = 'furniture_stain_palette.png',
selection_box = {
type = 'fixed',
fixed = {{-.375, -.5, -.375, .5, 0, .45}, --seat
{-.375, 0, .275, 1.375, .5, .375}} --back
},
collision_box = {
type = 'fixed',
fixed = {{-.375, -.5, -.375, 1.375, 0, .45},
{-.375, 0, .275, 1.375, .5, .375}}
},
groups = {oddly_breakable_by_hand = 2, choppy=3, stainable=1},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0
furniture.sit(pos, node, clicker, pointed_thing, true)
return itemstack
end,
after_place_node = function(pos, placer, itemstack)
if not epic.space_to_side(pos, 'furniture:half_seat_back') then
minetest.remove_node(pos)
return itemstack
end
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
epic.remove_side_node(pos, oldnode)
end,
on_rotate = function(pos, node)
return false
end,
})
minetest.register_node('furniture:bench_picnic', {
_doc_items_crafting = 'This is crafted in the Woodworking Station.',
description = 'Picnic Table',
drawtype = 'mesh',
mesh = 'furniture_bench_picnic.obj',
tiles = {'furniture_bench_picnic.png'},
paramtype = 'light',
paramtype2 = 'colorfacedir',
palette = 'furniture_stain_palette.png',
selection_box = {
type = 'fixed',
fixed = {
{-.375, -.5, -.375, 1.375, 0, 1.375},
{-.375, 0, -.0625, 1.375, .5, 1.0625}
}
},
collision_box = {
type = 'fixed',
fixed = {
{-.375, -.5, -.375, 1.375, 0, 1.375},
{-.375, 0, -.0625, 1.375, .5, 1.0625}
}
},
groups = {oddly_breakable_by_hand = 2, choppy=3, stainable=1},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0
furniture.sit(pos, node, clicker, pointed_thing, false)
return itemstack
end,
after_place_node = function(pos, placer, itemstack)
if not epic.space_for_picnic(pos, 'furniture:half_seat') then
minetest.remove_node(pos)
return itemstack
end
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
epic.remove_picnic_nodes(pos, oldnode)
end,
on_rotate = function(pos, node)
return false
end,
})
---Cushioned items. Yay. :P
local dye_table = dye.dyes
for i in ipairs(dye_table) do
local name = dye_table[i][1]
local desc = dye_table[i][2]
local hex = dye_table[i][3]
minetest.register_node('furniture:stool_short_'..name, {
_doc_items_crafting = 'This is crafted in the Woodworking Station.',
description = 'Short Stool with '..desc..' Cushion',
drawtype = 'mesh',
mesh = 'furniture_stool_short_cushion.obj',
tiles = {'furniture_stool_short.png', 'furniture_cushion_pad.png'},
overlay_tiles = {'', {name = 'furniture_cushion_pad.png', color = hex}},
paramtype = 'light',
paramtype2 = 'colorfacedir',
palette = 'furniture_stain_palette.png',
selection_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, 0, .375},
},
collision_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, 0, .375},
},
groups = {oddly_breakable_by_hand = 2, choppy=3, stainable=1},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0
furniture.sit(pos, node, clicker, pointed_thing, false)
return itemstack
end
})
minetest.register_node('furniture:stool_tall_'..name, {
_doc_items_crafting = 'This is crafted in the Woodworking Station.',
description = 'Tall Stool with '..desc..' Cushion',
drawtype = 'mesh',
mesh = 'furniture_stool_tall_cushion.obj',
tiles = {'furniture_stool_tall.png', 'furniture_cushion_pad.png'},
overlay_tiles = {'', {name = 'furniture_cushion_pad.png', color = hex}},
paramtype = 'light',
paramtype2 = 'colorfacedir',
palette = 'furniture_stain_palette.png',
selection_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, .5, .375},
},
collision_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, .5, .375},
},
groups = {oddly_breakable_by_hand = 2, choppy=3, stainable=1},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + .5
furniture.sit(pos, node, clicker, pointed_thing, false)
return itemstack
end
})
minetest.register_node('furniture:chair_'..name, {
_doc_items_crafting = 'This is crafted in the Woodworking Station.',
description = 'Chair with '..desc..' Cushion',
drawtype = 'mesh',
mesh = 'furniture_chair_cushion.obj',
tiles = {'furniture_chair.png', 'furniture_cushion_pad.png'},
overlay_tiles = {'', {name = 'furniture_cushion_pad.png', color = hex}},
paramtype = 'light',
paramtype2 = 'colorfacedir',
palette = 'furniture_stain_palette.png',
selection_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, 0, .375},
},
collision_box = {
type = 'fixed',
fixed = {-.375, -.5, -.375, .375, 0, .375},
},
groups = {oddly_breakable_by_hand = 2, choppy=3, stainable=1},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0
furniture.sit(pos, node, clicker, pointed_thing, true)
return itemstack
end
})
minetest.register_node('furniture:cushion_half_'..name, {
_doc_items_crafting = 'This is crafted in the Sewing Station.',
description = desc..' Half Cushion',
drawtype = 'nodebox',
tiles = {'furniture_cushion.png^[multiply:'..hex},
paramtype = 'light',
node_box = {
type = 'fixed',
fixed = {-.5, -.5, -.5, .5, 0, .5},
},
groups = {oddly_breakable_by_hand = 2, snappy=3, bouncy=50},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0
furniture.sit(pos, node, clicker, pointed_thing, false)
return itemstack
end
})
minetest.register_node('furniture:cushion_full_'..name, {
_doc_items_crafting = 'This is crafted in the Sewing Station.',
description = desc..' Full Cushion',
tiles = {'furniture_cushion.png^[multiply:'..hex},
groups = {oddly_breakable_by_hand = 2, snappy=3, bouncy=50},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + .5
furniture.sit(pos, node, clicker, pointed_thing, false)
return itemstack
end
})
end