# 猪林交易
一个轻量级的 Spigot/Paper 1.21+ 插件,允许**特殊猪林**和(可选)**普通猪林**通过完全可配置的、加权奖励池进行交易。玩家“提供”一个物品,猪林会短暂冷却(在**空手**中展示物品,以防武器丢失),然后根据您的配置掉落奖励。支持物品奖励(包括药水和附魔书)和控制台**命令**奖励——可选择使用 PlaceholderAPI 占位符。
---
## 亮点
- **特殊猪林**: 无敌,不会消失,在“思考”时显示提供的物品,然后支付奖励。
- **普通猪林 (开关)**: 保留**原版交易**或通过配置将其切换到**猪林交易**。
- **空手欣赏**: 提供的物品出现在空手中,以便猪林保留主手武器。
- **物品键池**: 每个池子都由玩家提供的物品的**材料**(例如 `GOLD_INGOT`)来键定。
- **加权奖励**: 每个条目的 `weight` 控制概率;数量可以是固定值或范围值。
- **奖励类型**:
- **物品** (支持附魔;通过基本 `PotionType` 支持药水;尖啸箭)
- **附魔书** (存储的附魔)
- **命令** (从控制台运行;支持 `{player}` 和 PlaceholderAPI)
- **管理员 GUI & 工具**: 在游戏中添加/编辑池子和奖励;模拟器用于测试概率。
---
## 要求
- **服务器**: Spigot/Paper **1.21+**
- **Java**: 21+
- **可选**: PlaceholderAPI (用于命令奖励中的占位符)
---
## 安装
1. 将 `PiglinTrades.jar` 放入 `/plugins` 目录。
2. (可选) 如果您想在命令奖励中使用占位符,请安装 **PlaceholderAPI**。
3. 重启以生成 `config.yml` 和 `rewards.yml`。
4. 自定义设置,然后运行 `/pt reload`。
---
## 快速开始
1. 使用 `/pt spawn` 放置一个 **特殊猪林**。
2. 在 `rewards.yml` 中,创建一个由玩家将要提供的物品键定的池子(例如 `GOLD_INGOT`)。
3. 通过 **右键单击** 猪林或在它们附近**掉落**物品来提供物品(消耗 1 个)。
4. 在 **冷却** 之后,将从匹配的池子中出现奖励。
> 想让 **普通猪林** 也使用该插件吗?请参阅下面的配置开关。
---
## 配置
### `config.yml`
- **`cooldown-seconds`** — 猪林在支付奖励前“欣赏”物品的秒数(默认:`3`)。
- **`allow-vanilla-piglin-barter`** — 如果为 `true`,**普通**猪林将保留原版交易。特殊猪林始终使用猪林交易。
- **`regular-piglins-use-plugin-trades`** — 如果为 `true`,**普通**猪林也通过猪林交易进行交易。
这两个布尔值是**相互排斥**的。如果两者都为 `true`,则插件会记录一条**警告**并**禁用原版交易**,使普通猪林使用猪林交易。
示例:
~~~yaml
cooldown-seconds: 3
allow-vanilla-piglin-barter: false
regular-piglins-use-plugin-trades: false
~~~
### `rewards.yml` (概念)
- **池子** 由 **材料名称** (例如 `GOLD_INGOT`) 键定。
- 每个池子都有条目,包含:
- `type`: `item` | `enchanted_book` | `command`
- `weight`: 越高越可能
- 对于 **物品**: `material`, `amount` (数字或 `min-max`),可选 `enchants`,可选 `potion`
- 对于 **附魔书**: `stored_enchants`, `amount`
- 对于 **命令**: `command` (控制台),支持 `{player}` 和 PlaceholderAPI
> 小提示: 使用 `/pt simulate ` 预览结果分布。
---
## 命令 & 权限
- **基础**: `/piglintrades` (别名 `/pt`)
- **权限**: `piglintrades.admin` (默认: OP)
子命令:
- `/pt spawn` — 放置一个特殊猪林。
- `/pt reload` — 重新加载配置文件。
- `/pt simulate ` — 测试加权结果。
- `/pt kill ` — 移除特殊猪林。
- `/pt gui` — 打开管理员 GUI。
---
## 玩家如何使用
- **特殊猪林**: 右键单击或掉落配置的物品;等待冷却;收集奖励。
- **普通猪林**:
- 如果 `allow-vanilla-piglin-barter: true` → 它们表现为 **原版**。
- 如果 `regular-piglins-use-plugin-trades: true` → 它们使用与特殊猪林相同的 **猪林交易**流程。
---
## 注意事项
- 提供的物品在猪林的 **空手** 中显示(主手装备保持不变)。
- 如果池子没有有效的条目或只有非正数的权重,则它将不会选择奖励。
- 验证 Spigot 枚举中的材料名称和附魔键。
---
## 故障排除
- **普通猪林仍然进行原版交易** → 将 `allow-vanilla-piglin-barter: false` 和 `regular-piglins-use-plugin-trades: true` 设置为 `true`,然后 `/pt reload`。 如果两者都为 `true`,请检查控制台中的互斥警告。
- **`/pt simulate` 中的“未知池子”** → 验证材料键的精确性。
- **没有奖励掉落** → 检查条目的 `type`、权重和字段。
- **占位符未应用** → 安装 PlaceholderAPI 和所需的扩展。