跳到主要内容

事件

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 生成之前插入一段回调函数。