# GhostBlocks 插件
- 一个创建幽灵方块的 Minecraft 插件——这些方块是可见的,但没有碰撞/体积。
- **构建错误**: 确保您已安装 Java 17+ 和 Maven 3.6+
## 特性
### 🎮 核心功能
- **幽灵方块**: 创建可见但没有碰撞/体积的方块
- **分类的 GUI**: 使用 4 个类别(建筑、自然、红石、装饰)组织方块选择
- **分页系统**: 浏览每个类别的多个页面方块
- **幽灵方块移除器**: 移除幽灵方块的特殊工具,通过看着它们并右键单击
- **自动保存系统**: 幽灵方块在服务器重启和重新加载后仍然存在
### 🛠️ 技术特性
- 使用禁用重力和衰减的 FallingBlock 实体
- 用于线程安全操作的并发数据结构
- 基于 YAML 的持久性存储
- 基于位置的幽灵方块映射,用于高效查找
- 改进的幽灵方块移除,具有视线检测
- 分类和分页的 GUI 系统
- 管理员命令用于维护和调试
## 安装
1. 下载插件 JAR 文件
2. 将其放在服务器的 `plugins/` 目录中
3. 重启服务器
4. 插件将自动创建 `ghostblocks.yml` 配置文件
## 命令
| 命令 | 描述 | 权限 |
|---------|-------------|------------|
| `/ghostblocks` | 打开幽灵方块 GUI | `ghostblocks.use` |
| `/ghostblocks help` | 显示帮助信息 | `ghostblocks.use` |
| `/ghostblocks count` | 显示幽灵方块数量 | `ghostblocks.use` |
| `/ghostblocks manage` | 打开幽灵方块管理 GUI | `ghostblocks.use` |
| `/ghostblocks remover` | 获取幽灵方块移除工具 | `ghostblocks.use` |
| `/ghostblocks reload` | 重新加载插件 | `ghostblocks.admin` |
| `/ghostblocks cleanup` | 清理无效的幽灵方块 | `ghostblocks.admin` |
**别名:** `/gb`, `/ghost`
## 权限
- `ghostblocks.use` - 允许使用插件(默认:true)
- `ghostblocks.admin` - 允许执行管理功能(默认:op)
## 使用方法
1. **获取幽灵方块**:
- 使用 `/ghostblocks` 打开分类的 GUI
- 单击类别按钮(建筑、自然、红石、装饰)以切换类别
- 使用上一页/下一页按钮浏览页面
- 单击任何方块以将其获取为幽灵方块物品
- 单击 "幽灵方块移除器" 以获取移除工具
2. **放置幽灵方块**:
- 像放置普通方块一样放置幽灵方块物品
- 它们将自动成为幽灵方块(可见但没有体积)
3. **移除幽灵方块**:
- 握住幽灵方块移除器(棒子)并看着一个幽灵方块
- 在看着幽灵方块时右键单击以将其移除
- 该工具将查找您视线中的幽灵方块
## 方块类别
### 🏗️ 建筑方块
- 石材变体 (石材、鹅卵石、石砖等)
- 深slate 变体(深slate、鹅卵石深slate 等)
- 沙岩变体(沙岩、红沙岩等)
- 玄武岩变体 (玄武岩、抛光玄武岩等)
- 长菱柱变体及更多
### 🌲 自然方块
- 所有木材类型 (橡木、云杉、桦木、丛林、金合欢、深 Oak、红树林、樱花、竹子)
- 去皮木材变体
- 地面方块 (泥土、青草地、斜坡、菌丝体等)
- 冰块 (冰、压实冰、蓝冰)
- 天然石材(方解石、粗砺石、滴水石块)
### ⚡ 红石方块
- 红石组件 (红石方块、观察者、发射器等)
- 所有氧化状态的铜方块
- 功能性方块(熔炉、工作台、锻造台等)
- 机械方块(活塞、粘性活塞等)
### 🎨 装饰方块
- 所有混凝土颜色和混凝土粉末
- 所有赤陶颜色和上釉赤陶
- 下界方块(下界岩石、下界砖等)
- 末影方块(末影石、紫颂方块等)
- 珍贵方块(钻石方块、金方块等)
- 特殊方块(紫水晶、斯卡、远古碎片等)
## 技术细节
### 幽灵方块实现
- 幽灵方块使用 FallingBlock 实体实现
- 设置的属性:`gravity=false`, `dropItem=false`, `hurtEntities=false`
- 定位在方块中心,偏移量为 0.5,以实现完美的对齐
- 通过 YAML 存储跨服务器重启持久化
### 数据存储
- 幽灵方块保存在 `plugins/GhostBlocks/ghostblocks.yml` 中
- 服务器关闭时自动保存
- 服务器启动时自动加载
- 包含世界名称、坐标、材质和唯一 ID
### 性能考虑
- 使用 ConcurrentHashMap 进行线程安全操作
- 基于位置的索引,实现 O(1) 幽灵方块查找
- 清理系统以删除无效的幽灵方块
- 对服务器性能的影响最小
## 从源代码构建
### 要求
- Java 17 或更高版本
- Maven 3.6+
- Paper 1.20.6 API 或更高版本
### 构建步骤
```bash
git clone
cd GhostBlocks
mvn clean package
```
编译后的 JAR 将位于 `target/` 目录中。
## 配置
插件将在插件目录中自动创建 `ghostblocks.yml` 文件。该文件存储所有幽灵方块数据,不应手动编辑。
## 故障排除
### 常见问题
1. **幽灵方块没有持久化**: 检查插件是否有权写入插件目录
2. **幽灵方块显示为普通方块**: 确保您使用的是 Paper 1.20.4 而不是 Bukkit/Spigot
3. **无法移除幽灵方块**: 确保您正在直接看着幽灵方块并使用幽灵方块移除工具
4. **构建错误**: 确保您已安装 Java 17+ 和 Maven 3.6+
5. **GUI 没有打开**: 检查您是否具有 `ghostblocks.use` 权限
### 调试命令
- 使用 `/ghostblocks count` 查看加载了多少个幽灵方块
- 使用 `/ghostblocks cleanup` 删除任何无效的幽灵方块
- 检查服务器控制台中的任何错误消息
## 支持
对于问题、建议或贡献:
1. 检查上面的故障排除部分
2. 检查服务器控制台中的错误消息
3. 创建一个包含问题详细信息的 issue
## 许可
本项目发布在 MIT 许可下。有关详细信息,请参阅 LICENSE 文件。
## 版本历史
### v1.0.0
- 初始版本
- 核心幽灵方块功能
- 分类 GUI 系统,包含 4 个类别(建筑、自然、红石、装饰)
- 分页系统,便于浏览
- 改进的幽灵方块移除器,具有视线检测
- 自动保存系统
- 管理员命令
- 200+ 种方块类型,覆盖所有类别
### v2.0.0
- **GUI 增强**: GUI 在选择方块时保持打开状态,以获得更好的用户体验
- 玩家现在可以选择多个方块,而无需重新打开 GUI
- 其他 GUI 交互(移除工具、导航)的工作方式与之前相同
### v3.0.0
- **逻辑修复**: 幽灵方块不再在一段时间后出现故障或衰减.
- **新自动保存系统**: 现在,每 10 刻(0.5s),插件会自动将所有幽灵方块数据保存到插件文件夹中的专用文件。
- **块衰减已解决**: 有时,一些方块会从无消失,现在已修复。
### v3.5.0
- 存在幽灵方块的 GUI 管理。
- 新的 GUI 改进。
- 新的游戏内命令。
- 线程安全的数据结构。
- 新的 (APDC) 系统 | 自动玩家数据清理。
### v4.0.0
- TPS 优化。
- 多线程系统。
- 新的方块添加。