事件
Adyeshach 的事件可分为 Bukkit 事件和内部事件两类,具体如下表所示。
- 包含
[B]
表示 Bukkit 事件,是可通过@EventHandler
或@SubscribeEvent
监听。 - 包含
[A]
表示内部事件,只能通过 Adyeshach 中的EventBus
接口监听。 - 包含
[C]
表示该方法可以被取消。
事件列表
[B] AdyeshachPlayerJoinEvent
当玩家首次发送心跳包时。
Adyeshach 源码
@SubscribeEvent
fun onLateJoin(e: AdyeshachPlayerJoinEvent) {
if (AdyeshachSettings.spawnTrigger == SpawnTrigger.KEEP_ALIVE) {
Adyeshach.api().setupEntityManager(e.player)
}
}
[BC] AdyeshachEntityCreateEvent
通过管理器创建单位时。
Adyeshach 源码(删改)
@SubscribeEvent
fun onCreate(e: AdyeshachEntityCreateEvent) {
if (e.entity is EntityFireball) {
e.location.yaw = 0f
e.location.pitch = 0f
}
}
[BC] AdyeshachEntityRemoveEvent
通过管理器移除单位时。
Adyeshach 源码
@SubscribeEvent
private fun onRemove(e: AdyeshachEntityRemoveEvent) {
data[e.entity.uniqueId] = null
}
[B] AdyeshachEntitySpawnEvent
当单位生成时。
[B] AdyeshachEntityDestroyEvent
当单位销毁时。
[BC] AdyeshachEntityVisibleEvent
当单位对玩家的可见状态改变时。
Adyeshach 源码(删改)
@SubscribeEvent
fun onVisible(e: AdyeshachEntityVisibleEvent) {
if (e.visible && !checkView(e.entity, e.viewer)) {
e.isCancelled = true
}
}
[BC] AdyeshachEntityInteractEvent
当玩家右键点击单位时。
[BC] AdyeshachEntityDamageEvent
当玩家左键攻击单位时。
[BC] AdyeshachControllerAddEvent
当单位添加控制器时。
[BC] AdyeshachControllerRemoveEvent
当单位移除控制器时。
[BC] AdyeshachEntityVehicleEnterEvent
当单位进入载具时。
[BC] AdyeshachEntityVehicleLeaveEvent
当单位离开载具时。
[B] AdyeshachGameProfileGenerateEvent
当玩家类型单位的玩家信息生成时。
[BC] AdyeshachTagUpdateEvent
当单位的标签更新时。
[BC] AdyeshachPersistentTagUpdateEvent
当单位的持久化标签更新时。
[BC] AdyeshachItemHookEvent
物品解析式挂钩事件。
第三方插件
@SubscribeEvent
fun onHook(e: AdyeshachItemHookEvent) {
if (e.namespace == "myplugin") {
e.itemStack = MyPlugin.getItem(e.source)
}
}
[AC] prepareSpawn()
在实体生成之前插入一段回调函数。
Adyeshach 源码(删改)
Adyeshach.api().getEventBus().prepareSpawn { e ->
!e.entity.showModelEngine(e.viewer)
}
提示
如果在回调函数中返回 false
则会取消(拦截)该事件。
[AC] prepareDestroy()
在实体销毁之前插入一段回调函数。
Adyeshach 源码(删改)
Adyeshach.api().getEventBus().prepareSpawn { e ->
!e.entity.hideModelEngine(e.viewer)
}
[AC] prepareTick()
在 onTick()
方法之前插入一段回调函数。
[A] prepareMove()
在移动状态变更之后插入一段回调函数。
[AC] prepareTeleport()
在 teleport()
方法之前插入一段回调函数。
[AC] prepareVelocity()
在 setVelocity()
方法之前插入一段回调函数。
[AC] prepareMetaUpdate()
在元数据更新之前插入一段回调函数。
[AC] prepareMaskedMetaGenerate()
在 MetaMasked
生成之前插入一段回调函数。
[AC] prepareNaturalMetaGenerate()
在 MetaNatural
生成之前插入一段回调函数。