Fixed the replaceBlocks that takes a Pattern too. Closes #1083.

This commit is contained in:
zml2008 2012-02-07 17:14:14 -08:00
parent ea4ee34810
commit 1f921779fa

View File

@ -1333,12 +1333,13 @@ public class EditSession {
public int replaceBlocks(Region region, Set<BaseBlock> fromBlockTypes, Pattern pattern) throws MaxChangedBlocksException { public int replaceBlocks(Region region, Set<BaseBlock> fromBlockTypes, Pattern pattern) throws MaxChangedBlocksException {
Set<BaseBlock> definiteBlockTypes = new HashSet<BaseBlock>(); Set<BaseBlock> definiteBlockTypes = new HashSet<BaseBlock>();
Set<Integer> fuzzyBlockTypes = new HashSet<Integer>(); Set<Integer> fuzzyBlockTypes = new HashSet<Integer>();
if (fromBlockTypes != null) {
for (BaseBlock block : fromBlockTypes) { for (BaseBlock block : fromBlockTypes) {
if (block.getData() == -1) { if (block.getData() == -1) {
fuzzyBlockTypes.add(block.getType()); fuzzyBlockTypes.add(block.getType());
} else { } else {
definiteBlockTypes.add(block); definiteBlockTypes.add(block);
}
} }
} }
@ -1362,14 +1363,14 @@ public class EditSession {
Vector pt = new Vector(x, y, z); Vector pt = new Vector(x, y, z);
BaseBlock curBlockType = getBlock(pt); BaseBlock curBlockType = getBlock(pt);
if (definiteBlockTypes == null) { if (fromBlockTypes == null) {
//replace <to-block> //replace <to-block>
if (curBlockType.isAir()) { if (curBlockType.isAir()) {
continue; continue;
} }
} else { } else {
//replace <from-block> <to-block> //replace <from-block> <to-block>
if (!definiteBlockTypes.contains(curBlockType) && fuzzyBlockTypes.contains(curBlockType.getType())) { if (!definiteBlockTypes.contains(curBlockType) && !fuzzyBlockTypes.contains(curBlockType.getType())) {
continue; continue;
} }
} }
@ -1384,14 +1385,14 @@ public class EditSession {
for (Vector pt : region) { for (Vector pt : region) {
BaseBlock curBlockType = getBlock(pt); BaseBlock curBlockType = getBlock(pt);
if (definiteBlockTypes == null) { if (fromBlockTypes == null) {
//replace <to-block> //replace <to-block>
if (curBlockType.isAir()) { if (curBlockType.isAir()) {
continue; continue;
} }
} else { } else {
//replace <from-block> <to-block> //replace <from-block> <to-block>
if (!definiteBlockTypes.contains(curBlockType) && fuzzyBlockTypes.contains(curBlockType.getType())) { if (!definiteBlockTypes.contains(curBlockType) && !fuzzyBlockTypes.contains(curBlockType.getType())) {
continue; continue;
} }
} }