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() |
相关条目
- DynmapCommonAPI -
apiEnabled回调交付的接口 - 区块加载标记 - 条件注册方之一
- ServerUtilities 认领标记 - 条件注册方之一