@@ -351,17 +351,19 @@ public void scheduleRegionPurge(MapDimension toPurge) {
351351
352352 public void checkForRegionPurge () {
353353 if (pendingRegionPurge != null ) {
354- int autoRelease = FTBChunksClientConfig .AUTORELEASE_ON_MAP_CLOSE .get ();
355- List <MapRegion > dataLoadedRegions = pendingRegionPurge .getLoadedRegions ().stream ().filter (MapRegion ::isDataLoaded ).toList ();
356- long nLoaded = dataLoadedRegions .size ();
357- autoRelease = Math .max (4 , autoRelease ); // not useful to release regions which will be reloaded pretty much immediately
358- if (nLoaded > autoRelease ) {
359- dataLoadedRegions .stream ()
360- .sorted (Comparator .comparingLong (MapRegion ::getLastDataAccess ))
361- .limit (nLoaded - autoRelease )
362- .forEach (r -> r .release (false ));
354+ synchronized (lock ) {
355+ int autoRelease = FTBChunksClientConfig .AUTORELEASE_ON_MAP_CLOSE .get ();
356+ List <MapRegion > dataLoadedRegions = pendingRegionPurge .getLoadedRegions ().stream ().filter (MapRegion ::isDataLoaded ).toList ();
357+ long nLoaded = dataLoadedRegions .size ();
358+ autoRelease = Math .max (4 , autoRelease ); // not useful to release regions which will be reloaded pretty much immediately
359+ if (nLoaded > autoRelease ) {
360+ dataLoadedRegions .stream ()
361+ .sorted (Comparator .comparingLong (MapRegion ::getLastDataAccess ))
362+ .limit (nLoaded - autoRelease )
363+ .forEach (r -> r .release (false ));
364+ }
365+ pendingRegionPurge = null ;
363366 }
364- pendingRegionPurge = null ;
365367 }
366368 }
367369}
0 commit comments