forked from mtcontrib/homedecor_modpack
implements https://github.com/mt-mods/homedecor_modpack/issues/31 - show players sitting in seats (#76)
* implment https://github.com/mt-mods/homedecor_modpack/issues/31 - show players sitting in seats * improve things
This commit is contained in:
parent
b2e5c81e4d
commit
a100d20d4d
|
@ -15,7 +15,8 @@ globals = {
|
||||||
"homedecor_doors_and_gates",
|
"homedecor_doors_and_gates",
|
||||||
|
|
||||||
-- mod-deps
|
-- mod-deps
|
||||||
"armor"
|
"armor",
|
||||||
|
xcompat = {fields = {"player"}},
|
||||||
}
|
}
|
||||||
|
|
||||||
read_globals = {
|
read_globals = {
|
||||||
|
|
|
@ -78,10 +78,18 @@ function lrfurn.fix_sofa_rotation_nsew(pos, placer, itemstack, pointed_thing)
|
||||||
minetest.swap_node(pos, { name = node.name, param2 = fdir+colorbits })
|
minetest.swap_node(pos, { name = node.name, param2 = fdir+colorbits })
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local physics_cache = {}
|
||||||
|
|
||||||
function lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, seats)
|
function lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, seats)
|
||||||
if not clicker:is_player() then
|
if not clicker:is_player() then
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if physics_cache[clicker:get_player_name()] then
|
||||||
|
lrfurn.stand(clicker)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
|
||||||
--conversion table for param2 to dir
|
--conversion table for param2 to dir
|
||||||
local p2d = {
|
local p2d = {
|
||||||
vector.new(0, 0, 0),
|
vector.new(0, 0, 0),
|
||||||
|
@ -120,11 +128,25 @@ function lrfurn.sit(pos, node, clicker, itemstack, pointed_thing, seats)
|
||||||
end
|
end
|
||||||
|
|
||||||
--seat the player
|
--seat the player
|
||||||
sit_pos.y = sit_pos.y-0.5
|
|
||||||
clicker:set_pos(sit_pos)
|
clicker:set_pos(sit_pos)
|
||||||
|
|
||||||
|
xcompat.player.player_attached[clicker:get_player_name()] = true
|
||||||
|
xcompat.player.set_animation(clicker, "sit", 0)
|
||||||
|
physics_cache[clicker:get_player_name()] = table.copy(clicker:get_physics_override())
|
||||||
|
clicker:set_physics_override({speed = 0, jump = 0, gravity = 0})
|
||||||
|
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function lrfurn.stand(clicker)
|
||||||
|
xcompat.player.player_attached[clicker:get_player_name()] = false
|
||||||
|
if physics_cache[clicker:get_player_name()] then
|
||||||
|
clicker:set_physics_override(physics_cache[clicker:get_player_name()])
|
||||||
|
else --in case this is called and the cache is empty
|
||||||
|
clicker:set_physics_override({speed = 1, jump = 1, gravity = 1})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
dofile(modpath.."/longsofas.lua")
|
dofile(modpath.."/longsofas.lua")
|
||||||
dofile(modpath.."/sofas.lua")
|
dofile(modpath.."/sofas.lua")
|
||||||
dofile(modpath.."/armchairs.lua")
|
dofile(modpath.."/armchairs.lua")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user