- 版权类型
- 原创
- 插件中文名称
- 合理建筑搬迁
- 插件英文名称
- BuildQuota
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Purpur
- PufferFish
- Leaves
- 语言支持
- 中文(简体)
- 适配版本(Java)
- 1.21
- 1.20
[MD]
## BuildQuota —— 合理建筑搬迁
> 在生存模式下,通过**收集材料**来搬迁建筑,让每一次搬迁都有合理的生存代价!
---
### 核心玩法
1. 手持**木棒**(`/bq wand`),左键/右键框选建筑(无区域大小限制)
2. 输入 `/bq record`,自动生成**专属宝箱**和**材料清单纸**
3. 按清单**凑齐材料**放入宝箱,清单纸实时显示进度
4. 输入 `/bq copy` 复制为蓝图 → 到目标地 `/bq paste` 粘贴完成
---
### 特色功能
- **异步计算**:框选超大建筑也不卡服
- **智能材料清单**:自动识别建筑所需方块,排除空气/水/岩浆/屏障/基岩等
- **清单纸实时进度**:放入材料后清单纸自动刷新,显示"✔ 已凑齐"或"还差多少"
- **多宝箱系统**:最多 8 个宝箱,箱内按钮一键增减,自动避让不覆盖方块
- **蓝图持久化**:`/bq copy` 压缩保存为蓝图(gzip),支持跨世界粘贴,**重启不丢失**
- **高性能粘贴**:分 tick 分批粘贴不卡服,可选逐层粘贴动画
- **私有宝箱**:每个玩家的宝箱只有自己能打开(管理员可绕过)
- **精准扣取**:粘贴时只消耗所需数量,多余退还背包
- **跨世界支持**:不分世界,自由搬迁,支持世界黑名单与出生点保护
- **领地/锁箱保护**:粘贴前逐块检查,自动跳过他人领地与带锁箱子
- **审计日志**:记录每次 record/copy/paste 的玩家、位置、消耗材料,可追溯
---
### 指令列表
| 指令 | 说明 |
|------|------|
| `/bq 1` / `/bq 2` | 以脚下位置选点(支持 `/bq 1 x y z` 指定坐标) |
| `/bq wand` | 获取选区木棒 |
| `/bq sel` | 查看当前选区信息 |
| `/bq record` | 记录选区,生成宝箱与材料清单 |
| `/bq copy` | 材料齐备后复制选区为蓝图 |
| `/bq paste` | 站在目标位置粘贴(消耗材料) |
| `/bq chest` | 重建宝箱,重新准备材料 |
| `/bq clear` | 清除所有记录 |
| `/bq reload` | 重载配置(管理员) |
| `/bq help` | 帮助菜单 |
---
### 权限节点
| 权限节点 | 默认 | 说明 |
|----------|------|------|
| `buildquota.use` | 所有玩家 | 使用插件基础功能 |
| `buildquota.admin` | OP | 绕过宝箱保护、材料限制、领地/锁箱保护、出生点保护 |
| `buildquota.volume.unlimited` | OP | 无视选区体积上限 |
| `buildquota.cooldown.bypass` | OP | 无视粘贴冷却 |
---
### 支持详情
**服务端核心**
| 核心 | 支持 | 说明 |
|------|------|------|
| **Paper** | √ 推荐 | 实测 Paper `1.21.8-40-main` 正常运行 |
| **Spigot / Bukkit** | √ | 基于 CraftBukkit API,向下兼容 |
| **Purpur / Pufferfish** | √ | Paper 分支,完全兼容 |
| **Fabric / Forge** | × | 依赖 CraftBukkit 内部类做 NBT 序列化,模组端无法运行 |
| **BungeeCord / Velocity** | × | 这是子服插件,需安装在游戏服务器上 |
**Minecraft 版本**
| 项目 | 说明 |
|------|------|
| 支持范围 | **1.20 ~ 1.21.8**(含中间所有小版本) |
| 编译基线 | `paper-api 1.20.4`,`api-version: '1.20'`,向上兼容 |
| 实测版本 | Paper `1.21.8` 正常运行 |
**Java 版本**
| 项目 | 说明 |
|------|------|
| 最低要求 | **Java 17**(编译 target 17) |
| 兼容说明 | 1.20.x 服务器通常 Java 17,1.21.x 服务器通常 Java 21,都能跑 |
---
### 各版本功能差异(已做兼容处理)
| 功能 | 版本差异处理 |
|------|-------------|
| **选区粒子** | 1.20.4 部分快照无 DUST 粒子 → 反射回退 REDSTONE;另加 `sendBlockChange` 方块高亮双轨显示 |
| **容器 NBT**(箱子内容、附魔台、玩家头颅皮肤) | 1.20.5+ 移除了 `TagContainer` API → 改用无版本 `craftbukkit.block.CraftBlockEntityState` + `MojangsonParser`;若反射失败自动降级(方块仍正常粘贴,只是容器内物品/头颅皮肤可能不保留),启动日志会打印 `[NBT 诊断]` 提示 |
| **选区 / 材料 / 宝箱 / 粘贴 / 领地保护** | 全版本一致,无差异 |
---
### 配置亮点
| 配置项 | 说明 |
|--------|------|
| `language` | 中英文一键切换(`zh_CN` / `en`),语言文件在 `plugins/BuildQuota/language/` 独立目录,可自由编辑、可自行添加其他语言 |
| `max-volume` | 选区体积上限,防止框选整个地图导致卡服 |
| `paste.blocks-per-tick` | 每 tick 粘贴方块数,可调性能 |
| `paste.disabled-worlds` | 禁止粘贴的世界黑名单 |
| `protection.spawn-protect-radius` | 出生点保护半径 |
| `chest.reject-modified-items` | 严格物品校验(可拒绝带自定义 NBT 的物品) |
---
### 一句话总结
**Java 17+ 的 Paper(或 Spigot)1.20 ~ 1.21.8 服务器都可以装**,跨版本兼容已经做好。只有 1.21.8 的 NBT 序列化走的是**降级适配路径**,启动时留意日志即可。
---
### 截图演示
> (在这里放你的演示截图)
---
### 更新计划
- [ ] 主流领地插件支持(WorldGuard / Residence)
- [ ] 更多语言支持(社区贡献)
- [ ] 粘贴预览模式
---
### 反馈与支持
如有问题或建议,欢迎在本帖留言!
[/MD]