diff --git a/common/src/main/java/de/bluecolored/bluemap/common/config/MapConfig.java b/common/src/main/java/de/bluecolored/bluemap/common/config/MapConfig.java index 16469aeba..2d179515a 100644 --- a/common/src/main/java/de/bluecolored/bluemap/common/config/MapConfig.java +++ b/common/src/main/java/de/bluecolored/bluemap/common/config/MapConfig.java @@ -80,6 +80,8 @@ public class MapConfig implements MapSettings { private boolean enableFreeFlightView = true; private boolean enableHires = true; + private boolean checkForRemovedRegions = true; + private String storage = "file"; private boolean ignoreMissingLightData = false; diff --git a/common/src/main/java/de/bluecolored/bluemap/common/rendermanager/MapUpdateTask.java b/common/src/main/java/de/bluecolored/bluemap/common/rendermanager/MapUpdateTask.java index b425b7990..8cc652c2f 100644 --- a/common/src/main/java/de/bluecolored/bluemap/common/rendermanager/MapUpdateTask.java +++ b/common/src/main/java/de/bluecolored/bluemap/common/rendermanager/MapUpdateTask.java @@ -133,33 +133,35 @@ private static Collection getRegions(BmMap map, Vector2i center, int r // also update regions that are present as map-tile-state files (they might have been rendered before but deleted now) // (a little hacky as we are operating on raw tile-state files -> maybe find a better way?) - Grid tileGrid = map.getHiresModelManager().getTileGrid(); - Grid cellGrid = MapTileState.GRID.multiply(tileGrid); - try (Stream stream = map.getStorage().tileState().stream()) { - stream - .filter(c -> { - // filter out files that are fully UNKNOWN/NOT_GENERATED - // this avoids unnecessarily converting UNKNOWN tiles into NOT_GENERATED tiles on force-updates - try (CompressedInputStream in = c.read()) { - if (in == null) return false; - TileState[] states = TileInfoRegion.loadPalette(in.decompress()); - for (TileState state : states) { - if ( - state != TileState.UNKNOWN && - state != TileState.NOT_GENERATED - ) return true; + if (map.getMapSettings().isCheckForRemovedRegions()) { + Grid tileGrid = map.getHiresModelManager().getTileGrid(); + Grid cellGrid = MapTileState.GRID.multiply(tileGrid); + try (Stream stream = map.getStorage().tileState().stream()) { + stream + .filter(c -> { + // filter out files that are fully UNKNOWN/NOT_GENERATED + // this avoids unnecessarily converting UNKNOWN tiles into NOT_GENERATED tiles on force-updates + try (CompressedInputStream in = c.read()) { + if (in == null) return false; + TileState[] states = TileInfoRegion.loadPalette(in.decompress()); + for (TileState state : states) { + if ( + state != TileState.UNKNOWN && + state != TileState.NOT_GENERATED + ) return true; + } + return false; + } catch (IOException ignore) { + return true; } - return false; - } catch (IOException ignore) { - return true; - } - }) - .map(c -> new Vector2i(c.getX(), c.getZ())) - .flatMap(v -> cellGrid.getIntersecting(v, regionGrid).stream()) - .filter(regionRadiusFilter) - .forEach(regions::add); - } catch (IOException ex) { - Logger.global.logError("Failed to load map tile state!", ex); + }) + .map(c -> new Vector2i(c.getX(), c.getZ())) + .flatMap(v -> cellGrid.getIntersecting(v, regionGrid).stream()) + .filter(regionRadiusFilter) + .forEach(regions::add); + } catch (IOException ex) { + Logger.global.logError("Failed to load map tile state!", ex); + } } return regions; diff --git a/core/src/main/java/de/bluecolored/bluemap/core/map/MapSettings.java b/core/src/main/java/de/bluecolored/bluemap/core/map/MapSettings.java index 9d3c7b028..79f9a3287 100644 --- a/core/src/main/java/de/bluecolored/bluemap/core/map/MapSettings.java +++ b/core/src/main/java/de/bluecolored/bluemap/core/map/MapSettings.java @@ -60,6 +60,8 @@ public interface MapSettings extends RenderSettings { boolean isEnableHires(); + boolean isCheckForRemovedRegions(); + @Override default boolean isSaveHiresLayer() { return isEnableHires();