Mod进阶教程2 监听与处理 - WorldBoxOpenMods/ModLoader GitHub Wiki

监听与处理

在NeoModLoader中引入了一个新的概念:监听与处理。这个概念的引入是为了解决部分常用事件的HarmonyPatch的冲突问题 以及一般的HarmonyPrefix、HarmonyPostfix带来的性能问题。

概览

在NeoModLoader.General.Event中, 提供了AbstractListener和AbstractHandler, 分别做为监听和处理的基类。

Listen和Handle的关系是一对多的关系,一个监听可以有多个处理,一个处理只能属于一个监听。

Listener会通过HarmonyTranspiler来注入依次调用各个处理器的代码。

具体的可以参考此处的代码:NeoModLoader.General.Event/CityCreateListener.cs

NeoModLoader提供的Handler都是抽象类,需要自行继承并实现抽象方法,然后通过对应监听器的RegisterHandler静态函数注册到监听器中。

NeoModLoader提供的Listener和Handler

Listener Handler 说明
CityCreateListener CityCreateHandler 城市创建
ClanCreateListener ClanCreateHandler 家族创建
CultureCreateListener CultureCreateHandler 文化创建
KingdomSetupListener KingdomSetupHandler 国家创建
PlotStartListener PlotStartHandler 事件开始
WarStartListener WarStartHandler 战争开始
WarEndListener WarEndHandler 战争结束

更多的监听器

  1. NeoModLoader提供了一个基类AbstractListener,可以通过继承这个类来实现自己的监听器。
  2. 在ISSUE中提出你的需求,会考虑将其加入到NeoModLoader中。
  3. 在PR中提出你的监听器,经过Review后将其加入到NeoModLoader中。