Skip to content

Commit 1fdf647

Browse files
committed
Improve cli map-update logging
1 parent 3282fde commit 1fdf647

File tree

3 files changed

+21
-11
lines changed

3 files changed

+21
-11
lines changed

common/src/main/java/de/bluecolored/bluemap/common/plugin/MapUpdateService.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import java.util.Timer;
4141
import java.util.TimerTask;
4242
import java.util.concurrent.atomic.AtomicInteger;
43+
import java.util.function.Consumer;
4344

4445
public class MapUpdateService extends Thread {
4546

@@ -57,7 +58,9 @@ public class MapUpdateService extends Thread {
5758
private final Map<Vector2i, TimerTask> scheduledUpdates;
5859
private final Cache<Vector2i, Long> lastUpdateTimes;
5960

60-
public MapUpdateService(RenderManager renderManager, BmMap map, Duration regionUpdateCooldown) throws IOException {
61+
private final Consumer<String> verboseLog;
62+
63+
public MapUpdateService(RenderManager renderManager, BmMap map, Duration regionUpdateCooldown, boolean verbose) throws IOException {
6164
super("BlueMap-MapUpdateService-" + NEXT_ID.getAndIncrement());
6265
this.renderManager = renderManager;
6366
this.map = map;
@@ -68,13 +71,14 @@ public MapUpdateService(RenderManager renderManager, BmMap map, Duration regionU
6871
.expireAfterWrite(regionUpdateCooldown)
6972
.build();
7073
this.watchService = map.getWorld().createRegionWatchService();
74+
this.verboseLog = verbose ? Logger.global::logInfo : Logger.global::logDebug;
7175
}
7276

7377
@Override
7478
public void run() {
7579
if (delayTimer == null) delayTimer = new Timer("BlueMap-RegionFileWatchService-DelayTimer", true);
7680

77-
Logger.global.logDebug("Started watching map '" + map.getId() + "' for updates...");
81+
verboseLog.accept("Started watching map '" + map.getId() + "' for updates...");
7882

7983
try {
8084
while (!closed)
@@ -85,7 +89,7 @@ public void run() {
8589
} catch (InterruptedException iex) {
8690
Thread.currentThread().interrupt();
8791
} finally {
88-
Logger.global.logDebug("Stopped watching map '" + map.getId() + "' for updates.");
92+
verboseLog.accept("Stopped watching map '" + map.getId() + "' for updates.");
8993
if (!closed) {
9094
Logger.global.logWarning("Region-file watch-service for map '" + map.getId() +
9195
"' stopped unexpectedly! (This map might not update automatically from now on)");
@@ -109,7 +113,7 @@ public void run() {
109113
renderManager.scheduleRenderTask(task);
110114
lastUpdateTimes.put(regionPos, System.currentTimeMillis());
111115

112-
Logger.global.logDebug("Scheduled update for region-file: " + regionPos + " (Map: " + map.getId() + ")");
116+
verboseLog.accept("Scheduled update for region-file: " + regionPos + " (Map: " + map.getId() + ")");
113117
}
114118
}
115119
};

common/src/main/java/de/bluecolored/bluemap/common/plugin/Plugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,7 @@ public synchronized void startWatchingMap(BmMap map) {
571571
if (blueMap == null) return;
572572

573573
try {
574-
MapUpdateService watcher = new MapUpdateService(renderManager, map, blueMap.getConfig().getPluginConfig().getUpdateCooldown());
574+
MapUpdateService watcher = new MapUpdateService(renderManager, map, blueMap.getConfig().getPluginConfig().getUpdateCooldown(), false);
575575
watcher.start();
576576
mapUpdateServices.put(map.getId(), watcher);
577577
} catch (IOException ex) {

implementations/cli/src/main/java/de/bluecolored/bluemap/cli/BlueMapCLI.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public void renderMaps(BlueMapService blueMap, boolean watch, TileUpdateStrategy
103103
if (watch) {
104104
for (BmMap map : maps.values()) {
105105
try {
106-
MapUpdateService watcher = new MapUpdateService(renderManager, map, blueMap.getConfig().getPluginConfig().getUpdateCooldown());
106+
MapUpdateService watcher = new MapUpdateService(renderManager, map, blueMap.getConfig().getPluginConfig().getUpdateCooldown(), true);
107107
watcher.start();
108108
mapUpdateServices.add(watcher);
109109
} catch (IOException ex) {
@@ -139,10 +139,19 @@ public void renderMaps(BlueMapService blueMap, boolean watch, TileUpdateStrategy
139139

140140
Timer timer = new Timer("BlueMap-CLI-Timer", true);
141141
TimerTask updateInfoTask = new TimerTask() {
142+
143+
boolean wasIdle = false;
144+
142145
@Override
143146
public void run() {
144147
RenderTask task = renderManager.getCurrentRenderTask();
145-
if (task == null) return;
148+
149+
if (task == null){
150+
if (!wasIdle) Logger.global.logInfo("Waiting for changes on the world-files...");
151+
wasIdle = true;
152+
return;
153+
}
154+
wasIdle = false;
146155

147156
double progress = task.estimateProgress();
148157
long etaMs = renderManager.estimateCurrentRenderTaskTimeRemaining();
@@ -215,10 +224,7 @@ public void run() {
215224

216225
Logger.global.logInfo("Your maps are now all up-to-date!");
217226

218-
if (watch) {
219-
updateInfoTask.cancel();
220-
Logger.global.logInfo("Waiting for changes on the world-files...");
221-
} else {
227+
if (!watch) {
222228
Runtime.getRuntime().removeShutdownHook(shutdownHook);
223229
shutdown.run();
224230
}

0 commit comments

Comments
 (0)