diff --git a/paper-api/src/main/java/org/bukkit/util/BlockIterator.java b/paper-api/src/main/java/org/bukkit/util/BlockIterator.java index 8a377e1413..0cf54e89ed 100644 --- a/paper-api/src/main/java/org/bukkit/util/BlockIterator.java +++ b/paper-api/src/main/java/org/bukkit/util/BlockIterator.java @@ -1,6 +1,7 @@ package org.bukkit.util; import static org.bukkit.util.NumberConversions.*; +import com.google.common.base.Preconditions; import java.util.Iterator; import java.util.NoSuchElementException; import org.bukkit.Location; @@ -53,6 +54,11 @@ public class BlockIterator implements Iterator { * */ public BlockIterator(@NotNull World world, @NotNull Vector start, @NotNull Vector direction, double yOffset, int maxDistance) { + Preconditions.checkArgument(world != null, "world must not be null"); + Preconditions.checkArgument(start != null, "start must not be null"); + Preconditions.checkArgument(direction != null, "direction must not be null"); + Preconditions.checkArgument(!direction.isZero(), "direction must have at least one non-zero component"); + this.world = world; this.maxDistance = maxDistance; diff --git a/paper-api/src/main/java/org/bukkit/util/Vector.java b/paper-api/src/main/java/org/bukkit/util/Vector.java index bdfb9623b7..abd5b815e9 100644 --- a/paper-api/src/main/java/org/bukkit/util/Vector.java +++ b/paper-api/src/main/java/org/bukkit/util/Vector.java @@ -365,6 +365,15 @@ public class Vector implements Cloneable, ConfigurationSerializable { return this; } + /** + * Check whether or not each component of this vector is equal to 0. + * + * @return true if equal to zero, false if at least one component is non-zero + */ + public boolean isZero() { + return x == 0 && y == 0 && z == 0; + } + /** * Converts each component of value -0.0 to 0.0. * diff --git a/paper-api/src/test/java/org/bukkit/util/VectorTest.java b/paper-api/src/test/java/org/bukkit/util/VectorTest.java index 9b846deba8..03442bfff0 100644 --- a/paper-api/src/test/java/org/bukkit/util/VectorTest.java +++ b/paper-api/src/test/java/org/bukkit/util/VectorTest.java @@ -122,4 +122,14 @@ public class VectorTest { assertTrue(Double.isFinite(a.angle(b))); } + + @Test + public void testIsZero() { + assertTrue(new Vector().isZero()); + assertTrue(new Vector(0, 0, 0).isZero()); + + Vector vector = new Vector(1, 2, 3); + vector.zero(); + assertTrue(vector.isZero()); + } }