跳到主要内容

传送

实体可以通过teleportteleportAsync API 同步或异步地瞬间传送到特定位置。

性能

如果你预计要传送到未加载的区块,建议使用teleportAsync API, 因为它避免了同步加载区块,这会给服务器的主线程带来很大压力 - 影响整体性能。

entity.teleport(location); // 同步加载区块并传送实体

entity.teleportAsync(location).thenAccept(success -> { // 异步加载区块并传送实体
// 当传送完成时运行此代码
// Future在主线程上完成,所以在这里使用API是安全的

if (success) {
// 实体传送成功!
}
});
危险

永远不应该在主线程上调用teleportAsync Future.get()/.join(), 因为如果你要传送到的区块未加载,它一定会导致服务器死锁。

看向

lookAt API允许你让玩家看向某个位置或实体。

player.lookAt(
position,
LookAnchor.EYES // 玩家的眼睛将面向该位置
);

player.lookAt(
entity,
LookAnchor.EYES // 玩家的眼睛将面向该实体
LookAnchor.FEET // 玩家将面向该实体的脚部
);

传送标志

传送标志提供了一种在传送实体时可以自定义行为的方式。 这允许你做一些事情,比如使用相对标志传送玩家并能够保留乘客。

所有可用的传送标志都可以在TeleportFlag类中找到。

相对传送

相对传送玩家,防止在X、Y和Z轴上重置速度。

player.teleport(
location,
TeleportFlag.Relative.VELOCITY_X,
TeleportFlag.Relative.VELOCITY_Y,
TeleportFlag.Relative.VELOCITY_Z
);

保留乘客

使用RETAIN_PASSENGERS标志传送实体, 允许其乘客与实体一起传送。

entity.teleport(location, TeleportFlag.EntityState.RETAIN_PASSENGERS);