mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-21 20:56:45 +01:00
feature: improve handling of null issues in plot analysis
- Addresses #3865 (does not fix the underlying issue though)
This commit is contained in:
parent
28bd993680
commit
9ee3e9a3a4
@ -234,44 +234,52 @@ public class HybridUtils {
|
|||||||
Set<BlockType> types = new HashSet<>();
|
Set<BlockType> types = new HashSet<>();
|
||||||
for (int yIndex = 0; yIndex < height; yIndex++) {
|
for (int yIndex = 0; yIndex < height; yIndex++) {
|
||||||
BlockState old = oldBlocks[yIndex][x][z]; // Nullable
|
BlockState old = oldBlocks[yIndex][x][z]; // Nullable
|
||||||
try {
|
BlockState now = newBlocks[yIndex][x][z]; // Not null
|
||||||
BlockState now = newBlocks[yIndex][x][z]; // Not null
|
if (now == null) {
|
||||||
if (!now.equals(old) && !(old == null && now.getBlockType().equals(BlockTypes.AIR))) {
|
throw new NullPointerException(String.format(
|
||||||
changes[i]++;
|
"\"now\" block null attempting to perform plot analysis. Indexes: x=%d of %d, yIndex=%d" +
|
||||||
}
|
" of %d, z=%d of %d",
|
||||||
if (now.getBlockType().getMaterial().isAir()) {
|
x,
|
||||||
air[i]++;
|
width,
|
||||||
} else {
|
yIndex,
|
||||||
// check vertices
|
height,
|
||||||
// modifications_adjacent
|
z,
|
||||||
if (x > 0 && z > 0 && yIndex > 0 && x < width - 1 && z < length - 1 && yIndex < (height - 1)) {
|
length
|
||||||
if (newBlocks[yIndex - 1][x][z].getBlockType().getMaterial().isAir()) {
|
));
|
||||||
faces[i]++;
|
}
|
||||||
}
|
if (!now.equals(old) && !(old == null && now.getBlockType().equals(BlockTypes.AIR))) {
|
||||||
if (newBlocks[yIndex][x - 1][z].getBlockType().getMaterial().isAir()) {
|
changes[i]++;
|
||||||
faces[i]++;
|
}
|
||||||
}
|
if (now.getBlockType().getMaterial().isAir()) {
|
||||||
if (newBlocks[yIndex][x][z - 1].getBlockType().getMaterial().isAir()) {
|
air[i]++;
|
||||||
faces[i]++;
|
} else {
|
||||||
}
|
// check vertices
|
||||||
if (newBlocks[yIndex + 1][x][z].getBlockType().getMaterial().isAir()) {
|
// modifications_adjacent
|
||||||
faces[i]++;
|
if (x > 0 && z > 0 && yIndex > 0 && x < width - 1 && z < length - 1 && yIndex < (height - 1)) {
|
||||||
}
|
if (newBlocks[yIndex - 1][x][z].getBlockType().getMaterial().isAir()) {
|
||||||
if (newBlocks[yIndex][x + 1][z].getBlockType().getMaterial().isAir()) {
|
faces[i]++;
|
||||||
faces[i]++;
|
|
||||||
}
|
|
||||||
if (newBlocks[yIndex][x][z + 1].getBlockType().getMaterial().isAir()) {
|
|
||||||
faces[i]++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (newBlocks[yIndex][x - 1][z].getBlockType().getMaterial().isAir()) {
|
||||||
|
faces[i]++;
|
||||||
|
}
|
||||||
|
if (newBlocks[yIndex][x][z - 1].getBlockType().getMaterial().isAir()) {
|
||||||
|
faces[i]++;
|
||||||
|
}
|
||||||
|
if (newBlocks[yIndex + 1][x][z].getBlockType().getMaterial().isAir()) {
|
||||||
|
faces[i]++;
|
||||||
|
}
|
||||||
|
if (newBlocks[yIndex][x + 1][z].getBlockType().getMaterial().isAir()) {
|
||||||
|
faces[i]++;
|
||||||
|
}
|
||||||
|
if (newBlocks[yIndex][x][z + 1].getBlockType().getMaterial().isAir()) {
|
||||||
|
faces[i]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!now.equals(now.getBlockType().getDefaultState())) {
|
if (!now.equals(now.getBlockType().getDefaultState())) {
|
||||||
data[i]++;
|
data[i]++;
|
||||||
}
|
|
||||||
types.add(now.getBlockType());
|
|
||||||
}
|
}
|
||||||
} catch (NullPointerException e) {
|
types.add(now.getBlockType());
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
variety[i] = types.size();
|
variety[i] = types.size();
|
||||||
|
Loading…
Reference in New Issue
Block a user