[MD]
Phantom 是一个面向 BDS / LeviLamina 的悬浮字插件。插件参考了 DecentHolograms 的管理思路,但针对基岩版重新实现:悬浮字通过 DebugShape 渲染,不会在服务端世界中生成真实实体。
相比实体悬浮字,Phantom 的目标是更轻量、更适合展示公告、传送点说明、菜单提示、排行榜说明等固定或动态文本内容。
## 主要功能
- 支持多行悬浮字
- 支持 Minecraft 颜色符号
- 每个悬浮字仅发送一个 TEXT shape,多行文本通过换行合并显示
- 按玩家距离动态显示 / 隐藏
- 按玩家所在维度显示 / 隐藏
- 支持自定义维度 ID
- 支持动态悬浮字,每行可配置内容池和轮播间隔
- 支持玩家变量解析
- 数据持久化保存
- 支持 `/phantom`、`/hologram`、`/holo` 三个指令入口
- 支持基岩版表单管理
- 支持中文 / 英文 I18n 语言文件
## 动态文本功能
Phantom 支持按行设置动态内容,例如一行文字可以在多个内容之间轮播,也可以解析玩家相关变量。
内置变量包括:
```text
{player} 玩家名
{online} 在线人数
{dimension} 玩家当前维度 ID
{hologram} 悬浮字名称
{line} 当前行号
{contentIndex} 当前内容池索引
{x} {y} {z} 玩家整数坐标
```
例如可以做出:
```text
欢迎 {player}
当前在线人数:{online}
你的位置:{x} {y} {z}
```
## 表单管理
玩家可以通过 `/phantom` 或 `/phantom gui` 打开表单进行管理。
表单支持:
- 创建悬浮字
- 查看悬浮字列表
- 编辑文本行
- 设置动态行
- 移动悬浮字到玩家附近
- 启用 / 禁用悬浮字
- 删除悬浮字
## 常用指令
权限:`GameDirectors`
```text
/phantom
/phantom gui
/phantom list
/phantom reload
/phantom create <name> <text>
/phantom remove <name>
/phantom movehere <name>
/phantom enable <name>
/phantom disable <name>
/phantom append <name> <text>
/phantom setline <name> <index> <text>
/phantom dynamicline <name> <index> <intervalMs> <parseVariables> <text>
/phantom removeline <name> <index>
```
说明:
- `/phantom` 和 `/phantom gui` 只能由玩家执行,用于打开表单
- `/phantom create <name> <text>` 会在玩家头顶附近创建悬浮字
- 行号从 `1` 开始
- 动态行内容可以用 `|` 分隔多个变体,例如 `A|B|C`
- `parseVariables` 使用 `0` 或 `1`
## 配置文件
配置路径:
```text
plugins/Phantom/config/config.json
```
默认配置示例:
```json
{
"version": 1,
"holograms": true,
"forms": true,
"viewDistance": 48.0,
"lineSpacing": 0.27,
"refreshIntervalTicks": 10,
"dynamicRefreshIntervalTicks": 10,
"language": "zh_CN"
}
```
悬浮字数据保存路径:
```text
plugins/Phantom/data/holograms.json
```
## 依赖
- LeviLamina
## 适用场景
- 大厅公告
- 传送点说明
- 商店提示
- 玩法介绍
- 在线人数展示
- 玩家个性化提示
- 自定义维度中的场景标识
## 下载与安装
将插件文件放入服务器插件目录后启动服务器即可。首次加载时会自动生成配置文件、数据文件和默认语言文件。
如果遇到问题,欢迎在帖子下反馈。后续会根据使用情况继续完善功能和兼容性。
## 开源信息
本项目基于 GNU Lesser General Public License v3.0(LGPL-3.0)开源
[/MD]