diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/function/operation/ForwardExtentCopy.java b/worldedit-core/src/main/java/com/sk89q/worldedit/function/operation/ForwardExtentCopy.java index 83b259e1c..4a164fc64 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/function/operation/ForwardExtentCopy.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/function/operation/ForwardExtentCopy.java @@ -279,6 +279,8 @@ public class ForwardExtentCopy implements Operation { public Operation resume(RunContext run) throws WorldEditException { if (currentTransform == null) { currentTransform = transform; + } else if (!currentTransform.equals(transform)) { + currentTransform = currentTransform.combine(transform); } if (lastBiomeVisitor != null) { affectedBiomeCols += lastBiomeVisitor.getAffected(); @@ -406,7 +408,6 @@ public class ForwardExtentCopy implements Operation { } if (transExt != null) { - currentTransform = currentTransform.combine(transform); transExt.setTransform(currentTransform); } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/math/transform/AffineTransform.java b/worldedit-core/src/main/java/com/sk89q/worldedit/math/transform/AffineTransform.java index 3129e9c66..68c7344e2 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/math/transform/AffineTransform.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/math/transform/AffineTransform.java @@ -306,13 +306,13 @@ public class AffineTransform implements Transform, Serializable { return true; } // Check for flip-and-rotate - if (vector.getX() != 0 && vector.getY() != 0 && m01 != 0 && m10 != 0) { + if (vector.getX() != 0 && vector.getY() != 0 && ((m01 < 0 && m10 < 0) || (m01 > 0 && m10 > 0))) { flip = true; } - if (vector.getX() != 0 && vector.getZ() != 0 && m02 != 0 && m20 != 0) { + if (vector.getX() != 0 && vector.getZ() != 0 && ((m02 < 0 && m20 < 0) || (m02 > 0 && m20 > 0))) { flip = !flip; } - if (vector.getY() != 0 && vector.getZ() != 0 && m12 != 0 && m21 != 0) { + if (vector.getY() != 0 && vector.getZ() != 0 && ((m12 < 0 && m21 < 0) || (m12 > 0 && m21 > 0))) { flip = !flip; } return flip;