DynmapCommonAPIListener

基本信息

属性 值
类 org.dynmap.DynmapCommonAPIListener(org/dynmap/DynmapCommonAPIListener.java)
性质 public abstract class(DynmapCommonAPIListener.java:11)
唯一抽象方法 apiEnabled(DynmapCommonAPI api)(DynmapCommonAPIListener.java:17)
注册入口 DynmapCommonAPIListener.register(listener)(DynmapCommonAPIListener.java:49)

功能

外部 mod 接入本 mod 的唯一推荐途径:继承本类并调用静态 register,在 apiEnabled 回调中拿到 DynmapCommonAPI 实例。

回调生命周期:

回调 是否必须实现 源码行
apiEnabled(DynmapCommonAPI) 是(abstract) DynmapCommonAPIListener.java:17
apiDisabled(DynmapCommonAPI) 否(有默认空实现) DynmapCommonAPIListener.java:23
apiListenerAdded() 否(有默认空实现) DynmapCommonAPIListener.java:28

apiListenerAdded 在监听器加入时即触发,早于 API 可用;本 mod 自身的 DynmapMod.APICallback 正是利用这一点在 apiListenerAdded 里启动插件(DynmapMod.java:51-55,其中 DynmapMod.java:52-54 为 if(plugin == null) { plugin = proxy.startServer(); })。

聊天事件同样经本类分发:webChatEvent(source, name, message)(DynmapCommonAPIListener.java:37)与静态触发器 fireWebChatEvent(DynmapCommonAPIListener.java:90)。

静态方法

方法 源码行 说明
register(DynmapCommonAPIListener) DynmapCommonAPIListener.java:49 注册监听器
unregister(DynmapCommonAPIListener) DynmapCommonAPIListener.java:65 注销
apiInitialized(DynmapCommonAPI) DynmapCommonAPIListener.java:69 广播 API 就绪
apiTerminated() DynmapCommonAPIListener.java:81 广播 API 终止
fireWebChatEvent(source, name, message) DynmapCommonAPIListener.java:90 触发网页聊天事件

本 mod 内的三个注册方

全部在 DynmapMod 中注册,均为条件注册:

监听器 注册条件 源码行
DynmapMod.APICallback 非 MCPC 时在 serverStarted 注册(DynmapMod.java:130);MCPC 时在 postInit 注册(DynmapMod.java:118) DynmapMod.java:130、:118
ForgeChunkLoaderMarkers GwmConfig.enableChunkLoadingMarkers DynmapMod.java:136-139(注册在 :137)
ServerUtilitiesClaimedChunksMarkers GwmConfig.enableServerUtilitiesClaimsMarkers 且 Loader.isModLoaded("serverutilities") DynmapMod.java:141-143(注册在 :142)

APICallback 与后两者的差别是注册时机:前者必须尽早注册以启动插件,后两者是可选功能。

ForgeChunkLoaderMarkers 额外在注册后立即刷新一次标记:DynmapMod.java:138 ForgeChunkLoaderMarkers.updateMarkers();。

数值

数值名 值
抽象方法数 1
可选回调数 2
静态分发方法数 5
本 mod 内注册方数 3

交互

触发 行为
register() 后 立即回调 apiListenerAdded()
核心就绪 广播 apiEnabled(api) 给全部监听器
服务端停止 DynmapPlugin.onDisable(DynmapPlugin.java:1488)调用 DynmapCommonAPIListener.apiTerminated()

相关条目