开发者 API
云全息内置完整的 DecentHolograms 2.10.1 核心,Java API 的套件名称与方法都和 DecentHolograms 相同(eu.decentsoftware.holograms.api),
并在 plugin.yml 声明了 provides: [DecentHolograms]。
所以:
- 已经支持 DecentHolograms 的插件,装在云全息上不用改任何东西。
- 新写的插件,照 DecentHolograms 的 API 写就好,同时支持两边。
加入依赖
编译时依赖 DecentHolograms 的 API(compileOnly / provided,不要打包进你的 jar)。
Gradle
repositories {
maven { url = 'https://jitpack.io' }
}
dependencies {
compileOnly 'com.github.decentsoftware-eu:decentholograms:2.10.1'
}
Maven
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.decentsoftware-eu</groupId>
<artifactId>decentholograms</artifactId>
<version>2.10.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
plugin.yml
softdepend: [DecentHolograms] # 必须要有全息插件才能运作的话,改成 depend: [DecentHolograms]
写 DecentHolograms 就好,不需要写 CloudHologram:云全息会以 DecentHolograms 的身份满足这个依赖,你的插件会在它之后载入。
使用前确认 API 已经启动:
import eu.decentsoftware.holograms.api.DecentHologramsAPI;
if (!DecentHologramsAPI.isRunning()) {
getLogger().warning("没有安装 DecentHolograms / CloudHologram,看板功能停用");
return;
}
DecentHologramsAPI.get() 在 API 还没启动时会抛出 IllegalStateException。
云全息新增的功能不在 API 包里
背景颜色 / 阴影(display)、简化 YAML 等是云全息自己的功能,DecentHolograms 的 API 包里没有对应的方法。
想让看板有背景,可以先用 API 建立看板,再请服主用 /clh style 设定,或让看板存档后在文件里加 display:。
重要观念
| 观念 | 说明 |
|---|---|
| 索引从 0 开始 | API 的页码、行号从 0 开始(指令是从 1 开始)。getHologramPage(hologram, 0) 是第 1 页。 |
| 不带页码 的方法 = 第 1 页 | 例如 DHAPI.setHologramLine(hologram, 2, "…") 改的是第 1 页的第 3 行。 |
| 名称规则 | 只能用 [a-zA-Z0-9_-]+,否则 createHologram 抛出 IllegalArgumentException。 |
| 存不存档 | createHologram(name, location) 默认不存档(重启就没了);要存进 holograms/ 请用带 saveToFile = true 的版本。 |
| API 看板不在指令列表里 | 用 DHAPI.createHologram 建立的看板不会出现在 /clh list,也不能用 /clh 指令修改,/clh reload 也不会删掉它。存档过的看板,下次开服会从文件载入成一般看板。 |
| 找看板 | DHAPI.getHologram(name) 找得到所有看板,包含文件载入的和 API 建立的。 |
推荐写法
- 每次开服由你的插件重建的看板(排行榜、商店标签……):用
saveToFile = false,在onEnable建立、onDisable删 除。 - 建一次就要永久保留的看板:先
DHAPI.getHologram(name),找不到才createHologram(..., true, ...),避免重启后同名冲突。
存档过的 API 看板在执行 /clh reload 时,控制台会出现一行一般讯息「跳过:已经有同名看板」(因为同名看板已经在内存里),看板本身不受影响。
DHAPI 常用方法
全部是 eu.decentsoftware.holograms.api.DHAPI 的静态方法。
建立与删除
| 方法 | 说明 |
|---|---|
createHologram(String name, Location location) | 建立空看板,不存档。 |
createHologram(String name, Location location, List<String> lines) | 建立并加入多行,不存档。 |
createHologram(String name, Location location, boolean saveToFile) | 指定是否存档。 |
createHologram(String name, Location location, boolean saveToFile, List<String> lines) | 指定是否存档并加入多行。 |
getHologram(String name) | 取得看板,找不到时回传 null。 |
moveHologram(String name, Location location) / moveHologram(Hologram, Location) | 移动看板(会存档)。 |
updateHologram(String name) | 强制所有观看者立刻刷新内容。 |
removeHologram(String name) | 删除看板,有存档的话连文件一起删除。 |
行
| 方法 | 说明 |
|---|---|
addHologramLine(Hologram, String content) | 在第 1 页最后加一行。 |
addHologramLine(Hologram, int pageIndex, String content) | 在指定页最后加一行。 |
addHologramLine(HologramPage, String content) | 在这一页最后加一行。 |
addHologramLine(Hologram / HologramPage, ItemStack 或 Material) | 加一个物品行(等于 #ICON:)。 |
insertHologramLine(Hologram, int lineIndex, String content) | 在第 1 页插入一行。 |
insertHologramLine(Hologram, int pageIndex, int lineIndex, String content) | 在指定页插入一行。 |
setHologramLine(Hologram, int lineIndex, String content) | 修改第 1 页某一行。 |
setHologramLine(Hologram, int pageIndex, int lineIndex, String content) | 修改指定页某一行。 |
setHologramLine(HologramLine line, String content) | 直接修改某一行。 |
setHologramLines(Hologram, List<String> lines) | 把第 1 页整个换成这些行(多的删掉、少的补上)。 |
setHologramLines(Hologram, int pageIndex, List<String> lines) | 同上,指定页。 |
removeHologramLine(Hologram, int lineIndex) | 删除第 1 页某一行。 |
removeHologramLine(Hologram, int pageIndex, int lineIndex) |