From 4bb5b56da8cfca331e38ce6de90302960d102d88 Mon Sep 17 00:00:00 2001 From: zml2008 Date: Sun, 5 Feb 2012 16:26:19 -0800 Subject: [PATCH] Correctly check for null values in EditSession.replaceBlocks() --- .../java/com/sk89q/worldedit/EditSession.java | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/sk89q/worldedit/EditSession.java b/src/main/java/com/sk89q/worldedit/EditSession.java index 6192e3b74..6c1044f0b 100644 --- a/src/main/java/com/sk89q/worldedit/EditSession.java +++ b/src/main/java/com/sk89q/worldedit/EditSession.java @@ -1248,11 +1248,13 @@ public class EditSession { Set definiteBlockTypes = new HashSet(); Set fuzzyBlockTypes = new HashSet(); - for (BaseBlock block : fromBlockTypes) { - if (block.getData() == -1) { - fuzzyBlockTypes.add(block.getType()); - } else { - definiteBlockTypes.add(block); + if (fromBlockTypes != null) { + for (BaseBlock block : fromBlockTypes) { + if (block.getData() == -1) { + fuzzyBlockTypes.add(block.getType()); + } else { + definiteBlockTypes.add(block); + } } } @@ -1275,9 +1277,17 @@ public class EditSession { for (int z = minZ; z <= maxZ; ++z) { Vector pt = new Vector(x, y, z); BaseBlock curBlockType = getBlock(pt); - //replace - if (!definiteBlockTypes.contains(curBlockType) && !fuzzyBlockTypes.contains(curBlockType.getType())) { - continue; + + if (fromBlockTypes == null) { + //replace + if (curBlockType.isAir()) { + continue; + } + } else { + //replace + if (!definiteBlockTypes.contains(curBlockType) && !fuzzyBlockTypes.contains(curBlockType.getType())) { + continue; + } } if (setBlock(pt, toBlock)) { @@ -1290,9 +1300,16 @@ public class EditSession { for (Vector pt : region) { BaseBlock curBlockType = getBlock(pt); - //replace - if (!definiteBlockTypes.contains(curBlockType) && !fuzzyBlockTypes.contains(curBlockType.getType())) { - continue; + if (fromBlockTypes == null) { + //replace + if (curBlockType.isAir()) { + continue; + } + } else { + //replace + if (!definiteBlockTypes.contains(curBlockType) && !fuzzyBlockTypes.contains(curBlockType.getType())) { + continue; + } } if (setBlock(pt, toBlock)) {