Do not unload wagons when a player that is logged in sits in it

master
orwell96 2020-07-26 18:53:16 +02:00
parent d65ba80df7
commit 00031064a5
1 changed files with 18 additions and 7 deletions

View File

@ -486,15 +486,26 @@ function wagon:on_step(dtime)
-- unload entity if out of range (because relevant pr won't be merged in engine)
-- This is a WORKAROUND!
local outofrange = true
for _,p in pairs(minetest.get_connected_players()) do
if vector.distance(p:get_pos(),pos)<=unload_wgn_range then
outofrange = false
local players_in = false
for sno,pname in pairs(data.seatp) do
if minetest.get_player_by_name(pname) then
-- Fix: If the RTT is too high, a wagon might be recognized out of range even if a player sits in it
-- (client updates position not fast enough)
players_in = true
break
end
end
if outofrange then
--atdebug("wagon",self.id,"unloading (too far away)")
self.object:remove()
if not players_in then
local outofrange = true
for _,p in pairs(minetest.get_connected_players()) do
if vector.distance(p:get_pos(),pos)<=unload_wgn_range then
outofrange = false
end
end
if outofrange then
--atdebug("wagon",self.id,"unloading (too far away)")
self.object:remove()
end
end
end