Skip to content

事件

CarryYou 提供了三个事件,都在 carryyou.api.events 包里。它们都是标准的 Bukkit 事件,用 @EventHandler 监听即可,并且都实现了 Cancellable

三个事件都提供这两个方法:

java
Entity getCarrier(); // 抱人者
Entity getCarried(); // 被抱者

PlayerCarryEvent - 抱起事件

java
package carryyou.api.events;

public class PlayerCarryEvent extends Event implements Cancellable;

在实体被抱起之前触发(也就是 carry() 里真正骑乘之前)。

  • 取消后:这次抱起源码会直接返回失败,实体不会被抱起来
  • 注意:插件内部的权限、冷却、世界、实体黑名单等检查都发生在这个事件之前,所以取消事件没法放行那些被拦截的抱举,只能用来阻止本可以成功的抱举

PlayerDropEvent - 丢出事件

java
package carryyou.api.events;

public class PlayerDropEvent extends Event implements Cancellable;

在实体被丢出之前触发。

  • 取消后:目标会继续被抱着,不会被丢出去
  • 只有当 drop()callEvent 参数为 true 时才会触发;玩家挣脱(PlayerBreakEvent)走的是静默丢出,不会触发本事件

PlayerBreakEvent - 挣脱事件

java
package carryyou.api.events;

public class PlayerBreakEvent extends Event implements Cancellable;

在被抱的玩家连续点击、成功挣脱的那一刻触发(也就是挣脱进度条满、真正被丢下之前)。

  • 取消后:这次挣脱失败,玩家继续被抱着(但可以继续点,下次进度条满还会再触发)
  • PlayerDropEvent 的区别:本事件只在「被抱的玩家自己挣脱」时触发,抱人者主动丢出不会触发本事件