事件
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的区别:本事件只在「被抱的玩家自己挣脱」时触发,抱人者主动丢出不会触发本事件