Debug mode for anvil unclaimed filter

This commit is contained in:
Jesse Boyd 2017-09-01 00:18:37 +10:00
parent 8564b0b80f
commit fe07915f52
No known key found for this signature in database
GPG Key ID: 59F1DE6293AF6E1F
2 changed files with 17 additions and 1 deletions

View File

@ -232,10 +232,11 @@ public class AnvilCommands {
max = 3 max = 3
) )
@CommandPermissions("worldedit.anvil.deleteallunclaimed") @CommandPermissions("worldedit.anvil.deleteallunclaimed")
public void deleteAllUnclaimed(Player player, int inhabitedTicks, @Optional("60000") int fileDurationMillis) throws WorldEditException { public void deleteAllUnclaimed(Player player, int inhabitedTicks, @Optional("60000") int fileDurationMillis, @Switch('d') boolean debug) throws WorldEditException {
String folder = Fawe.imp().getWorldName(player.getWorld()); String folder = Fawe.imp().getWorldName(player.getWorld());
long chunkInactivityMillis = fileDurationMillis; // Use same value for now long chunkInactivityMillis = fileDurationMillis; // Use same value for now
DeleteUnclaimedFilter filter = new DeleteUnclaimedFilter(player.getWorld(), fileDurationMillis, inhabitedTicks, chunkInactivityMillis); DeleteUnclaimedFilter filter = new DeleteUnclaimedFilter(player.getWorld(), fileDurationMillis, inhabitedTicks, chunkInactivityMillis);
if (debug) filter.enableDebug();
DeleteUnclaimedFilter result = runWithWorld(player, folder, filter, true); DeleteUnclaimedFilter result = runWithWorld(player, folder, filter, true);
if (result != null) player.print(BBC.getPrefix() + BBC.VISITOR_BLOCK.format(result.getTotal())); if (result != null) player.print(BBC.getPrefix() + BBC.VISITOR_BLOCK.format(result.getTotal()));
} }

View File

@ -1,5 +1,6 @@
package com.boydti.fawe.jnbt.anvil.filters; package com.boydti.fawe.jnbt.anvil.filters;
import com.boydti.fawe.Fawe;
import com.boydti.fawe.jnbt.NBTStreamer; import com.boydti.fawe.jnbt.NBTStreamer;
import com.boydti.fawe.jnbt.anvil.MCAChunk; import com.boydti.fawe.jnbt.anvil.MCAChunk;
import com.boydti.fawe.jnbt.anvil.MCAFile; import com.boydti.fawe.jnbt.anvil.MCAFile;
@ -12,6 +13,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.BasicFileAttributes;
import java.util.Date;
import java.util.concurrent.ForkJoinPool; import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -23,6 +25,7 @@ public class DeleteUninhabitedFilter extends MCAFilterCounter {
private final long inhabitedTicks; private final long inhabitedTicks;
private final long fileDurationMillis; private final long fileDurationMillis;
private final long cutoffChunkAgeEpoch; private final long cutoffChunkAgeEpoch;
private boolean debug = false;
public DeleteUninhabitedFilter(long fileDurationMillis, long inhabitedTicks, long chunkInactivityMillis) { public DeleteUninhabitedFilter(long fileDurationMillis, long inhabitedTicks, long chunkInactivityMillis) {
this.fileDurationMillis = fileDurationMillis; this.fileDurationMillis = fileDurationMillis;
@ -30,6 +33,10 @@ public class DeleteUninhabitedFilter extends MCAFilterCounter {
this.cutoffChunkAgeEpoch = System.currentTimeMillis() - chunkInactivityMillis; this.cutoffChunkAgeEpoch = System.currentTimeMillis() - chunkInactivityMillis;
} }
public void enableDebug() {
this.debug = true;
}
public long getInhabitedTicks() { public long getInhabitedTicks() {
return inhabitedTicks; return inhabitedTicks;
} }
@ -55,6 +62,9 @@ public class DeleteUninhabitedFilter extends MCAFilterCounter {
} }
try { try {
if (shouldDelete(file, attr, mcaX, mcaZ)) { if (shouldDelete(file, attr, mcaX, mcaZ)) {
if (debug) {
Fawe.debug("Deleting " + file + " as it was modified at " + new Date(lastModified) + " and you provided a threshold of " + new Date(cutoffChunkAgeEpoch));
}
file.delete(); file.delete();
get().add(512 * 512 * 256); get().add(512 * 512 * 256);
return false; return false;
@ -134,6 +144,11 @@ public class DeleteUninhabitedFilter extends MCAFilterCounter {
public void run(Integer index, Long value) { public void run(Integer index, Long value) {
if (value <= inhabitedTicks) { if (value <= inhabitedTicks) {
MCAChunk chunk = new MCAChunk(null, x, z); MCAChunk chunk = new MCAChunk(null, x, z);
if (debug) {
int cx = (mca.getX() << 5) + (x & 31);
int cz = (mca.getZ() << 5) + (z & 31);
Fawe.debug("Deleting chunk " + cx + "," + cz + " as it was only inhabited for " + value + " and passed all other checks");
}
chunk.setDeleted(true); chunk.setDeleted(true);
synchronized (mca) { synchronized (mca) {
mca.setChunk(chunk); mca.setChunk(chunk);