# 🛠️ CustomGenerator
一个完全集成的、与BentoBox兼容的生成器插件,旨在为岛屿所有者提供购买、管理和激活自定义的碎石、石块、玄武岩或深slate生成器的能力。 所有配置均通过易于编辑的YAML文件处理,从而使服务器管理员可以轻松地进行自定义和灵活配置。
---
## ✨ 特性
* 每岛 **购买 & 激活** 工作流程,内置经济系统和岛屿等级验证
* 直观的 **GUI 菜单**,用于浏览类别和单个生成器类型
* **自定义生成器逻辑**,由 `custom-generator-categories.yml` 驱动
* 通过 **YAML 文件** 完全自定义消息,GUI 布局和生成器设置
* **缓存优先** 设计,实现快速响应时间和最小服务器负载
* 方便的 **重新加载** 命令,无需服务器重启即可立即应用配置更改
* 支持多个生成器类别,包括经典碎石和高级玄武岩和深slate 类型
* 模块化代码架构,职责分离清晰,便于未来扩展
* 通过 Vault 集成经济系统,实现无缝交易管理
* BentoBox 岛屿等级检查,以保持平衡的游戏进程
---
## 🔄 v1.1.0 新增内容
### 🧪 新特性
- **自定义生成器类别** 通过 `custom-generator-categories.yml`:
使用流体流动条件、周围方块、生物群系、Y 坐标限制等定义自己的生成器逻辑。
- **改进的生成器菜单 UI**:
视觉增强,更好的布局和更直观的类别按钮。
- **GUI 中的分页支持**:
菜单现在支持无限个生成器类型,可以通过 **下一页** / **上一页** 按钮导航。
---
## 📦 硬件依赖
| 插件 | 测试版本 | 目的 |
|--------------|------------------|-------------------------------------|
| **BentoBox** | 3.0.0+ | 管理岛屿数据和世界隔离 |
| **Vault** | 1.7+ | 提供经济 API 以进行交易 |
> 插件需要安装并启用所有依赖项;否则将无法加载。
---
## 🚀 快速开始
1. **下载** `CustomGenerator.jar` 文件,并将其放置在服务器的 `plugins/` 目录中。
2. 启动服务器一次以生成默认配置文件:
* `messages.yml` — 可自定义的消息字符串
* `generator-types.yml` — 所有生成器类型的定义
* `custom-generator-categories.yml` — 定义生成器行为
3. 根据服务器的需求和偏好修改 YAML 文件。
4. 使用命令 `/generator reload` 或重启服务器以加载自定义设置。
5. 鼓励玩家使用 `/generator help` 查看可用命令和用法。
---
### 命令
| 命令 | 描述 |
|---------|-------------|
| `/generator` | 打开主菜单,向玩家显示可用的生成器。 |
| `/generator buy ` | 购买指定的生成器。 玩家必须有足够的钱。 |
| `/generator activate ` | 激活先前购买的生成器。 |
| `/generator list` | 列出服务器上定义的所有生成器。 |
| `/generator reload` | 重新加载所有配置文件。 需要管理员权限。 |
## ⚙️ 配置基础
### 定义生成器类型
生成器类型定义在 `generator-types.yml` 文件中。您可以添加新的类型或修改现有的类型。 每个条目都指定了生成器的行为和在 GUI 中显示的方式。 这是一个例子:
```yaml
generator-types:
diamond:
display-name: "&b钻石生成器"
material: DIAMOND_ORE
lore:
- "&b包含稀有而有价值的资源。"
- "&7产生 30% 的钻石和 70% 的石块。"
generator-type: COBBLESTONE
price: 5000
required-island-level: 30
blocks:
STONE: 70
DIAMOND_ORE: 30
```
### 重要提示:
* generator-type 必须是内置类别之一(COBBLESTONE, STONE, BASALT, DEEPSLATE)或 custom-generator-categories.yml 中定义的自定义类别。
* blocks 下的值:用作相对权重。 该插件在内部规范化这些值,因此无论您使用 70/30、0.7/0.3 还是 7/3,行为都是一致的。
* 价格支持如果您的经济插件允许,可以使用小数。
* material 必须是 [Bukkit Material](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html) 的有效值,用于 GUI 图标。
* lore 支持多行和颜色代码来描述生成器。
### 创建自定义生成器
自定义生成器在 custom-generator-categories.yml 中定义。 例如:
```yaml
dirt_generator:
category: DIRTGEN
display-name: "&2泥土"
fluid: LAVA
to: AIR
conditions:
sides: [ DIRT ]
up: [ STONE ]
down: [ COARSE_DIRT ]
y-level:
min: 10
max: 64
biomes:
- minecraft:plains
- minecraft:the_void
```
### 说明:
* **category**: 唯一的类别 ID。 必须与 generator-types.yml 中的一条生成器类型记录匹配。
* **fluid**: 触发流体块(例如,LAVA、WATER)。
* **to**: 流体流向的块(AIR、WATER、POWDER_SNOW 等)。
* **conditions**: 可选的块要求(sides、up、down)。
* **y-level**: 生成器生效的 Y 轴范围(可选)。
* **biomes**: 生成器生效的生物群系白名单(可选)。
**通过此系统,您可以实现:**
* 限制在地下城的玄武岩生成器。
* Y>100 的金生成器。
* 具有特定周围块的泥土生成器。
* 仅在蘑菇岛上才能使用的生物群系专用生成器。