diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java b/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java index 831d309286..71f74c0b81 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java @@ -3298,7 +3298,9 @@ public int hollowOutRegion(Region region, int thickness, Pattern pattern, Mask m outer: for (BlockVector3 position : region) { for (BlockVector3 recurseDirection : recurseDirections) { - BlockVector3 neighbor = position.add(recurseDirection); + //FAWE start - mutable + BlockVector3 neighbor = mutable.setComponents(position).add(recurseDirection); + //FAWE end if (outside.contains(neighbor)) { newOutside.add(position); @@ -3313,7 +3315,9 @@ public int hollowOutRegion(Region region, int thickness, Pattern pattern, Mask m outer: for (BlockVector3 position : region) { for (BlockVector3 recurseDirection : recurseDirections) { - BlockVector3 neighbor = position.add(recurseDirection); + //FAWE start - mutable + BlockVector3 neighbor = mutable.setComponents(position).add(recurseDirection); + //FAWE end if (outside.contains(neighbor)) { continue outer; @@ -3644,10 +3648,12 @@ public Set getHollowed(Set vset) { } private void recurseHollow(Region region, BlockVector3 origin, Set outside, Mask mask) { - // FAWE start - use BlockVector3Set instead of LinkedList + // FAWE start - use BlockVector3Set instead of LinkedList & mutable BV3 final BlockVector3Set queue = BlockVector3Set.getAppropriateVectorSet(region); queue.add(origin); + MutableBlockVector3 mutable = new MutableBlockVector3(); + while (!queue.isEmpty()) { Iterator iter = queue.iterator(); while (iter.hasNext()) { @@ -3664,7 +3670,7 @@ private void recurseHollow(Region region, BlockVector3 origin, Set } for (BlockVector3 recurseDirection : recurseDirections) { - queue.add(current.add(recurseDirection)); + queue.add(mutable.setComponents(current).add(recurseDirection)); } } }