Skip to main content

事件接口

以下是本项目中定义的 NPC 事件(NpcEvent) 的详细说明,包括每种事件的用途和触发条件。


总结

事件名称触发条件是否可取消典型用途
CreateEventNPC 创建初始化、日志记录
JoinEventNPC 加入世界加载数据、绑定行为
DeathEventNPC 死亡自定义死亡逻辑、防止死亡
InteractEvent玩家与 NPC 交互对话、任务触发、UI 打开
DamageEventNPC 受到伤害控制伤害、无敌机制、反弹伤害
TickEvent每个游戏 Tick定期更新、AI 行为、状态维护

这些事件提供了一个完整的 NPC 生命周期监听机制,开发者可以通过监听并处理这些事件来实现复杂的 NPC 行为逻辑和互动功能。


NpcEvent.CreateEvent

触发时机

当一个 NPC 被创建时。

用途

用于监听 NPC 创建事件。可以在此事件中添加初始化逻辑或日志记录。

字段


NpcEvent.JoinEvent

触发时机

当一个 NPC 加入到服务器世界中时。

用途

用于监听 NPC 进入世界的事件,例如加载 NPC 数据、注册额外行为等。

字段


NpcEvent.DeathEvent

触发时机

当一个 NPC 死亡时(受到伤害导致生命值归零)。

用途

用于监听 NPC 死亡事件,可以取消死亡逻辑,或者执行自定义死亡行为(如掉落物品、播放音效等)。

字段

特性

实现了 ICancellableEvent 接口,可被取消:

  • 如果事件被取消,则不会真正死亡,并恢复实体生命值至 1.0F。

NpcEvent.InteractEvent

触发时机

当玩家与 NPC 交互时(如右键点击)。

用途

用于监听玩家与 NPC 的交互操作,例如打开对话框、触发任务等。

字段

该事件默认会阻止原版交互行为(通过 event.setCanceled(true)),防止玩家误操作原版实体行为。


NpcEvent.DamageEvent

触发时机

当 NPC 受到伤害时。

用途

用于监听 NPC 受伤事件,可以修改伤害值、阻止伤害,或执行其他响应逻辑(如无敌状态、反弹伤害等)。

字段

特性

实现了 ICancellableEvent 接口,可被取消:

  • 如果事件被取消,则不产生实际伤害。
  • 同时允许通过 setAmount(float amount) 修改最终伤害值。

NpcEvent.TickEvent

触发时机

每个游戏 Tick(即每一刻游戏时间)都会触发一次。

用途

用于监听 NPC 的持续行为更新,比如 AI 行为控制、定时逻辑、状态检查等。

字段

该事件适合用来实现周期性任务或状态更新,例如自动巡逻、定时对话、血量恢复等。