diff options
author | Gabriel Pérez-Cerezo <gabriel@gpcf.eu> | 2020-10-12 15:41:27 +0200 |
---|---|---|
committer | Gabriel Pérez-Cerezo <gabriel@gpcf.eu> | 2020-10-12 15:41:27 +0200 |
commit | 964b0a7ab6e7e5756adef4f126f229995bd9210c (patch) | |
tree | a3970ea0c5bcf2e0a5bdd09c90cf9b9a742d6f6b /advtrains/wagons.lua | |
parent | dcf5b8670e19ad7603a0e305ec8515653555084f (diff) | |
download | advtrains-964b0a7ab6e7e5756adef4f126f229995bd9210c.tar.gz advtrains-964b0a7ab6e7e5756adef4f126f229995bd9210c.tar.bz2 advtrains-964b0a7ab6e7e5756adef4f126f229995bd9210c.zip |
Remove couple entities when out of range from players
Work around the entity flood bug caused by improper engine handling of
static_save=false
Diffstat (limited to 'advtrains/wagons.lua')
-rw-r--r-- | advtrains/wagons.lua | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/advtrains/wagons.lua b/advtrains/wagons.lua index 6b59293..5564fa5 100644 --- a/advtrains/wagons.lua +++ b/advtrains/wagons.lua @@ -15,6 +15,20 @@ advtrains.wagon_prototypes = {} advtrains.wagon_objects = {} local unload_wgn_range = advtrains.wagon_load_range + 32 +function advtrains.outside_range(pos) -- returns true if the object is outside of unload_wgn_range of any player + -- this is part of a workaround until mintest core devs decide to fix a bug with static_save=false. + local outofrange = true + if not pos then + return true + end + for _,p in pairs(minetest.get_connected_players()) do + if vector.distance(p:get_pos(),pos)<=unload_wgn_range then + outofrange = false + break + end + end + return outofrange +end local setting_show_ids = minetest.settings:get_bool("advtrains_show_ids") @@ -511,13 +525,7 @@ function wagon:on_step(dtime) end end 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 + if advtrains.outside_range(pos) then --atdebug("wagon",self.id,"unloading (too far away)") self.object:remove() end |