Record Class BlockVector3

java.lang.Object
java.lang.Record
com.sk89q.worldedit.math.BlockVector3

public record BlockVector3(int x, int y, int z) extends Record
An immutable 3-dimensional vector.
  • Field Details

  • Constructor Details

    • BlockVector3

      public BlockVector3(int x, int y, int z)
      Creates an instance of a BlockVector3 record class.
      Parameters:
      x - the value for the x record component
      y - the value for the y record component
      z - the value for the z record component
  • Method Details

    • at

      public static BlockVector3 at(double x, double y, double z)
    • at

      public static BlockVector3 at(int x, int y, int z)
    • isLongPackable

      public static boolean isLongPackable(BlockVector3 location)
    • checkLongPackable

      public static void checkLongPackable(BlockVector3 location)
    • fromLongPackedForm

      public static BlockVector3 fromLongPackedForm(long packed)
    • sortByCoordsYzx

      public static Comparator<BlockVector3> sortByCoordsYzx()
      Returns a comparator that sorts vectors first by Y, then Z, then X.

      Useful for sorting by chunk block storage order.

    • toLongPackedForm

      public long toLongPackedForm()
    • getX

      @Deprecated(forRemoval=true) public int getX()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use x() instead
      Get the X coordinate.
      Returns:
      the x coordinate
    • getBlockX

      @Deprecated(forRemoval=true) public int getBlockX()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use x() instead
      Get the X coordinate.
      Returns:
      the x coordinate
    • withX

      public BlockVector3 withX(int x)
      Set the X coordinate.
      Parameters:
      x - the new X
      Returns:
      a new vector
    • getY

      @Deprecated(forRemoval=true) public int getY()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use y() instead
      Get the Y coordinate.
      Returns:
      the y coordinate
    • getBlockY

      @Deprecated(forRemoval=true) public int getBlockY()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use y() instead
      Get the Y coordinate.
      Returns:
      the y coordinate
    • withY

      public BlockVector3 withY(int y)
      Set the Y coordinate.
      Parameters:
      y - the new Y
      Returns:
      a new vector
    • getZ

      @Deprecated(forRemoval=true) public int getZ()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use z() instead
      Get the Z coordinate.
      Returns:
      the z coordinate
    • getBlockZ

      @Deprecated(forRemoval=true) public int getBlockZ()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use z() instead
      Get the Z coordinate.
      Returns:
      the z coordinate
    • withZ

      public BlockVector3 withZ(int z)
      Set the Z coordinate.
      Parameters:
      z - the new Z
      Returns:
      a new vector
    • add

      public BlockVector3 add(BlockVector3 other)
      Add another vector to this vector and return the result as a new vector.
      Parameters:
      other - the other vector
      Returns:
      a new vector
    • add

      public BlockVector3 add(int x, int y, int z)
      Add another vector to this vector and return the result as a new vector.
      Parameters:
      x - the value to add
      y - the value to add
      z - the value to add
      Returns:
      a new vector
    • add

      public BlockVector3 add(BlockVector3... others)
      Add a list of vectors to this vector and return the result as a new vector.
      Parameters:
      others - an array of vectors
      Returns:
      a new vector
    • subtract

      public BlockVector3 subtract(BlockVector3 other)
      Subtract another vector from this vector and return the result as a new vector.
      Parameters:
      other - the other vector
      Returns:
      a new vector
    • subtract

      public BlockVector3 subtract(int x, int y, int z)
      Subtract another vector from this vector and return the result as a new vector.
      Parameters:
      x - the value to subtract
      y - the value to subtract
      z - the value to subtract
      Returns:
      a new vector
    • subtract

      public BlockVector3 subtract(BlockVector3... others)
      Subtract a list of vectors from this vector and return the result as a new vector.
      Parameters:
      others - an array of vectors
      Returns:
      a new vector
    • multiply

      public BlockVector3 multiply(BlockVector3 other)
      Multiply this vector by another vector on each component.
      Parameters:
      other - the other vector
      Returns:
      a new vector
    • multiply

      public BlockVector3 multiply(int x, int y, int z)
      Multiply this vector by another vector on each component.
      Parameters:
      x - the value to multiply
      y - the value to multiply
      z - the value to multiply
      Returns:
      a new vector
    • multiply

      public BlockVector3 multiply(BlockVector3... others)
      Multiply this vector by zero or more vectors on each component.
      Parameters:
      others - an array of vectors
      Returns:
      a new vector
    • multiply

      public BlockVector3 multiply(int n)
      Perform scalar multiplication and return a new vector.
      Parameters:
      n - the value to multiply
      Returns:
      a new vector
    • divide

      public BlockVector3 divide(BlockVector3 other)
      Divide this vector by another vector on each component.
      Parameters:
      other - the other vector
      Returns:
      a new vector
    • divide

      public BlockVector3 divide(int x, int y, int z)
      Divide this vector by another vector on each component.
      Parameters:
      x - the value to divide by
      y - the value to divide by
      z - the value to divide by
      Returns:
      a new vector
    • divide

      public BlockVector3 divide(int n)
      Perform scalar division and return a new vector.
      Parameters:
      n - the value to divide by
      Returns:
      a new vector
    • shr

      public BlockVector3 shr(int x, int y, int z)
      Shift all components right.
      Parameters:
      x - the value to shift x by
      y - the value to shift y by
      z - the value to shift z by
      Returns:
      a new vector
    • shr

      public BlockVector3 shr(int n)
      Shift all components right by n.
      Parameters:
      n - the value to shift by
      Returns:
      a new vector
    • shl

      public BlockVector3 shl(int x, int y, int z)
      Shift all components left.
      Parameters:
      x - the value to shift x by
      y - the value to shift y by
      z - the value to shift z by
      Returns:
      a new vector
    • shl

      public BlockVector3 shl(int n)
      Shift all components left by n.
      Parameters:
      n - the value to shift by
      Returns:
      a new vector
    • length

      public double length()
      Get the length of the vector.
      Returns:
      length
    • lengthSq

      public int lengthSq()
      Get the length, squared, of the vector.
      Returns:
      length, squared
    • distance

      public double distance(BlockVector3 other)
      Get the distance between this vector and another vector.
      Parameters:
      other - the other vector
      Returns:
      distance
    • distanceSq

      public int distanceSq(BlockVector3 other)
      Get the distance between this vector and another vector, squared.
      Parameters:
      other - the other vector
      Returns:
      distance
    • normalize

      public BlockVector3 normalize()
      Get the normalized vector, which is the vector divided by its length, as a new vector.
      Returns:
      a new vector
    • dot

      public double dot(BlockVector3 other)
      Gets the dot product of this and another vector.
      Parameters:
      other - the other vector
      Returns:
      the dot product of this and the other vector
    • cross

      public BlockVector3 cross(BlockVector3 other)
      Gets the cross product of this and another vector.
      Parameters:
      other - the other vector
      Returns:
      the cross product of this and the other vector
    • containedWithin

      public boolean containedWithin(BlockVector3 min, BlockVector3 max)
      Checks to see if a vector is contained with another.
      Parameters:
      min - the minimum point (X, Y, and Z are the lowest)
      max - the maximum point (X, Y, and Z are the lowest)
      Returns:
      true if the vector is contained
    • clampY

      public BlockVector3 clampY(int min, int max)
      Clamp the Y component.
      Parameters:
      min - the minimum value
      max - the maximum value
      Returns:
      a new vector
    • floor

      public BlockVector3 floor()
      Floors the values of all components.
      Returns:
      a new vector
    • ceil

      public BlockVector3 ceil()
      Rounds all components up.
      Returns:
      a new vector
    • round

      public BlockVector3 round()
      Rounds all components to the closest integer.

      Components < 0.5 are rounded down, otherwise up.

      Returns:
      a new vector
    • abs

      public BlockVector3 abs()
      Returns a vector with the absolute values of the components of this vector.
      Returns:
      a new vector
    • transform2D

      public BlockVector3 transform2D(double angle, double aboutX, double aboutZ, double translateX, double translateZ)
      Perform a 2D transformation on this vector and return a new one.
      Parameters:
      angle - in degrees
      aboutX - about which x coordinate to rotate
      aboutZ - about which z coordinate to rotate
      translateX - what to add after rotation
      translateZ - what to add after rotation
      Returns:
      a new vector
      See Also:
    • toPitch

      public double toPitch()
      Get this vector's pitch as used within the game.
      Returns:
      pitch in radians
    • toYaw

      public double toYaw()
      Get this vector's yaw as used within the game.
      Returns:
      yaw in radians
    • getMinimum

      public BlockVector3 getMinimum(BlockVector3 v2)
      Gets the minimum components of two vectors.
      Parameters:
      v2 - the second vector
      Returns:
      minimum
    • getMaximum

      public BlockVector3 getMaximum(BlockVector3 v2)
      Gets the maximum components of two vectors.
      Parameters:
      v2 - the second vector
      Returns:
      maximum
    • toBlockVector2

      public BlockVector2 toBlockVector2()
      Creates a 2D vector by dropping the Y component from this vector.
      Returns:
      a new BlockVector2
    • toVector3

      public Vector3 toVector3()
    • toString

      public String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • toParserString

      public String toParserString()
      Returns a string representation that is supported by the parser.
      Returns:
      string
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with '=='.
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • x

      public int x()
      Returns the value of the x record component.
      Returns:
      the value of the x record component
    • y

      public int y()
      Returns the value of the y record component.
      Returns:
      the value of the y record component
    • z

      public int z()
      Returns the value of the z record component.
      Returns:
      the value of the z record component