Fix exceptions being squashed RegionVisitor preloading

This commit is contained in:
dordsor21 2021-09-10 14:41:15 +01:00
parent ef62f1e0d9
commit effb94623a
No known key found for this signature in database
GPG Key ID: 1E53E88969FFCF0B

View File

@ -108,23 +108,24 @@ public class RegionVisitor implements Operation {
int lastLeadChunkX = Integer.MIN_VALUE;
int lastLeadChunkZ = Integer.MIN_VALUE;
int loadingTarget = Settings.IMP.QUEUE.PRELOAD_CHUNK_COUNT;
try {
for (; ; ) {
BlockVector3 pt = trailIter.next();
apply(pt);
int cx = pt.getBlockX() >> 4;
int cz = pt.getBlockZ() >> 4;
if (cx != lastTrailChunkX || cz != lastTrailChunkZ) {
lastTrailChunkX = cx;
lastTrailChunkZ = cz;
int amount;
if (lastLeadChunkX == Integer.MIN_VALUE) {
lastLeadChunkX = cx;
lastLeadChunkZ = cz;
amount = loadingTarget;
} else {
amount = 1;
}
while (trailIter.hasNext()) {
BlockVector3 pt = trailIter.next();
apply(pt);
int cx = pt.getBlockX() >> 4;
int cz = pt.getBlockZ() >> 4;
if (cx != lastTrailChunkX || cz != lastTrailChunkZ) {
lastTrailChunkX = cx;
lastTrailChunkZ = cz;
int amount;
if (lastLeadChunkX == Integer.MIN_VALUE) {
lastLeadChunkX = cx;
lastLeadChunkZ = cz;
amount = loadingTarget;
} else {
amount = 1;
}
try {
lead:
for (int count = 0; count < amount; ) {
BlockVector3 v = leadIter.next();
int vcx = v.getBlockX() >> 4;
@ -136,51 +137,26 @@ public class RegionVisitor implements Operation {
count++;
}
// Skip the next 15 blocks
leadIter.next();
leadIter.next();
leadIter.next();
leadIter.next();
leadIter.next();
leadIter.next();
leadIter.next();
leadIter.next();
leadIter.next();
leadIter.next();
leadIter.next();
leadIter.next();
leadIter.next();
leadIter.next();
leadIter.next();
for (int i = 0; i < 16; i++) {
if (!leadIter.hasNext()) {
break lead;
}
leadIter.next();
}
}
} catch (FaweException e) {
// Likely to be a low memory or cancellation exception.
throw new RuntimeException(e);
} catch (Throwable ignored) {
// Ignore as it is likely not something too important, and we can continue with the operation
}
}
for (int i = 0; i < 16; i++) {
if (!trailIter.hasNext()) {
return null;
}
apply(trailIter.next());
apply(trailIter.next());
apply(trailIter.next());
apply(trailIter.next());
apply(trailIter.next());
apply(trailIter.next());
apply(trailIter.next());
apply(trailIter.next());
apply(trailIter.next());
apply(trailIter.next());
apply(trailIter.next());
apply(trailIter.next());
apply(trailIter.next());
apply(trailIter.next());
apply(trailIter.next());
}
} catch (FaweException e) {
throw new RuntimeException(e);
} catch (Throwable ignore) {
}
try {
for (; ; ) {
apply(trailIter.next());
apply(trailIter.next());
}
} catch (FaweException e) {
throw new RuntimeException(e);
} catch (Throwable ignore) {
}
} else {
for (BlockVector3 pt : region) {
@ -188,7 +164,6 @@ public class RegionVisitor implements Operation {
}
}
//FAWE end
return null;
}