// API Link: https://tfb.neocities.org/1.16.5/org/bukkit/Location

namespace org.bukkit {
	/** @description 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 */
	export class Location implements java.lang.Cloneable, org.bukkit.configuration.serialization.ConfigurationSerializable {

        /** @description Constructs a new Location with the given coordinates */
        constructor(world: org.bukkit.World, x: double, y: double, z: double);
        /** @description Constructs a new Location with the given coordinates and direction */
        constructor(world: org.bukkit.World, x: double, y: double, z: double, yaw: float, pitch: float);
        constructor(world: any, x: any, y: any, z: any, yaw?: any, pitch?: any) {}

		/** @description Adds the location by another */
		add(x: double, y: double, z: double) : org.bukkit.Location;
		/** @description Adds the location by another */
		add(vec: org.bukkit.Location) : org.bukkit.Location;
		/** @description Adds the location by a vector */
		add(vec: org.bukkit.util.Vector) : org.bukkit.Location;
        add(vec?: any, x?: number, y?: number, z?: number): any {return;}

		/** @description Check if each component of this Location is finite */
		checkFinite() : void {}

		clone() : org.bukkit.Location {return;}

		/** @description Required method for deserialization */
		static deserialize(args: java.util.Map<String,Object>) : org.bukkit.Location {return;}

		/** @description Get the distance between this location and another */
		distance(o: org.bukkit.Location) : double {return;}

		/** @description Get the squared distance between this location and another */
		distanceSquared(o: org.bukkit.Location) : double {return;}

		equals(obj: Object) : boolean {return;}

		/** @description Gets the block at the represented location */
		getBlock() : org.bukkit.block.Block {return;}

		/** @description Gets the floored value of the X component, indicating the block that this location is contained with */
		getBlockX() : int {return;}

		/** @description Gets the floored value of the Y component, indicating the block that this location is contained with */
		getBlockY() : int {return;}

		/** @description Gets the floored value of the Z component, indicating the block that this location is contained with */
		getBlockZ() : int {return;}

		/** @description Gets the chunk at the represented location */
		getChunk() : org.bukkit.Chunk {return;}

		/** @description Gets a unit-vector pointing in the direction that this Location is facing */
		getDirection() : org.bukkit.util.Vector {return;}

		/** @description Gets the pitch of this location, measured in degrees */
		getPitch() : float {return;}

		/** @description Gets the world that this location resides in */
		getWorld() : org.bukkit.World {return;}

		/** @description Gets the x-coordinate of this location */
		getX() : double {return;}

		/** @description Gets the y-coordinate of this location */
		getY() : double {return;}

		/** @description Gets the yaw of this location, measured in degrees */
		getYaw() : float {return;}

		/** @description Gets the z-coordinate of this location */
		getZ() : double {return;}

		/** @description &nbsp; */
		hashCode() : int {return;}

		/** @description Checks if world in this location is present and loaded */
		isWorldLoaded() : boolean {return;}

		/** @description Gets the magnitude of the location, defined as sqrt(x^2+y^2+z^2) */
		length() : double {return;}

		/** @description Gets the magnitude of the location squared */
		lengthSquared() : double {return;}

		/** @description Safely converts a double (location coordinate) to an int (block coordinate) */
		static locToBlock(loc: double) : int {return;}

		/** @description Performs scalar multiplication, multiplying all components with a scalar */
		multiply(m: double) : org.bukkit.Location {return;}

		/** @description Normalizes the given pitch angle to a value between +/-90 degrees */
		static normalizePitch(pitch: float) : float {return;}

		/** @description Normalizes the given yaw angle to a value between +/-180 degrees */
		static normalizeYaw(yaw: float) : float {return;}

		/** @description Creates a Map representation of this class */
		serialize() : java.util.Map<String,Object> {return;}

		/** @description Sets the yaw and pitch to point in the direction of the vector */
		setDirection(vector: org.bukkit.util.Vector) : org.bukkit.Location {return;}

		/** @description Sets the pitch of this location, measured in degrees */
		setPitch(pitch: float) : void {}

		/** @description Sets the world that this location resides in */
		setWorld(world: org.bukkit.World) : void {}

		/** @description Sets the x-coordinate of this location */
		setX(x: double) : void {}

		/** @description Sets the y-coordinate of this location */
		setY(y: double) : void {}

		/** @description Sets the yaw of this location, measured in degrees */
		setYaw(yaw: float) : void {}

		/** @description Sets the z-coordinate of this location */
		setZ(z: double) : void {}

		/** @description Subtracts the location by another */
		subtract(x: double, y: double, z: double) : org.bukkit.Location;
		/** @description Subtracts the location by another */
		subtract(vec: org.bukkit.Location) : org.bukkit.Location;
		/** @description Subtracts the location by a vector */
		subtract(vec: org.bukkit.util.Vector) : org.bukkit.Location;
        subtract(vec?: any, x?: number, y?: number, z?: number): any {return;}

		toString() : String {return;}

		/** @description Constructs a new Vector based on this Location */
		toVector() : org.bukkit.util.Vector {return;}

		/** @description Zero this location's components */
		zero() : org.bukkit.Location {return;}

	}
}