- 版权类型
- 原创
- 版权链接
- #
- 前置组件
- DebugShape-Protocol https://www.minebbs.com/resources/debugshape-protocol.16859/
- 适配版本(基岩)
- 全版本
[MD]
# MeowFloatingText 悬浮字插件
基于 DebugShape-Protocol API 的悬浮字插件,使用 TextShape 实现一个完整文本一个对象的高效渲染。
## 功能特性
- 使用 TextShape API,一个完整文本一个对象(非每字一个框)
- 支持 Minecraft 颜色代码(§ 代码)
- 支持多行文本
- 持久化存储,服务器重启自动恢复
- 兼容旧格式配置(staticTexts / dynamicTexts)
- 提供表单 UI 和命令行两种管理方式
- 提供 API 供其他插件调用
## 命令
| 命令 | 别名 | 权限 | 说明 |
|------|------|------|------|
| `/mft` | `/meowft` | GameMasters | 打开主菜单 |
| `/mftcreate` | - | GameMasters | 在当前位置创建悬浮字 |
| `/mftlist` | - | GameMasters | 列出所有悬浮字 |
| `/mftreload` | - | GameMasters | 重新加载所有悬浮字 |
| `/mftdelete <名称>` | - | GameMasters | 删除指定悬浮字 |
| `/mfttp <名称>` | - | GameMasters | 传送到指定悬浮字 |
## 配置文件
配置文件路径: `./Meowdata/MeowFloatingText/floating_texts.json`
### 新格式(推荐)
```json
{
"texts": [
{
"name": "spawn_welcome",
"x": 100.5,
"y": 64.0,
"z": -200.5,
"dimId": 0,
"enabled": true,
"lineSpacing": 0.3,
"lines": [
{
"text": "§l§b欢迎来到服务器",
"colorMode": "custom",
"color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 },
"scale": 1.0
},
{
"text": "§7当前在线: §e%online%",
"colorMode": "custom",
"color": { "r": 1.0, "g": 1.0, "b": 1.0, "a": 1.0 },
"scale": 1.0
}
]
}
],
"staticTexts": [],
"dynamicTexts": []
}
```
### 配置字段说明
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `name` | string | 是 | 悬浮字唯一标识名称 |
| `x` | number | 是 | X 坐标 |
| `y` | number | 是 | Y 坐标 |
| `z` | number | 是 | Z 坐标 |
| `dimId` | number | 否 | 维度 ID(0=主世界, 1=下界, 2=末地),默认 0 |
| `enabled` | boolean | 否 | 是否启用,默认 true |
| `lineSpacing` | number | 否 | 行间距,默认 0.3 |
| `lines` | array | 是 | 文本行数组 |
### lines 数组元素字段
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `text` | string | 是 | 文本内容,支持 § 颜色代码 |
| `colorMode` | string | 否 | 颜色模式 |
| `color` | object | 否 | RGBA 颜色值(r, g, b, a 范围 0.0-1.0) |
| `scale` | number | 否 | 文本缩放比例,默认 1.0 |
### 旧格式兼容
插件兼容以下旧格式配置:
```json
{
"staticTexts": [
{
"pos": { "x": 100, "y": 64, "z": -200, "dimid": 0 },
"text": "§a静态悬浮字"
}
],
"dynamicTexts": [
{
"pos": { "x": 100, "y": 65, "z": -200, "dimid": 0 },
"text": "§b动态悬浮字",
"updateRate": 1000
}
]
}
```
> 注意:旧格式悬浮字仅在 `texts` 数组为空时加载。
## 颜色代码
支持 Minecraft 标准颜色代码:
| 代码 | 颜色 | 代码 | 颜色 |
|------|------|------|------|
| `§0` | 黑色 | `§a` | 亮绿 |
| `§1` | 深蓝 | `§b` | 亮青 |
| `§2` | 深绿 | `§c` | 亮红 |
| `§3` | 深青 | `§d` | 亮粉 |
| `§4` | 深红 | `§e` | 黄色 |
| `§5` | 深紫 | `§f` | 白色 |
| `§6` | 金色 | `§l` | 粗体 |
| `§7` | 灰色 | `§o` | 斜体 |
| `§8` | 深灰 | `§n` | 下划线 |
| `§9` | 深蓝 | `§r` | 重置 |
## API
插件导出以下 API 供其他插件调用:
```javascript
const MeowFloatingText = ll.imports("MeowFloatingText");
// 检查 API 是否可用
if (MeowFloatingText && MeowFloatingText.isAvailable()) {
// 创建悬浮字
const success = MeowFloatingText.create({
name: "myText",
x: 100, y: 64, z: -200,
dimId: 0,
text: "§l§b欢迎"
});
// 删除悬浮字
MeowFloatingText.remove("myText");
// 获取所有悬浮字名称
const names = MeowFloatingText.getAllNames();
// 获取悬浮字数据
const data = MeowFloatingText.getData("myText");
// 重新加载所有悬浮字
MeowFloatingText.reload();
}
```
### API 方法
| 方法 | 参数 | 返回值 | 说明 |
|------|------|--------|------|
| `create(data)` | Object | boolean | 创建悬浮字 |
| `remove(name)` | string | void | 删除悬浮字 |
| `reload()` | - | number | 重载所有悬浮字,返回加载数量 |
| `getAllNames()` | - | string[] | 获取所有悬浮字名称 |
| `getData(name)` | string | Object\|null | 获取悬浮字数据 |
| `isAvailable()` | - | boolean | 检查 API 是否可用 |
### create(data) 参数
```javascript
{
name: string, // 必填,悬浮字名称
x: number, // 必填,X 坐标
y: number, // 必填,Y 坐标
z: number, // 必填,Z 坐标
dimId: number, // 可选,维度 ID,默认 0
text: string, // 可选,文本内容
lines: array, // 可选,多行文本数组
lineSpacing: number // 可选,行间距,默认 0.3
}
```
## 依赖
- DebugShape-Protocol 插件
- DebugShapeAPI 模块 (`./src/DebugShapeAPI`)
## 表单功能
通过 `/mft` 命令打开主菜单,提供以下功能:
1. **创建悬浮字** - 在当前位置创建新悬浮字
2. **悬浮字列表** - 查看/管理所有悬浮字
3. **从旧配置导入** - 从 `plugins/config.json` 导入旧格式配置
4. **重载所有悬浮字** - 重新加载配置文件
5. **帮助** - 查看命令说明
## 技术实现
- 使用 `DebugShapeAPI.ShapeFactory.createText()` 创建 TextShape 对象
- 悬浮字实例存储在 `Map<name, {shape, data}>` 中
- 玩家加入时自动发送所有悬浮字(延迟 2 秒)
- 插件卸载时自动清理所有悬浮字
## 作者
伊希娅
## 版本
v1.0.1
[/MD]