Skip to content

Commit

Permalink
Fix region-render-tasks equality function not working correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
TBlueF committed Oct 17, 2024
1 parent eed8f79 commit 51ceb87
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,23 +49,23 @@ 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);
}

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));
Expand All @@ -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)));

Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.*;
Expand Down Expand Up @@ -74,7 +74,7 @@ public class BlueMapCLI {
private Path configFolder = Path.of("config");


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())
Expand Down Expand Up @@ -361,9 +361,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);
Expand Down

0 comments on commit 51ceb87

Please sign in to comment.