Package org.bukkit

Class Location

  • All Implemented Interfaces:
    Cloneable, ConfigurationSerializable

    public class Location
    extends Object
    implements Cloneable, ConfigurationSerializable
    Represents a 3-dimensional position in a world.
    No constraints are placed on any angular values other than that they be specified in degrees. This means that negative angles or angles of greater magnitude than 360 are valid, but may be normalized to any other equivalent representation by the implementation.
    • Constructor Summary

      Constructors 
      Constructor Description
      Location​(World world, double x, double y, double z)
      Constructs a new Location with the given coordinates
      Location​(World world, double x, double y, double z, float yaw, float pitch)
      Constructs a new Location with the given coordinates and direction
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Location add​(double x, double y, double z)
      Adds the location by another.
      Location add​(Location vec)
      Adds the location by another.
      Location add​(Vector vec)
      Adds the location by a vector.
      void checkFinite()
      Check if each component of this Location is finite.
      Location clone()  
      static Location deserialize​(Map<String,​Object> args)
      Required method for deserialization
      double distance​(Location o)
      Get the distance between this location and another.
      double distanceSquared​(Location o)
      Get the squared distance between this location and another.
      boolean equals​(Object obj)  
      Block getBlock()
      Gets the block at the represented location
      int getBlockX()
      Gets the floored value of the X component, indicating the block that this location is contained with.
      int getBlockY()
      Gets the floored value of the Y component, indicating the block that this location is contained with.
      int getBlockZ()
      Gets the floored value of the Z component, indicating the block that this location is contained with.
      Chunk getChunk()
      Gets the chunk at the represented location
      Vector getDirection()
      Gets a unit-vector pointing in the direction that this Location is facing.
      float getPitch()
      Gets the pitch of this location, measured in degrees.
      World getWorld()
      Gets the world that this location resides in
      double getX()
      Gets the x-coordinate of this location
      double getY()
      Gets the y-coordinate of this location
      float getYaw()
      Gets the yaw of this location, measured in degrees.
      double getZ()
      Gets the z-coordinate of this location
      int hashCode()  
      boolean isWorldLoaded()
      Checks if world in this location is present and loaded.
      double length()
      Gets the magnitude of the location, defined as sqrt(x^2+y^2+z^2).
      double lengthSquared()
      Gets the magnitude of the location squared.
      static int locToBlock​(double loc)
      Safely converts a double (location coordinate) to an int (block coordinate)
      Location multiply​(double m)
      Performs scalar multiplication, multiplying all components with a scalar.
      static float normalizePitch​(float pitch)
      Normalizes the given pitch angle to a value between +/-90 degrees.
      static float normalizeYaw​(float yaw)
      Normalizes the given yaw angle to a value between +/-180 degrees.
      Map<String,​Object> serialize()
      Creates a Map representation of this class.
      Location setDirection​(Vector vector)
      Sets the yaw and pitch to point in the direction of the vector.
      void setPitch​(float pitch)
      Sets the pitch of this location, measured in degrees.
      void setWorld​(World world)
      Sets the world that this location resides in
      void setX​(double x)
      Sets the x-coordinate of this location
      void setY​(double y)
      Sets the y-coordinate of this location
      void setYaw​(float yaw)
      Sets the yaw of this location, measured in degrees.
      void setZ​(double z)
      Sets the z-coordinate of this location
      Location subtract​(double x, double y, double z)
      Subtracts the location by another.
      Location subtract​(Location vec)
      Subtracts the location by another.
      Location subtract​(Vector vec)
      Subtracts the location by a vector.
      String toString()  
      Vector toVector()
      Constructs a new Vector based on this Location
      Location zero()
      Zero this location's components.
    • Constructor Detail

      • Location

        public Location​(@Nullable
                        World world,
                        double x,
                        double y,
                        double z)
        Constructs a new Location with the given coordinates
        Parameters:
        world - The world in which this location resides
        x - The x-coordinate of this new location
        y - The y-coordinate of this new location
        z - The z-coordinate of this new location
      • Location

        public Location​(@Nullable
                        World world,
                        double x,
                        double y,
                        double z,
                        float yaw,
                        float pitch)
        Constructs a new Location with the given coordinates and direction
        Parameters:
        world - The world in which this location resides
        x - The x-coordinate of this new location
        y - The y-coordinate of this new location
        z - The z-coordinate of this new location
        yaw - The absolute rotation on the x-plane, in degrees
        pitch - The absolute rotation on the y-plane, in degrees
    • Method Detail

      • setWorld

        public void setWorld​(@Nullable
                             World world)
        Sets the world that this location resides in
        Parameters:
        world - New world that this location resides in
      • isWorldLoaded

        public boolean isWorldLoaded()
        Checks if world in this location is present and loaded.
        Returns:
        true if is loaded, otherwise false
      • getWorld

        @Nullable
        public World getWorld()
        Gets the world that this location resides in
        Returns:
        World that contains this location, or null if it is not set
        Throws:
        IllegalArgumentException - when world is unloaded
        See Also:
        isWorldLoaded()
      • getChunk

        @NotNull
        public Chunk getChunk()
        Gets the chunk at the represented location
        Returns:
        Chunk at the represented location
      • getBlock

        @NotNull
        public Block getBlock()
        Gets the block at the represented location
        Returns:
        Block at the represented location
      • setX

        public void setX​(double x)
        Sets the x-coordinate of this location
        Parameters:
        x - X-coordinate
      • getX

        public double getX()
        Gets the x-coordinate of this location
        Returns:
        x-coordinate
      • getBlockX

        public int getBlockX()
        Gets the floored value of the X component, indicating the block that this location is contained with.
        Returns:
        block X
      • setY

        public void setY​(double y)
        Sets the y-coordinate of this location
        Parameters:
        y - y-coordinate
      • getY

        public double getY()
        Gets the y-coordinate of this location
        Returns:
        y-coordinate
      • getBlockY

        public int getBlockY()
        Gets the floored value of the Y component, indicating the block that this location is contained with.
        Returns:
        block y
      • setZ

        public void setZ​(double z)
        Sets the z-coordinate of this location
        Parameters:
        z - z-coordinate
      • getZ

        public double getZ()
        Gets the z-coordinate of this location
        Returns:
        z-coordinate
      • getBlockZ

        public int getBlockZ()
        Gets the floored value of the Z component, indicating the block that this location is contained with.
        Returns:
        block z
      • setYaw

        public void setYaw​(float yaw)
        Sets the yaw of this location, measured in degrees.
        • A yaw of 0 or 360 represents the positive z direction.
        • A yaw of 180 represents the negative z direction.
        • A yaw of 90 represents the negative x direction.
        • A yaw of 270 represents the positive x direction.
        Increasing yaw values are the equivalent of turning to your right-facing, increasing the scale of the next respective axis, and decreasing the scale of the previous axis.
        Parameters:
        yaw - new rotation's yaw
      • getYaw

        public float getYaw()
        Gets the yaw of this location, measured in degrees.
        • A yaw of 0 or 360 represents the positive z direction.
        • A yaw of 180 represents the negative z direction.
        • A yaw of 90 represents the negative x direction.
        • A yaw of 270 represents the positive x direction.
        Increasing yaw values are the equivalent of turning to your right-facing, increasing the scale of the next respective axis, and decreasing the scale of the previous axis.
        Returns:
        the rotation's yaw
      • setPitch

        public void setPitch​(float pitch)
        Sets the pitch of this location, measured in degrees.
        • A pitch of 0 represents level forward facing.
        • A pitch of 90 represents downward facing, or negative y direction.
        • A pitch of -90 represents upward facing, or positive y direction.
        Increasing pitch values the equivalent of looking down.
        Parameters:
        pitch - new incline's pitch
      • getPitch

        public float getPitch()
        Gets the pitch of this location, measured in degrees.
        • A pitch of 0 represents level forward facing.
        • A pitch of 90 represents downward facing, or negative y direction.
        • A pitch of -90 represents upward facing, or positive y direction.
        Increasing pitch values the equivalent of looking down.
        Returns:
        the incline's pitch
      • getDirection

        @NotNull
        public Vector getDirection()
        Gets a unit-vector pointing in the direction that this Location is facing.
        Returns:
        a vector pointing the direction of this location's pitch and yaw
      • setDirection

        @NotNull
        public Location setDirection​(@NotNull
                                     Vector vector)
        Sets the yaw and pitch to point in the direction of the vector.
        Parameters:
        vector - the direction vector
        Returns:
        the same location
      • add

        @NotNull
        public Location add​(@NotNull
                            Location vec)
        Adds the location by another.
        Parameters:
        vec - The other location
        Returns:
        the same location
        Throws:
        IllegalArgumentException - for differing worlds
        See Also:
        Vector
      • add

        @NotNull
        public Location add​(@NotNull
                            Vector vec)
        Adds the location by a vector.
        Parameters:
        vec - Vector to use
        Returns:
        the same location
        See Also:
        Vector
      • add

        @NotNull
        public Location add​(double x,
                            double y,
                            double z)
        Adds the location by another. Not world-aware.
        Parameters:
        x - X coordinate
        y - Y coordinate
        z - Z coordinate
        Returns:
        the same location
        See Also:
        Vector
      • subtract

        @NotNull
        public Location subtract​(@NotNull
                                 Location vec)
        Subtracts the location by another.
        Parameters:
        vec - The other location
        Returns:
        the same location
        Throws:
        IllegalArgumentException - for differing worlds
        See Also:
        Vector
      • subtract

        @NotNull
        public Location subtract​(@NotNull
                                 Vector vec)
        Subtracts the location by a vector.
        Parameters:
        vec - The vector to use
        Returns:
        the same location
        See Also:
        Vector
      • subtract

        @NotNull
        public Location subtract​(double x,
                                 double y,
                                 double z)
        Subtracts the location by another. Not world-aware and orientation independent.
        Parameters:
        x - X coordinate
        y - Y coordinate
        z - Z coordinate
        Returns:
        the same location
        See Also:
        Vector
      • length

        public double length()
        Gets the magnitude of the location, defined as sqrt(x^2+y^2+z^2). The value of this method is not cached and uses a costly square-root function, so do not repeatedly call this method to get the location's magnitude. NaN will be returned if the inner result of the sqrt() function overflows, which will be caused if the length is too long. Not world-aware and orientation independent.
        Returns:
        the magnitude
        See Also:
        Vector
      • lengthSquared

        public double lengthSquared()
        Gets the magnitude of the location squared. Not world-aware and orientation independent.
        Returns:
        the magnitude
        See Also:
        Vector
      • distance

        public double distance​(@NotNull
                               Location o)
        Get the distance between this location and another. The value of this method is not cached and uses a costly square-root function, so do not repeatedly call this method to get the location's magnitude. NaN will be returned if the inner result of the sqrt() function overflows, which will be caused if the distance is too long.
        Parameters:
        o - The other location
        Returns:
        the distance
        Throws:
        IllegalArgumentException - for differing worlds
        See Also:
        Vector
      • distanceSquared

        public double distanceSquared​(@NotNull
                                      Location o)
        Get the squared distance between this location and another.
        Parameters:
        o - The other location
        Returns:
        the distance
        Throws:
        IllegalArgumentException - for differing worlds
        See Also:
        Vector
      • multiply

        @NotNull
        public Location multiply​(double m)
        Performs scalar multiplication, multiplying all components with a scalar. Not world-aware.
        Parameters:
        m - The factor
        Returns:
        the same location
        See Also:
        Vector
      • zero

        @NotNull
        public Location zero()
        Zero this location's components. Not world-aware.
        Returns:
        the same location
        See Also:
        Vector
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • toVector

        @NotNull
        public Vector toVector()
        Constructs a new Vector based on this Location
        Returns:
        New Vector containing the coordinates represented by this Location
      • locToBlock

        public static int locToBlock​(double loc)
        Safely converts a double (location coordinate) to an int (block coordinate)
        Parameters:
        loc - Precise coordinate
        Returns:
        Block coordinate
      • normalizeYaw

        public static float normalizeYaw​(float yaw)
        Normalizes the given yaw angle to a value between +/-180 degrees.
        Parameters:
        yaw - the yaw in degrees
        Returns:
        the normalized yaw in degrees
        See Also:
        getYaw()
      • normalizePitch

        public static float normalizePitch​(float pitch)
        Normalizes the given pitch angle to a value between +/-90 degrees.
        Parameters:
        pitch - the pitch in degrees
        Returns:
        the normalized pitch in degrees
        See Also:
        getPitch()