Skip to content

Commit 51ceb87

Browse files
committed
Fix region-render-tasks equality function not working correctly
1 parent eed8f79 commit 51ceb87

File tree

6 files changed

+38
-22
lines changed

6 files changed

+38
-22
lines changed

BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/api/RenderManagerImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import de.bluecolored.bluemap.common.plugin.Plugin;
3131
import de.bluecolored.bluemap.common.rendermanager.MapPurgeTask;
3232
import de.bluecolored.bluemap.common.rendermanager.MapUpdateTask;
33+
import de.bluecolored.bluemap.common.rendermanager.TileUpdateStrategy;
3334

3435
import java.util.Collection;
3536

@@ -48,13 +49,13 @@ public RenderManagerImpl(BlueMapAPIImpl api, Plugin plugin) {
4849
@Override
4950
public boolean scheduleMapUpdateTask(BlueMapMap map, boolean force) {
5051
BlueMapMapImpl cmap = castMap(map);
51-
return renderManager.scheduleRenderTask(new MapUpdateTask(cmap.map(), s -> force));
52+
return renderManager.scheduleRenderTask(new MapUpdateTask(cmap.map(), TileUpdateStrategy.fixed(force)));
5253
}
5354

5455
@Override
5556
public boolean scheduleMapUpdateTask(BlueMapMap map, Collection<Vector2i> regions, boolean force) {
5657
BlueMapMapImpl cmap = castMap(map);
57-
return renderManager.scheduleRenderTask(new MapUpdateTask(cmap.map(), regions, s -> force));
58+
return renderManager.scheduleRenderTask(new MapUpdateTask(cmap.map(), regions, TileUpdateStrategy.fixed(force)));
5859
}
5960

6061
@Override

BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/plugin/commands/Commands.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import com.mojang.brigadier.context.CommandContext;
4141
import com.mojang.brigadier.tree.LiteralCommandNode;
4242
import de.bluecolored.bluemap.common.config.ConfigurationException;
43+
import de.bluecolored.bluemap.common.debug.StateDumper;
4344
import de.bluecolored.bluemap.common.plugin.Plugin;
4445
import de.bluecolored.bluemap.common.plugin.PluginState;
4546
import de.bluecolored.bluemap.common.plugin.text.Text;
@@ -48,11 +49,9 @@
4849
import de.bluecolored.bluemap.common.rendermanager.*;
4950
import de.bluecolored.bluemap.common.serverinterface.CommandSource;
5051
import de.bluecolored.bluemap.core.BlueMap;
51-
import de.bluecolored.bluemap.common.debug.StateDumper;
5252
import de.bluecolored.bluemap.core.logger.Logger;
5353
import de.bluecolored.bluemap.core.map.BmMap;
5454
import de.bluecolored.bluemap.core.map.renderstate.TileInfoRegion;
55-
import de.bluecolored.bluemap.core.map.renderstate.TileState;
5655
import de.bluecolored.bluemap.core.storage.MapStorage;
5756
import de.bluecolored.bluemap.core.storage.Storage;
5857
import de.bluecolored.bluemap.core.util.Grid;
@@ -770,18 +769,18 @@ public int unfreezeCommand(CommandContext<S> context) {
770769
}
771770

772771
public int forceUpdateCommand(CommandContext<S> context) {
773-
return updateCommand(context, s -> true);
772+
return updateCommand(context, TileUpdateStrategy.FORCE_ALL);
774773
}
775774

776775
public int fixEdgesCommand(CommandContext<S> context) {
777-
return updateCommand(context, s -> s == TileState.RENDERED_EDGE);
776+
return updateCommand(context, TileUpdateStrategy.FORCE_EDGE);
778777
}
779778

780779
public int updateCommand(CommandContext<S> context) {
781-
return updateCommand(context, s -> false);
780+
return updateCommand(context, TileUpdateStrategy.FORCE_NONE);
782781
}
783782

784-
public int updateCommand(CommandContext<S> context, Predicate<TileState> force) {
783+
public int updateCommand(CommandContext<S> context, TileUpdateStrategy force) {
785784
final CommandSource source = commandSourceInterface.apply(context.getSource());
786785

787786
// parse world/map argument

BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/rendermanager/MapUpdateTask.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,23 @@ public MapUpdateTask(BmMap map) {
4949
this(map, getRegions(map));
5050
}
5151

52-
public MapUpdateTask(BmMap map, Predicate<TileState> force) {
52+
public MapUpdateTask(BmMap map, TileUpdateStrategy force) {
5353
this(map, getRegions(map), force);
5454
}
5555

5656
public MapUpdateTask(BmMap map, Vector2i center, int radius) {
5757
this(map, getRegions(map, center, radius));
5858
}
5959

60-
public MapUpdateTask(BmMap map, Vector2i center, int radius, Predicate<TileState> force) {
60+
public MapUpdateTask(BmMap map, Vector2i center, int radius, TileUpdateStrategy force) {
6161
this(map, getRegions(map, center, radius), force);
6262
}
6363

6464
public MapUpdateTask(BmMap map, Collection<Vector2i> regions) {
65-
this(map, regions, s -> false);
65+
this(map, regions, TileUpdateStrategy.FORCE_NONE);
6666
}
6767

68-
public MapUpdateTask(BmMap map, Collection<Vector2i> regions, Predicate<TileState> force) {
68+
public MapUpdateTask(BmMap map, Collection<Vector2i> regions, TileUpdateStrategy force) {
6969
super("Update map '" + map.getId() + "'", createTasks(map, regions, force));
7070
this.map = map;
7171
this.regions = Collections.unmodifiableCollection(new ArrayList<>(regions));
@@ -79,7 +79,7 @@ public Collection<Vector2i> getRegions() {
7979
return regions;
8080
}
8181

82-
private static Collection<RenderTask> createTasks(BmMap map, Collection<Vector2i> regions, Predicate<TileState> force) {
82+
private static Collection<RenderTask> createTasks(BmMap map, Collection<Vector2i> regions, TileUpdateStrategy force) {
8383
ArrayList<WorldRegionRenderTask> regionTasks = new ArrayList<>(regions.size());
8484
regions.forEach(region -> regionTasks.add(new WorldRegionRenderTask(map, region, force)));
8585

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package de.bluecolored.bluemap.common.rendermanager;
2+
3+
import de.bluecolored.bluemap.core.map.renderstate.TileState;
4+
5+
import java.util.function.Predicate;
6+
7+
public interface TileUpdateStrategy extends Predicate<TileState> {
8+
9+
TileUpdateStrategy FORCE_ALL = tileState -> true;
10+
TileUpdateStrategy FORCE_EDGE = tileState -> tileState == TileState.RENDERED_EDGE;
11+
TileUpdateStrategy FORCE_NONE = tileState -> false;
12+
13+
static TileUpdateStrategy fixed(boolean force) {
14+
return force ? FORCE_ALL : FORCE_NONE;
15+
}
16+
17+
}

BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/rendermanager/WorldRegionRenderTask.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import java.io.IOException;
4343
import java.util.Comparator;
4444
import java.util.concurrent.TimeUnit;
45-
import java.util.function.Predicate;
4645

4746
import static de.bluecolored.bluemap.core.map.renderstate.TileActionResolver.Action.DELETE;
4847
import static de.bluecolored.bluemap.core.map.renderstate.TileActionResolver.Action.RENDER;
@@ -51,7 +50,7 @@ public class WorldRegionRenderTask implements RenderTask {
5150

5251
@Getter private final BmMap map;
5352
@Getter private final Vector2i regionPos;
54-
@Getter private final Predicate<TileState> force;
53+
@Getter private final TileUpdateStrategy force;
5554

5655
private Grid regionGrid, chunkGrid, tileGrid;
5756
private Vector2i chunkMin, chunkMax, chunksSize;
@@ -69,10 +68,10 @@ public WorldRegionRenderTask(BmMap map, Vector2i regionPos) {
6968
}
7069

7170
public WorldRegionRenderTask(BmMap map, Vector2i regionPos, boolean force) {
72-
this(map, regionPos, s -> force);
71+
this(map, regionPos, TileUpdateStrategy.fixed(force));
7372
}
7473

75-
public WorldRegionRenderTask(BmMap map, Vector2i regionPos, Predicate<TileState> force) {
74+
public WorldRegionRenderTask(BmMap map, Vector2i regionPos, TileUpdateStrategy force) {
7675
this.map = map;
7776
this.regionPos = regionPos;
7877
this.force = force;

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@
3838
import de.bluecolored.bluemap.common.rendermanager.MapUpdateTask;
3939
import de.bluecolored.bluemap.common.rendermanager.RenderManager;
4040
import de.bluecolored.bluemap.common.rendermanager.RenderTask;
41+
import de.bluecolored.bluemap.common.rendermanager.TileUpdateStrategy;
4142
import de.bluecolored.bluemap.common.web.*;
4243
import de.bluecolored.bluemap.common.web.http.HttpRequestHandler;
4344
import de.bluecolored.bluemap.common.web.http.HttpServer;
4445
import de.bluecolored.bluemap.core.BlueMap;
4546
import de.bluecolored.bluemap.core.logger.Logger;
4647
import de.bluecolored.bluemap.core.map.BmMap;
47-
import de.bluecolored.bluemap.core.map.renderstate.TileState;
4848
import de.bluecolored.bluemap.core.storage.MapStorage;
4949
import de.bluecolored.bluemap.core.util.FileHelper;
5050
import org.apache.commons.cli.*;
@@ -74,7 +74,7 @@ public class BlueMapCLI {
7474
private Path configFolder = Path.of("config");
7575

7676

77-
public void renderMaps(BlueMapService blueMap, boolean watch, Predicate<TileState> force, boolean forceGenerateWebapp,
77+
public void renderMaps(BlueMapService blueMap, boolean watch, TileUpdateStrategy force, boolean forceGenerateWebapp,
7878
@Nullable String mapsToRender) throws ConfigurationException, IOException, InterruptedException {
7979

8080
if (blueMap.getConfig().getWebappConfig().isEnabled())
@@ -361,9 +361,9 @@ public static void main(String[] args) {
361361
noActions = false;
362362

363363
boolean watch = cmd.hasOption("u");
364-
Predicate<TileState> force = t -> false;
365-
if (cmd.hasOption("f")) force = t -> true;
366-
else if (cmd.hasOption("e")) force = t -> t == TileState.RENDERED_EDGE;
364+
TileUpdateStrategy force = TileUpdateStrategy.FORCE_NONE;
365+
if (cmd.hasOption("f")) force = TileUpdateStrategy.FORCE_ALL;
366+
else if (cmd.hasOption("e")) force = TileUpdateStrategy.FORCE_EDGE;
367367
boolean generateWebappFiles = cmd.hasOption("g");
368368
String mapsToRender = cmd.getOptionValue("m", null);
369369
cli.renderMaps(blueMap, watch, force, generateWebappFiles, mapsToRender);

0 commit comments

Comments
 (0)