# 类的使用
org.bukkit.util.Vector

使用Vector的程序包
程序包
说明
org.bukkit
Bukkit API的顶级程序包, 包含通用的API类和接口.
org.bukkit.block
用于操作在`世界`内的三位像素(方块)，包括一些特定的状态.
org.bukkit.configuration
专门用于处理插件运行时配置的类.
org.bukkit.entity
为在`世界`内存在的非三维像素单位(实体)提供的接口，包含玩家、怪物、抛射物等.
org.bukkit.event.block
与`方块`被改变或与`世界`进行交互等情况相关的`事件`.
org.bukkit.event.entity
与`实体`相关的`事件`，不包括 一些直接引用的更具体的实体类型.
org.bukkit.event.player
与`玩家`相关的`事件`.
org.bukkit.projectiles
代表一个抛射物的抛射源的类的集合.
org.bukkit.util
提供多种目的和单一目的的类以简化各种编程概念.

- ## org.bukkit中Vector的使用

  返回Vector的org.bukkit中的方法
  修饰符和类型
  方法
  说明
  `@NotNull Vector`
  Location.`getDirection()`
  获取本位置所面向的方向的单位向量.
  `@NotNull Vector`
  Location.`toVector()`
  基于此位置构造一个新的`向量`.
  参数类型为Vector的org.bukkit中的方法
  修饰符和类型
  方法
  说明
  `@NotNull Location`
  Location.`add(@NotNull Vector vec)`
  将本位置的坐标加上一个向量的坐标.
  `@Nullable RayTraceResult`
  World.`rayTrace(@NotNull Location start, @NotNull Vector direction, double maxDistance, @NotNull FluidCollisionMode fluidCollisionMode, boolean ignorePassableBlocks, double raySize, @Nullable Predicate<? super Entity> filter)`
  执行射线跟踪, 检查方块碰撞和实体碰撞.
  `@Nullable RayTraceResult`
  World.`rayTraceBlocks(@NotNull Location start, @NotNull Vector direction, double maxDistance)`
  执行射线跟踪, 使用方块的精确碰撞形状来检查方块碰撞.
  `@Nullable RayTraceResult`
  World.`rayTraceBlocks(@NotNull Location start, @NotNull Vector direction, double maxDistance, @NotNull FluidCollisionMode fluidCollisionMode)`
  执行射线跟踪, 使用方块的精确碰撞形状来检查方块碰撞.
  `@Nullable RayTraceResult`
  World.`rayTraceBlocks(@NotNull Location start, @NotNull Vector direction, double maxDistance, @NotNull FluidCollisionMode fluidCollisionMode, boolean ignorePassableBlocks)`
  执行射线跟踪, 使用方块的精确碰撞形状来检查方块碰撞.
  `@Nullable RayTraceResult`
  World.`rayTraceEntities(@NotNull Location start, @NotNull Vector direction, double maxDistance)`
  执行检查实体碰撞的射线跟踪.
  `@Nullable RayTraceResult`
  World.`rayTraceEntities(@NotNull Location start, @NotNull Vector direction, double maxDistance, double raySize)`
  执行检查实体碰撞的射线跟踪.
  `@Nullable RayTraceResult`
  World.`rayTraceEntities(@NotNull Location start, @NotNull Vector direction, double maxDistance, double raySize, @Nullable Predicate<? super Entity> filter)`
  执行检查实体碰撞的射线跟踪.
  `@Nullable RayTraceResult`
  World.`rayTraceEntities(@NotNull Location start, @NotNull Vector direction, double maxDistance, @Nullable Predicate<? super Entity> filter)`
  执行检查实体碰撞的射线跟踪.
  `@NotNull Location`
  Location.`setDirection(@NotNull Vector vector)`
  将`偏航角`和`俯仰角`设为指向某一向量的方向.
  `@NotNull Arrow`
  World.`spawnArrow(@NotNull Location location, @NotNull Vector direction, float speed, float spread)`
  在指定的`位置`创建一个`箭`的实体.
  `<T extends AbstractArrow>
  T`
  World.`spawnArrow(@NotNull Location location, @NotNull Vector direction, float speed, float spread, @NotNull Class<T> clazz)`
  Creates an arrow entity of the given class at the given `Location`
  `@NotNull Location`
  Location.`subtract(@NotNull Vector vec)`
  从本位置的坐标中减去向量的坐标.

- ## org.bukkit.block中Vector的使用

  返回Vector的org.bukkit.block中的方法
  修饰符和类型
  方法
  说明
  `@NotNull Vector`
  BlockFace.`getDirection()`
  获取与此朝向相对应的单位向量.
  参数类型为Vector的org.bukkit.block中的方法
  修饰符和类型
  方法
  说明
  `int`
  ChiseledBookshelf.`getSlot(@NotNull Vector position)`
  Gets the appropriate slot based on a vector relative to this block.
  Will return -1 if the given vector is not within the bounds of any slot.
  `@Nullable RayTraceResult`
  Block.`rayTrace(@NotNull Location start, @NotNull Vector direction, double maxDistance, @NotNull FluidCollisionMode fluidCollisionMode)`
  Performs a ray trace that checks for collision with this specific block in its current state using its precise collision shape.

- ## org.bukkit.configuration中Vector的使用

  返回Vector的org.bukkit.configuration中的方法
  修饰符和类型
  方法
  说明
  `@Nullable Vector`
  ConfigurationSection.`getVector(@NotNull String path)`
  在指定路径获取一个Vector类型的值.
  `@Nullable Vector`
  ConfigurationSection.`getVector(@NotNull String path, @Nullable Vector def)`
  在指定路径上获取一个`Vector`, 如果无法获取, 则直接返回默认值.
  `@Nullable Vector`
  MemorySection.`getVector(@NotNull String path)`
  `@Nullable Vector`
  MemorySection.`getVector(@NotNull String path, @Nullable Vector def)`
  参数类型为Vector的org.bukkit.configuration中的方法
  修饰符和类型
  方法
  说明
  `@Nullable Vector`
  ConfigurationSection.`getVector(@NotNull String path, @Nullable Vector def)`
  在指定路径上获取一个`Vector`, 如果无法获取, 则直接返回默认值.
  `@Nullable Vector`
  MemorySection.`getVector(@NotNull String path, @Nullable Vector def)`

- ## org.bukkit.entity中Vector的使用

  返回Vector的org.bukkit.entity中的方法
  修饰符和类型
  方法
  说明
  `@NotNull Vector`
  Fireball.`getAcceleration()`
  Retrieve the acceleration of this fireball.
  `@NotNull Vector`
  Minecart.`getDerailedVelocityMod()`
  Gets the derailed velocity modifier.
  `@NotNull Vector`
  Fireball.`getDirection()`
  已过时。
  badly named method, returns the value of `Fireball.getAcceleration()`
  `@NotNull Vector`
  Minecart.`getFlyingVelocityMod()`
  Gets the flying velocity modifier.
  `@NotNull Vector`
  Entity.`getVelocity()`
  获取此实体的速度.
  `@NotNull Vector`
  Vehicle.`getVelocity()`
  Gets the vehicle's velocity.
  参数类型为Vector的org.bukkit.entity中的方法
  修饰符和类型
  方法
  说明
  `void`
  Fireball.`setAcceleration(@NotNull Vector acceleration)`
  Sets the acceleration of the fireball.
  `void`
  Minecart.`setDerailedVelocityMod(@NotNull Vector derailed)`
  Sets the derailed velocity modifier.
  `void`
  Fireball.`setDirection(@NotNull Vector direction)`
  Sets the direction the fireball should be flying towards.
  `void`
  Minecart.`setFlyingVelocityMod(@NotNull Vector flying)`
  Sets the flying velocity modifier.
  `void`
  Entity.`setVelocity(@NotNull Vector velocity)`
  设置此实体的速度 (单位: 米每tick).
  `void`
  Vehicle.`setVelocity(@NotNull Vector vel)`
  Sets the vehicle's velocity in meters per tick.

- ## org.bukkit.event.block中Vector的使用

  返回Vector的org.bukkit.event.block中的方法
  修饰符和类型
  方法
  说明
  `@NotNull Vector`
  BlockDispenseEvent.`getVelocity()`
  获取物品射出的速度、角度 (单位: 米每tick).
  参数类型为Vector的org.bukkit.event.block中的方法
  修饰符和类型
  方法
  说明
  `void`
  BlockDispenseEvent.`setVelocity(@NotNull Vector vel)`
  设置物品射出的速度速度、角度 (单位: 米每tick).
  参数类型为Vector的org.bukkit.event.block中的构造器
  限定符
  构造器
  说明
  ``
  `BlockDispenseEvent(@NotNull Block block, @NotNull ItemStack dispensed, @NotNull Vector velocity)`

- ## org.bukkit.event.entity中Vector的使用

  返回Vector的org.bukkit.event.entity中的方法
  修饰符和类型
  方法
  说明
  `@NotNull Vector`
  EntityPortalExitEvent.`getAfter()`
  获取实体退出传送门后的速度的副本.
  `@NotNull Vector`
  EntityPortalExitEvent.`getBefore()`
  获取实体进入传送门前的速度的副本.
  `@NotNull Vector`
  EntityKnockbackEvent.`getFinalKnockback()`
  Gets the force that will be applied to the entity.
  `@NotNull Vector`
  EntityKnockbackEvent.`getKnockback()`
  Gets the raw knockback force that will be applied to the entity.
  参数类型为Vector的org.bukkit.event.entity中的方法
  修饰符和类型
  方法
  说明
  `void`
  EntityPortalExitEvent.`setAfter(@NotNull Vector after)`
  设置实体退出传送门后的速度.
  `void`
  EntityKnockbackEvent.`setFinalKnockback(@NotNull Vector knockback)`
  Sets the force that will be applied to the entity.
  参数类型为Vector的org.bukkit.event.entity中的构造器
  限定符
  构造器
  说明
  ``
  `EntityKnockbackByEntityEvent(@NotNull LivingEntity entity, @NotNull Entity source, @NotNull EntityKnockbackEvent.KnockbackCause cause, double force, @NotNull Vector rawKnockback, @NotNull Vector knockback)`
  ``
  `EntityKnockbackEvent(@NotNull LivingEntity entity, @NotNull EntityKnockbackEvent.KnockbackCause cause, double force, @NotNull Vector rawKnockback, @NotNull Vector knockback)`
  ``
  `EntityPortalExitEvent(@NotNull Entity entity, @NotNull Location from, @NotNull Location to, @NotNull Vector before, @NotNull Vector after)`

- ## org.bukkit.event.player中Vector的使用

  返回Vector的org.bukkit.event.player中的方法
  修饰符和类型
  方法
  说明
  `@NotNull Vector`
  PlayerInteractAtEntityEvent.`getClickedPosition()`
  `@Nullable Vector`
  PlayerInteractEvent.`getClickedPosition()`
  Gets the exact position on the block the player interacted with, this will be null outside of `Action.RIGHT_CLICK_BLOCK`.
  `@NotNull Vector`
  PlayerRiptideEvent.`getVelocity()`
  Get the velocity applied to the player as a result of this riptide.
  `@NotNull Vector`
  PlayerVelocityEvent.`getVelocity()`
  得到玩家目前的移动速度.
  参数类型为Vector的org.bukkit.event.player中的方法
  修饰符和类型
  方法
  说明
  `void`
  PlayerVelocityEvent.`setVelocity(@NotNull Vector velocity)`
  设置玩家移动速度 (单位: 米每tick).
  参数类型为Vector的org.bukkit.event.player中的构造器
  限定符
  构造器
  说明
  ``
  `PlayerInteractAtEntityEvent(@NotNull Player who, @NotNull Entity clickedEntity, @NotNull Vector position)`
  ``
  `PlayerInteractAtEntityEvent(@NotNull Player who, @NotNull Entity clickedEntity, @NotNull Vector position, @NotNull EquipmentSlot hand)`
  ``
  `PlayerInteractEvent(@NotNull Player who, @NotNull Action action, @Nullable ItemStack item, @Nullable Block clickedBlock, @NotNull BlockFace clickedFace, @Nullable EquipmentSlot hand, @Nullable Vector clickedPosition)`
  ``
  `PlayerRiptideEvent(@NotNull Player who, @NotNull ItemStack item, @NotNull Vector velocity)`
  ``
  `PlayerVelocityEvent(@NotNull Player player, @NotNull Vector velocity)`

- ## org.bukkit.projectiles中Vector的使用

  参数类型为Vector的org.bukkit.projectiles中的方法
  修饰符和类型
  方法
  说明
  `<T extends Projectile>
  T`
  ProjectileSource.`launchProjectile(@NotNull Class<? extends T> projectile, @Nullable Vector velocity)`
  让ProjectileSource以一个初始速度向量发射`Projectile`。

- ## org.bukkit.util中Vector的使用

  org.bukkit.util中Vector的子类
  修饰符和类型
  类
  说明
  `class`
  `BlockVector`
  这是一个带有可以向下取整XYZ坐标函数的向量类,就像WorldEdit中的BlockVector.
  返回Vector的org.bukkit.util中的方法
  修饰符和类型
  方法
  说明
  `@NotNull Vector`
  Vector.`add(@NotNull Vector vec)`
  将本向量的坐标加上另一个向量的坐标.
  `@NotNull Vector`
  Vector.`clone()`
  克隆此向量.
  `@NotNull Vector`
  Vector.`copy(@NotNull Vector vec)`
  将本向量的坐标全部设为另一个向量的坐标.
  `@NotNull Vector`
  Vector.`crossProduct(@NotNull Vector o)`
  将本向量的坐标设为两个向量的叉积.
  `static @NotNull Vector`
  Vector.`deserialize(@NotNull Map<String,Object> args)`
  `@NotNull Vector`
  Vector.`divide(@NotNull Vector vec)`
  将本向量的坐标除以另一个向量的坐标.
  `static @NotNull Vector`
  Vector.`fromJOML(@NotNull org.joml.Vector3d vector)`
  Gets a vector with components that match the provided JOML `Vector3d`.
  `static @NotNull Vector`
  Vector.`fromJOML(@NotNull org.joml.Vector3dc vector)`
  Gets a vector with components that match the provided JOML `Vector3dc`.
  `static @NotNull Vector`
  Vector.`fromJOML(@NotNull org.joml.Vector3f vector)`
  Gets a vector with components that match the provided JOML `Vector3f`.
  `static @NotNull Vector`
  Vector.`fromJOML(@NotNull org.joml.Vector3fc vector)`
  Gets a vector with components that match the provided JOML `Vector3fc`.
  `static @NotNull Vector`
  Vector.`fromJOML(@NotNull org.joml.Vector3i vector)`
  Gets a vector with components that match the provided JOML `Vector3i`.
  `static @NotNull Vector`
  Vector.`fromJOML(@NotNull org.joml.Vector3ic vector)`
  Gets a vector with components that match the provided JOML `Vector3ic`.
  `@NotNull Vector`
  BoundingBox.`getCenter()`
  Gets the center of the bounding box.
  `@NotNull Vector`
  Vector.`getCrossProduct(@NotNull Vector o)`
  返回一个新的向量,其坐标为本向量与另一个向量的叉积.
  `@NotNull Vector`
  RayTraceResult.`getHitPosition()`
  获取命中的精确位置.
  `@NotNull Vector`
  BoundingBox.`getMax()`
  Gets the maximum corner as vector.
  `static @NotNull Vector`
  Vector.`getMaximum(@NotNull Vector v1, @NotNull Vector v2)`
  获取两个向量坐标中更大的那些坐标组成的新向量.
  `@NotNull Vector`
  Vector.`getMidpoint(@NotNull Vector other)`
  获取一个新的向量,它的值为本向量和另一个向量间的连线的中点.
  `@NotNull Vector`
  BoundingBox.`getMin()`
  Gets the minimum corner as vector.
  `static @NotNull Vector`
  Vector.`getMinimum(@NotNull Vector v1, @NotNull Vector v2)`
  获取两个向量坐标中更小的那些坐标组成的新向量.
  `static @NotNull Vector`
  Vector.`getRandom()`
  获取一个随机向量,其坐标值均为0到1之间(不含1).
  `@NotNull Vector`
  Vector.`midpoint(@NotNull Vector other)`
  设置本向量的坐标为两个向量连线的中点.
  `@NotNull Vector`
  Vector.`multiply(double m)`
  向量的数乘,将向量在所有轴上扩展某个倍数.
  `@NotNull Vector`
  Vector.`multiply(float m)`
  向量的数乘,将向量在所有轴上扩展某个倍数.
  `@NotNull Vector`
  Vector.`multiply(int m)`
  向量的数乘,将向量在所有轴上扩展某个倍数.
  `@NotNull Vector`
  Vector.`multiply(@NotNull Vector vec)`
  将本向量的坐标乘上另一个向量的坐标.
  `@NotNull Vector`
  Vector.`normalize()`
  将本向量转化为单位向量(模为1的向量).
  `@NotNull Vector`
  Vector.`rotateAroundAxis(@NotNull Vector axis, double angle)`
  Rotates the vector around a given arbitrary axis in 3 dimensional space.
  `@NotNull Vector`
  Vector.`rotateAroundNonUnitAxis(@NotNull Vector axis, double angle)`
  Rotates the vector around a given arbitrary axis in 3 dimensional space.
  `@NotNull Vector`
  Vector.`rotateAroundX(double angle)`
  Rotates the vector around the x axis.
  `@NotNull Vector`
  Vector.`rotateAroundY(double angle)`
  Rotates the vector around the y axis.
  `@NotNull Vector`
  Vector.`rotateAroundZ(double angle)`
  Rotates the vector around the z axis
  `@NotNull Vector`
  Vector.`setX(double x)`
  设置X坐标.
  `@NotNull Vector`
  Vector.`setX(float x)`
  设置X坐标.
  `@NotNull Vector`
  Vector.`setX(int x)`
  设置X坐标.
  `@NotNull Vector`
  Vector.`setY(double y)`
  设置Y坐标.
  `@NotNull Vector`
  Vector.`setY(float y)`
  设置Y坐标.
  `@NotNull Vector`
  Vector.`setY(int y)`
  设置Y坐标.
  `@NotNull Vector`
  Vector.`setZ(double z)`
  设置Z坐标.
  `@NotNull Vector`
  Vector.`setZ(float z)`
  设置Z坐标.
  `@NotNull Vector`
  Vector.`setZ(int z)`
  设置Z坐标.
  `@NotNull Vector`
  Vector.`subtract(@NotNull Vector vec)`
  从本向量的坐标中减去另一个向量的坐标.
  `@NotNull Vector`
  Vector.`zero()`
  将本向量设为原点向量.
  参数类型为Vector的org.bukkit.util中的方法
  修饰符和类型
  方法
  说明
  `@NotNull Vector`
  Vector.`add(@NotNull Vector vec)`
  将本向量的坐标加上另一个向量的坐标.
  `float`
  Vector.`angle(@NotNull Vector other)`
  获取本向量与另一个向量的夹角,用弧度表示.
  `boolean`
  BoundingBox.`contains(@NotNull Vector position)`
  Checks if this bounding box contains the specified position.
  `boolean`
  BoundingBox.`contains(@NotNull Vector min, @NotNull Vector max)`
  Checks if this bounding box fully contains the bounding box that is defined by the given corners.
  `@NotNull Vector`
  Vector.`copy(@NotNull Vector vec)`
  将本向量的坐标全部设为另一个向量的坐标.
  `@NotNull Vector`
  Vector.`crossProduct(@NotNull Vector o)`
  将本向量的坐标设为两个向量的叉积.
  `double`
  Vector.`distance(@NotNull Vector o)`
  获取本向量与与另一个向量之间的距离.
  `double`
  Vector.`distanceSquared(@NotNull Vector o)`
  获取本向量与与另一个向量之间的距离的平方.
  `@NotNull Vector`
  Vector.`divide(@NotNull Vector vec)`
  将本向量的坐标除以另一个向量的坐标.
  `double`
  Vector.`dot(@NotNull Vector other)`
  计算本向量与另一个向量的点积,定义为x1*x2+y1*y2+z1*z2.
  `@NotNull BoundingBox`
  BoundingBox.`expand(@NotNull Vector expansion)`
  Expands this bounding box uniformly by the given values in both positive and negative directions.
  `@NotNull BoundingBox`
  BoundingBox.`expand(@NotNull Vector direction, double expansion)`
  Expands this bounding box in the specified direction.
  `@NotNull BoundingBox`
  BoundingBox.`expandDirectional(@NotNull Vector direction)`
  Expands this bounding box in the specified direction.
  `@NotNull Vector`
  Vector.`getCrossProduct(@NotNull Vector o)`
  返回一个新的向量,其坐标为本向量与另一个向量的叉积.
  `static @NotNull Vector`
  Vector.`getMaximum(@NotNull Vector v1, @NotNull Vector v2)`
  获取两个向量坐标中更大的那些坐标组成的新向量.
  `@NotNull Vector`
  Vector.`getMidpoint(@NotNull Vector other)`
  获取一个新的向量,它的值为本向量和另一个向量间的连线的中点.
  `static @NotNull Vector`
  Vector.`getMinimum(@NotNull Vector v1, @NotNull Vector v2)`
  获取两个向量坐标中更小的那些坐标组成的新向量.
  `boolean`
  Vector.`isInAABB(@NotNull Vector min, @NotNull Vector max)`
  判断本向量是否在一个AABB包围盒中.
  `boolean`
  Vector.`isInSphere(@NotNull Vector origin, double radius)`
  判断本向量是否在一个球形空间中.
  `@NotNull Vector`
  Vector.`midpoint(@NotNull Vector other)`
  设置本向量的坐标为两个向量连线的中点.
  `@NotNull Vector`
  Vector.`multiply(@NotNull Vector vec)`
  将本向量的坐标乘上另一个向量的坐标.
  `static @NotNull BoundingBox`
  BoundingBox.`of(@NotNull Vector center, double x, double y, double z)`
  Creates a new bounding box using the given center and extents.
  `static @NotNull BoundingBox`
  BoundingBox.`of(@NotNull Vector corner1, @NotNull Vector corner2)`
  Creates a new bounding box using the coordinates of the given vectors as corners.
  `boolean`
  BoundingBox.`overlaps(@NotNull Vector min, @NotNull Vector max)`
  Checks if this bounding box overlaps with the bounding box that is defined by the given corners.
  `@Nullable RayTraceResult`
  BoundingBox.`rayTrace(@NotNull Vector start, @NotNull Vector direction, double maxDistance)`
  Calculates the intersection of this bounding box with the specified line segment.
  `@NotNull Vector`
  Vector.`rotateAroundAxis(@NotNull Vector axis, double angle)`
  Rotates the vector around a given arbitrary axis in 3 dimensional space.
  `@NotNull Vector`
  Vector.`rotateAroundNonUnitAxis(@NotNull Vector axis, double angle)`
  Rotates the vector around a given arbitrary axis in 3 dimensional space.
  `@NotNull BoundingBox`
  BoundingBox.`shift(@NotNull Vector shift)`
  Shifts this bounding box by the given amounts.
  `@NotNull Vector`
  Vector.`subtract(@NotNull Vector vec)`
  从本向量的坐标中减去另一个向量的坐标.
  `@NotNull BoundingBox`
  BoundingBox.`union(@NotNull Vector position)`
  Expands this bounding box to contain (or border) the specified position.
  参数类型为Vector的org.bukkit.util中的构造器
  限定符
  构造器
  说明
  ``
  `BlockIterator(@NotNull World world, @NotNull Vector start, @NotNull Vector direction, double yOffset, int maxDistance)`
  BlockIterator的构造函数.
  ``
  `BlockVector(@NotNull Vector vec)`
  使用另一个向量来创建向量.
  ``
  `RayTraceResult(@NotNull Vector hitPosition)`
  创建一个射线跟踪器结果.
  ``
  `RayTraceResult(@NotNull Vector hitPosition, @Nullable BlockFace hitBlockFace)`
  创建一个射线跟踪器结果.
  ``
  `RayTraceResult(@NotNull Vector hitPosition, @Nullable Block hitBlock, @Nullable BlockFace hitBlockFace)`
  创建一个射线跟踪器结果.
  ``
  `RayTraceResult(@NotNull Vector hitPosition, @Nullable Entity hitEntity)`
  创建一个射线跟踪器结果.
  ``
  `RayTraceResult(@NotNull Vector hitPosition, @Nullable Entity hitEntity, @Nullable BlockFace hitBlockFace)`
  创建一个射线跟踪器结果.