PlayerPortalEvent

PlayerPortalEvent

继承关系

=>  org.bukkit.event.Event

    =>  org.bukkit.event.player.PlayerEvent

        =>  org.bukkit.event.player.PlayerMoveEvent

            =>  org.bukkit.event.player.PlayerTeleportEvent

                =>  org.bukkit.event.player.PlayerPortalEvent

类描述

Called when a player is about to teleport because it is in contact with a

portal which will generate an exit portal.

For other entities see {@link org.bukkit.event.entity.EntityPortalEvent}

当玩家在传送门内将要传送,且该传送门的出口处将要生成另一个传送门时触发。

如有玩家之外的实体处于相同情况下,可使用 EntityPortalEvent 监听。

译注:所谓“生成另一个传送门”,字面意思指玩家在主世界进入下界且下界的对应位置没有传送门,反之亦然。但是本事件实际上并非是在生成新传送门时触发的。每次玩家通过下界传送门、末地传送门,都会触发本事件。触发时,不一定在出口生成一座新传送门,也可能使用已有的传送门。

方法列表

setSearchRadius

方法声明: public void setSearchRadius(int searchRadius)

方法签名: (I)V

Set the Block radius to search in for available portals.

@param searchRadius the radius in which to search for a portal from the

location

该方法用于设置搜寻可用传送门时扫描的半径。

@param searchRadius 搜寻可用传送门时扫描的半径。

译注:对末地传送门而言,参见 Minecraft Wiki 中的相关页面 https://minecraft.fandom.com/wiki/End_portal#Behavior 可知,末地黑曜石平台位置是固定的,中心点坐标永远是 (100, 48, 0) 。无论从哪个末地传送门进入末地,玩家都会以面朝西方的姿态出现在较此中心点高一格的位置,即 (100,49,0) 。因此不需要对传送门坐标进行“搜寻”。

对下界传送门而言,参见 Minecraft Wiki 中的相关页面 https://minecraft.fandom.com/wiki/Nether_portal#Portal_search 可知,玩家踏入下界传送门以后,,会将玩家 xz 轴坐标除以八,然后以此为中心搜寻一定半径内已有的传送门,如有,则将玩家传送到那里。如没有,则另取位置新建传送门。本方法即用于设置搜寻的半径。

getSearchRadius

方法声明: public int getSearchRadius()

方法签名: ()I

Gets the search radius value for finding an available portal.

@return the currently set search radius

该方法用于获取搜寻可用传送门时扫描的半径。

@return 搜寻可用传送门时扫描的半径。

译注:对末地传送门而言,参见 Minecraft Wiki 中的相关页面 https://minecraft.fandom.com/wiki/End_portal#Behavior 可知,末地黑曜石平台位置是固定的,中心点坐标永远是 (100, 48, 0) 。无论从哪个末地传送门进入末地,玩家都会以面朝西方的姿态出现在较此中心点高一格的位置,即 (100,49,0) 。因此不需要对传送门坐标进行“搜寻”。

对下界传送门而言,参见 Minecraft Wiki 中的相关页面 https://minecraft.fandom.com/wiki/Nether_portal#Portal_search 可知,玩家踏入下界传送门以后,会将玩家 xz 轴坐标除以八,然后以此为中心搜寻一定半径内已有的传送门,如有,则将玩家传送到那里。如没有,则另取位置新建传送门。本方法即用于获取搜寻的半径。

getCanCreatePortal

方法声明: public boolean getCanCreatePortal()

方法签名: ()Z

Returns whether the server will attempt to create a destination portal or

not.

@return whether there should create be a destination portal created

该方法用于获取服务器会否尝试在出口处新建一个传送门。

@return 服务器会否尝试在出口处新建一个传送门。

译注:除非有插件开发者调用本事件 setCanCreatePortal 方法修改,否则本方法一定会返回 true 。即使已经搜寻到了旧有的下界传送门、即使是传送到末地的黑曜石平台,也返回 true

setCanCreatePortal

方法声明: public void setCanCreatePortal(boolean canCreatePortal)

方法签名: (Z)V

Sets whether the server should attempt to create a destination portal or

not.

@param canCreatePortal Sets whether there should be a destination portal

created

该方法用于设置服务器会否尝试在出口处新建一个传送门。

@param canCreatePortal 服务器会否尝试在出口处新建一个传送门。

setCreationRadius

方法声明: public void setCreationRadius(int creationRadius)

方法签名: (I)V

Sets the maximum radius the world is searched for a free space from the

given location.

If enough free space is found then the portal will be created there, if

not it will force create with air-space at the target location.

Does not apply to end portal target platforms which will always appear at

the target location.

@param creationRadius the radius in which to create a portal from the

location

该方法用于设置尝试创建新传送门时扫描的半径。

如果半径内可以找到一个符合条件的空间,那么就会生成传送门。如果不能找到,那么就将搜寻起点周围清空,创造出一片符合条件的空间,再生成传送门。

这一流程对末地黑曜石平台不适用。该平台永远生成在同一位置。

@param creationRadius 尝试创建新传送门时扫描的半径。

译注:对末地传送门而言,参见 Minecraft Wiki 中的相关页面 https://minecraft.fandom.com/wiki/End_portal#Behavior 可知,末地黑曜石平台位置是固定的,中心点坐标永远是 (100, 48, 0) 。无论从哪个末地传送门进入末地,玩家都会以面朝西方的姿态出现在较此中心点高一格的位置,即 (100,49,0) 。因此不需要寻找用于创建传送门的空间。

对下界传送门而言,参见 Minecraft Wiki 中的相关页面 https://minecraft.fandom.com/wiki/Nether_portal#Portal_search 可知,玩家踏入下界传送门以后,会将玩家 xz 轴坐标除以八,然后以此为中心搜寻一定半径内已有的传送门,如有,则将玩家传送到那里。如没有,则另取位置新建传送门。新建传送门的位置必须满足一定条件,见于 https://minecraft.fandom.com/wiki/Nether_portal#Portal_creation 页面。本方法即用于设置搜寻“传送门创建空间”( 3x4x4 空气和 3x1x4 固体方块地面)的半径,默认为 16 。在搜寻时,Y 轴坐标不论。即只要某片空间与中心点在 xOz 平面上投影的距离在半径内,则创建新传送门。

getCreationRadius

方法声明: public int getCreationRadius()

方法签名: ()I

Gets the maximum radius the world is searched for a free space from the

given location.

If enough free space is found then the portal will be created there, if

not it will force create with air-space at the target location.

Does not apply to end portal target platforms which will always appear at

the target location.

@return the currently set creation radius

该方法用于获取尝试创建新传送门时扫描的半径。

如果半径内可以找到一个符合条件的空间,那么就会生成传送门。如果不能找到,那么就将搜寻起点周围清空,创造出一片符合条件的空间,再生成传送门。

这一流程对末地黑曜石平台不适用。该平台永远生成在同一位置。

@return 尝试创建新传送门时扫描的半径。

译注:对末地传送门而言,参见 Minecraft Wiki 中的相关页面 https://minecraft.fandom.com/wiki/End_portal#Behavior 可知,末地黑曜石平台位置是固定的,中心点坐标永远是 (100, 48, 0) 。无论从哪个末地传送门进入末地,玩家都会以面朝西方的姿态出现在较此中心点高一格的位置,即 (100,49,0) 。因此不需要寻找用于创建传送门的空间。

对下界传送门而言,参见 Minecraft Wiki 中的相关页面 https://minecraft.fandom.com/wiki/Nether_portal#Portal_search 可知,玩家踏入下界传送门以后,会将玩家 xz 轴坐标除以八,然后以此为中心搜寻一定半径内已有的传送门,如有,则将玩家传送到那里。如没有,则另取位置新建传送门。新建传送门的位置必须满足一定条件,见于 https://minecraft.fandom.com/wiki/Nether_portal#Portal_creation 页面。本方法即用于获取搜寻“传送门创建空间”( 3x4x4 空气和 3x1x4 固体方块地面)的半径,默认为 16 。在搜寻时,Y 轴坐标不论。即只要某片空间与中心点在 xOz 平面上投影的距离在半径内,则创建新传送门。

getHandlers

方法声明: public HandlerList getHandlers()

方法签名: ()Lorg/bukkit/event/HandlerList;

getHandlerList

方法声明: public static HandlerList getHandlerList()

方法签名: ()Lorg/bukkit/event/HandlerList;

Last updated