diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BlockMask.java b/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BlockMask.java index d20da2936..1e5a2e8e3 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BlockMask.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BlockMask.java @@ -212,15 +212,16 @@ public class BlockMask extends AbstractExtentMask { @Override public Mask inverse() { - for (int i = 0; i < bitSets.length; i++) { - if (bitSets[i] == null) bitSets[i] = ALL; - else if (bitSets[i] == ALL) bitSets[i] = null; + long[][] cloned = bitSets.clone(); + for (int i = 0; i < cloned.length; i++) { + if (cloned[i] == null) cloned[i] = ALL; + else if (cloned[i] == ALL) cloned[i] = null; else { - for (int j = 0; j < bitSets[i].length; j++) - bitSets[i][j] = ~bitSets[i][j]; + for (int j = 0; j < cloned[i].length; j++) + cloned[i][j] = ~cloned[i][j]; } } - return this; + return new BlockMask(getExtent(), cloned); } public boolean test(BlockState block) { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/MaskIntersection.java b/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/MaskIntersection.java index f89d67c8e..844f319a7 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/MaskIntersection.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/MaskIntersection.java @@ -62,7 +62,7 @@ public class MaskIntersection extends AbstractMask { if (masks.isEmpty()) { masksArray = new Mask[]{Masks.alwaysFalse()}; } else { - masksArray = masks.toArray(new Mask[masks.size()]); + masksArray = masks.toArray(new Mask[0]); } } @@ -172,7 +172,7 @@ public class MaskIntersection extends AbstractMask { return false; } - for (Mask mask : masks) { + for (Mask mask : masksArray) { if (!mask.test(vector)) { return false; }