mirror of
https://github.com/BlueMap-Minecraft/BlueMap.git
synced 2024-11-25 03:55:26 +01:00
Fix region-render-tasks equality function not working correctly
This commit is contained in:
parent
d9a0850cba
commit
026bd6c41b
@ -30,6 +30,7 @@
|
||||
import de.bluecolored.bluemap.common.plugin.Plugin;
|
||||
import de.bluecolored.bluemap.common.rendermanager.MapPurgeTask;
|
||||
import de.bluecolored.bluemap.common.rendermanager.MapUpdateTask;
|
||||
import de.bluecolored.bluemap.common.rendermanager.TileUpdateStrategy;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
@ -48,13 +49,13 @@ public RenderManagerImpl(BlueMapAPIImpl api, Plugin plugin) {
|
||||
@Override
|
||||
public boolean scheduleMapUpdateTask(BlueMapMap map, boolean force) {
|
||||
BlueMapMapImpl cmap = castMap(map);
|
||||
return renderManager.scheduleRenderTask(new MapUpdateTask(cmap.map(), s -> force));
|
||||
return renderManager.scheduleRenderTask(new MapUpdateTask(cmap.map(), TileUpdateStrategy.fixed(force)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean scheduleMapUpdateTask(BlueMapMap map, Collection<Vector2i> regions, boolean force) {
|
||||
BlueMapMapImpl cmap = castMap(map);
|
||||
return renderManager.scheduleRenderTask(new MapUpdateTask(cmap.map(), regions, s -> force));
|
||||
return renderManager.scheduleRenderTask(new MapUpdateTask(cmap.map(), regions, TileUpdateStrategy.fixed(force)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -40,6 +40,7 @@
|
||||
import com.mojang.brigadier.context.CommandContext;
|
||||
import com.mojang.brigadier.tree.LiteralCommandNode;
|
||||
import de.bluecolored.bluemap.common.config.ConfigurationException;
|
||||
import de.bluecolored.bluemap.common.debug.StateDumper;
|
||||
import de.bluecolored.bluemap.common.plugin.Plugin;
|
||||
import de.bluecolored.bluemap.common.plugin.PluginState;
|
||||
import de.bluecolored.bluemap.common.plugin.text.Text;
|
||||
@ -48,11 +49,9 @@
|
||||
import de.bluecolored.bluemap.common.rendermanager.*;
|
||||
import de.bluecolored.bluemap.common.serverinterface.CommandSource;
|
||||
import de.bluecolored.bluemap.core.BlueMap;
|
||||
import de.bluecolored.bluemap.common.debug.StateDumper;
|
||||
import de.bluecolored.bluemap.core.logger.Logger;
|
||||
import de.bluecolored.bluemap.core.map.BmMap;
|
||||
import de.bluecolored.bluemap.core.map.renderstate.TileInfoRegion;
|
||||
import de.bluecolored.bluemap.core.map.renderstate.TileState;
|
||||
import de.bluecolored.bluemap.core.storage.MapStorage;
|
||||
import de.bluecolored.bluemap.core.storage.Storage;
|
||||
import de.bluecolored.bluemap.core.util.Grid;
|
||||
@ -770,18 +769,18 @@ public int unfreezeCommand(CommandContext<S> context) {
|
||||
}
|
||||
|
||||
public int forceUpdateCommand(CommandContext<S> context) {
|
||||
return updateCommand(context, s -> true);
|
||||
return updateCommand(context, TileUpdateStrategy.FORCE_ALL);
|
||||
}
|
||||
|
||||
public int fixEdgesCommand(CommandContext<S> context) {
|
||||
return updateCommand(context, s -> s == TileState.RENDERED_EDGE);
|
||||
return updateCommand(context, TileUpdateStrategy.FORCE_EDGE);
|
||||
}
|
||||
|
||||
public int updateCommand(CommandContext<S> context) {
|
||||
return updateCommand(context, s -> false);
|
||||
return updateCommand(context, TileUpdateStrategy.FORCE_NONE);
|
||||
}
|
||||
|
||||
public int updateCommand(CommandContext<S> context, Predicate<TileState> force) {
|
||||
public int updateCommand(CommandContext<S> context, TileUpdateStrategy force) {
|
||||
final CommandSource source = commandSourceInterface.apply(context.getSource());
|
||||
|
||||
// parse world/map argument
|
||||
|
@ -49,7 +49,7 @@ public MapUpdateTask(BmMap map) {
|
||||
this(map, getRegions(map));
|
||||
}
|
||||
|
||||
public MapUpdateTask(BmMap map, Predicate<TileState> force) {
|
||||
public MapUpdateTask(BmMap map, TileUpdateStrategy force) {
|
||||
this(map, getRegions(map), force);
|
||||
}
|
||||
|
||||
@ -57,15 +57,15 @@ public MapUpdateTask(BmMap map, Vector2i center, int radius) {
|
||||
this(map, getRegions(map, center, radius));
|
||||
}
|
||||
|
||||
public MapUpdateTask(BmMap map, Vector2i center, int radius, Predicate<TileState> force) {
|
||||
public MapUpdateTask(BmMap map, Vector2i center, int radius, TileUpdateStrategy force) {
|
||||
this(map, getRegions(map, center, radius), force);
|
||||
}
|
||||
|
||||
public MapUpdateTask(BmMap map, Collection<Vector2i> regions) {
|
||||
this(map, regions, s -> false);
|
||||
this(map, regions, TileUpdateStrategy.FORCE_NONE);
|
||||
}
|
||||
|
||||
public MapUpdateTask(BmMap map, Collection<Vector2i> regions, Predicate<TileState> force) {
|
||||
public MapUpdateTask(BmMap map, Collection<Vector2i> regions, TileUpdateStrategy force) {
|
||||
super("Update map '" + map.getId() + "'", createTasks(map, regions, force));
|
||||
this.map = map;
|
||||
this.regions = Collections.unmodifiableCollection(new ArrayList<>(regions));
|
||||
@ -79,7 +79,7 @@ public Collection<Vector2i> getRegions() {
|
||||
return regions;
|
||||
}
|
||||
|
||||
private static Collection<RenderTask> createTasks(BmMap map, Collection<Vector2i> regions, Predicate<TileState> force) {
|
||||
private static Collection<RenderTask> createTasks(BmMap map, Collection<Vector2i> regions, TileUpdateStrategy force) {
|
||||
ArrayList<WorldRegionRenderTask> regionTasks = new ArrayList<>(regions.size());
|
||||
regions.forEach(region -> regionTasks.add(new WorldRegionRenderTask(map, region, force)));
|
||||
|
||||
|
@ -0,0 +1,17 @@
|
||||
package de.bluecolored.bluemap.common.rendermanager;
|
||||
|
||||
import de.bluecolored.bluemap.core.map.renderstate.TileState;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public interface TileUpdateStrategy extends Predicate<TileState> {
|
||||
|
||||
TileUpdateStrategy FORCE_ALL = tileState -> true;
|
||||
TileUpdateStrategy FORCE_EDGE = tileState -> tileState == TileState.RENDERED_EDGE;
|
||||
TileUpdateStrategy FORCE_NONE = tileState -> false;
|
||||
|
||||
static TileUpdateStrategy fixed(boolean force) {
|
||||
return force ? FORCE_ALL : FORCE_NONE;
|
||||
}
|
||||
|
||||
}
|
@ -42,7 +42,6 @@
|
||||
import java.io.IOException;
|
||||
import java.util.Comparator;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import static de.bluecolored.bluemap.core.map.renderstate.TileActionResolver.Action.DELETE;
|
||||
import static de.bluecolored.bluemap.core.map.renderstate.TileActionResolver.Action.RENDER;
|
||||
@ -51,7 +50,7 @@ public class WorldRegionRenderTask implements RenderTask {
|
||||
|
||||
@Getter private final BmMap map;
|
||||
@Getter private final Vector2i regionPos;
|
||||
@Getter private final Predicate<TileState> force;
|
||||
@Getter private final TileUpdateStrategy force;
|
||||
|
||||
private Grid regionGrid, chunkGrid, tileGrid;
|
||||
private Vector2i chunkMin, chunkMax, chunksSize;
|
||||
@ -69,10 +68,10 @@ public WorldRegionRenderTask(BmMap map, Vector2i regionPos) {
|
||||
}
|
||||
|
||||
public WorldRegionRenderTask(BmMap map, Vector2i regionPos, boolean force) {
|
||||
this(map, regionPos, s -> force);
|
||||
this(map, regionPos, TileUpdateStrategy.fixed(force));
|
||||
}
|
||||
|
||||
public WorldRegionRenderTask(BmMap map, Vector2i regionPos, Predicate<TileState> force) {
|
||||
public WorldRegionRenderTask(BmMap map, Vector2i regionPos, TileUpdateStrategy force) {
|
||||
this.map = map;
|
||||
this.regionPos = regionPos;
|
||||
this.force = force;
|
||||
|
@ -38,13 +38,13 @@
|
||||
import de.bluecolored.bluemap.common.rendermanager.MapUpdateTask;
|
||||
import de.bluecolored.bluemap.common.rendermanager.RenderManager;
|
||||
import de.bluecolored.bluemap.common.rendermanager.RenderTask;
|
||||
import de.bluecolored.bluemap.common.rendermanager.TileUpdateStrategy;
|
||||
import de.bluecolored.bluemap.common.web.*;
|
||||
import de.bluecolored.bluemap.common.web.http.HttpRequestHandler;
|
||||
import de.bluecolored.bluemap.common.web.http.HttpServer;
|
||||
import de.bluecolored.bluemap.core.BlueMap;
|
||||
import de.bluecolored.bluemap.core.logger.Logger;
|
||||
import de.bluecolored.bluemap.core.map.BmMap;
|
||||
import de.bluecolored.bluemap.core.map.renderstate.TileState;
|
||||
import de.bluecolored.bluemap.core.storage.MapStorage;
|
||||
import de.bluecolored.bluemap.core.util.FileHelper;
|
||||
import org.apache.commons.cli.*;
|
||||
@ -75,7 +75,7 @@ public class BlueMapCLI {
|
||||
private Path modsFolder = null;
|
||||
|
||||
|
||||
public void renderMaps(BlueMapService blueMap, boolean watch, Predicate<TileState> force, boolean forceGenerateWebapp,
|
||||
public void renderMaps(BlueMapService blueMap, boolean watch, TileUpdateStrategy force, boolean forceGenerateWebapp,
|
||||
@Nullable String mapsToRender) throws ConfigurationException, IOException, InterruptedException {
|
||||
|
||||
if (blueMap.getConfig().getWebappConfig().isEnabled())
|
||||
@ -371,9 +371,9 @@ public static void main(String[] args) {
|
||||
noActions = false;
|
||||
|
||||
boolean watch = cmd.hasOption("u");
|
||||
Predicate<TileState> force = t -> false;
|
||||
if (cmd.hasOption("f")) force = t -> true;
|
||||
else if (cmd.hasOption("e")) force = t -> t == TileState.RENDERED_EDGE;
|
||||
TileUpdateStrategy force = TileUpdateStrategy.FORCE_NONE;
|
||||
if (cmd.hasOption("f")) force = TileUpdateStrategy.FORCE_ALL;
|
||||
else if (cmd.hasOption("e")) force = TileUpdateStrategy.FORCE_EDGE;
|
||||
boolean generateWebappFiles = cmd.hasOption("g");
|
||||
String mapsToRender = cmd.getOptionValue("m", null);
|
||||
cli.renderMaps(blueMap, watch, force, generateWebappFiles, mapsToRender);
|
||||
|
Loading…
Reference in New Issue
Block a user