标记 API
基本信息
| 属性 | 值 |
|---|---|
| 接口 | org.dynmap.markers.MarkerAPI(markers/MarkerAPI.java,68 行) |
| 实现 | org.dynmap.markers.impl.MarkerAPIImpl(markers/impl/MarkerAPIImpl.java,3611 行) |
| 接口方法数 | 9 |
| 获取途径 | DynmapCommonAPI.getMarkerAPI()(DynmapCommonAPI.java:16) |
| 就绪检查 | DynmapCommonAPI.markerAPIInitialized()(DynmapCommonAPI.java:22) |
标记类型
markers/ 包下共 11 个接口,markers/impl/ 下共 9 个实现类:
| 接口 | 实现 | 用途 |
|---|---|---|
Marker |
MarkerImpl |
标记基类 |
GenericMarker |
MarkerImpl |
通用标记(点) |
MarkerSet |
MarkerSetImpl |
标记集 |
MarkerIcon |
MarkerIconImpl |
标记图标 |
AreaMarker |
AreaMarkerImpl |
矩形区域标记 |
PolyLineMarker |
PolyLineMarkerImpl |
折线标记 |
CircleMarker |
CircleMarkerImpl |
圆形标记 |
EnterExitMarker |
— | 出入口标记(接口) |
MarkerDescription |
— | 标记描述(接口) |
PlayerSet |
PlayerSetImpl |
玩家集合 |
markers/impl/ 下另有 MarkerSignManager(告示牌文本管理)。
接口方法
| 方法 | 源码行 | 说明 |
|---|---|---|
getMarkerSets() |
MarkerAPI.java:14 |
取全部标记集 |
getMarkerSet(String id) |
MarkerAPI.java:20 |
按 ID 查标记集,未找到返回 null |
createMarkerSet(id, lbl, iconlimit, persistent) |
MarkerAPI.java:29 |
建标记集,失败返回 null |
getMarkerIcons() |
MarkerAPI.java:34 |
取全部图标 |
getMarkerIcon(String id) |
MarkerAPI.java:40 |
按 ID 查图标 |
createMarkerIcon(id, label, marker_png) |
MarkerAPI.java:48 |
注册图标(读入 InputStream 并复制) |
getPlayerSets() |
MarkerAPI.java:52 |
取全部玩家集合 |
getPlayerSet(String id) |
MarkerAPI.java:58 |
按 ID 查玩家集合 |
createPlayerSet(id, symmetric, players, persistent) |
MarkerAPI.java:67 |
建玩家集合 |
ID 约束(源码 Javadoc 原文):
| 约束 | 位置 |
|---|---|
| 标记集 id “must be unique among marker set - limit to alphanumerics, periods, underscores” | MarkerAPI.java:23 |
| 图标 id “must be unique among marker icons - letters, numbers, periods, underscores only” | MarkerAPI.java:43 |
| 玩家集合 id “must be unique among player sets - letters, numbers, periods, underscores only” | MarkerAPI.java:61 |
createPlayerSet 的 symmetric 参数控制"集合内玩家能否互相看见"(MarkerAPI.java:62)。
指令与权限
标记的增删改通过 /dmarker 暴露,其白名单 MarkerAPIImpl.commands(MarkerAPIImpl.java:1280-1286)共 33 项,在 MarkerAPIImpl.java:1394 用 commands.contains(c) 拦截。每个分支独立调用 checkPlayerPermission,权限名形如 marker.add(MarkerAPIImpl.java:1434)、marker.delete(:1446)、marker.list(:1401)。
MarkerAPIImpl 还提供 Tab 补全数据:tabCompletions.put("add", markerArgs)(MarkerAPIImpl.java:576)、"delete"(:591)、"list"(:598)。
数值
| 数值名 | 值 |
|---|---|
MarkerAPI 接口方法数 |
9 |
markers/ 接口数 |
11 |
markers/impl/ 实现类数 |
9(含 MarkerSignManager,非 Marker 实现) |
/dmarker 白名单子命令数 |
33 |
| 内置图标数 | 85(见 内置标记图标) |
MarkerAPIImpl 行数 |
3611 |
交互
| 触发 | 行为 |
|---|---|
markerAPIInitialized() 返回 false |
标记系统尚未就绪,API 调用无意义 |
标记集 persistent: true |
标记集及其标记持久化到磁盘 |
| 网页端或指令创建标记 | 写入标记集,受 marker.* 权限约束 |
相关条目
- 内置标记图标 -
createMarkerIcon可用的 85 个内置图标 - DynmapCommonAPI -
getMarkerAPI()的来源 - /dmarker - 命令行接口
- 权限体系 -
marker.*权限配置