
# 🎣 XFPoolManager (XFPM)
**XFPoolManager** 是一个 **自定义掉宝池管理器**。
它主要设计用于 **CosmicSMP** 以及具有 **高级钓鱼系统** 的服务器,但也可以用作通用的掉宝池管理器。
## 💡 软依赖:
- **NBT API**
- **Vault**
- **PlaceholderAPI**
> 这些插件是 **可选的**。XFPM 会在它们存在时与它们集成,但如果没有它们也可以正常运行。
## 📜 通用描述
XFPM 允许你定义 **主掉宝池**,其中包含 **迷你掉宝池**,最后在这些迷你掉宝池中包含 **物品**。
它还引入了 **自定义钓鱼附魔**(存储在钓鱼竿的 Lore 中,不是真正的附魔)它们会影响 `/xfpm loot` 掷骰时的掉宝行为。
✅ 如果玩家手中没有具有所需 Lore 的钓鱼竿 → 应用正常的掉宝规则。
✅ 如果钓鱼竿包含 Lore 中特定的附魔 → 插件会相应地修改掉宝生成。
✅ 在下表中标注为 `[X]` 的附魔会被 XFPM **忽略**。
## ✨ 特性
- 🎲 **可配置的掉宝池**,具有:
- 主掉宝池 → 迷你掉宝池 → 物品。
- 物品稀有度: `common, uncommon, rare, epic, mythic, legendary` (以及更稀有程度的)。
- 物品的掉落几率。
- 固定或范围数量,带有可选的 **加权概率**。
- 完全 **NBT 标签** 支持 (支持复杂的 JSON)。
- 自定义消息 (`%nl%` = 换行符)。
- 每奖励执行的控制台命令。
- 🪝 **自定义钓鱼附魔 (CosmicSMP 为专用)**:
- 仅当玩家手持 Lore 正确的钓鱼竿时有效。
- 等级以罗马数字 (`I–VI` 或 `MAX`) 表示。
- 无需额外的附魔插件。
- 动态修改掉宝掷骰逻辑:
- 更稀有的鱼。
- 更多的宝藏。
- 增加鱼或垃圾的数量。
- 奖励更多经验。
- 🔄 运行中重新加载配置: `/xfpm reload`。
- 📦 能够直接与 **CosmicSMP 设置** 和类似系统配合使用。
---
## 🧩 自定义附魔
### 🎲 几率提升
- **Rare Catch** → 提升捕捉更稀有物品的几率。
- **Treasure Finder** → 解锁或增加在 `treasure` 迷你掉宝池中掷骰的几率。
- **Bountiful Haul** → 增加鱼的数量 (+20% 每级)。 不兼容 *Wasteful Haul*。
- **Wasteful Haul** → 增加垃圾的数量 (+15% 每级)。 不兼容 *Bountiful Haul*。
- **Angler’s Fortune** → 每成功捕获给予额外经验。
### ⚡ 实用 & 其他 (XFPM 忽略)
- Gambler’s Worth [X]
- Swift Bite [X]
- Endless Line [X]
📌 如果附魔 **不在 Lore 中** → 没有效果。
📌 如果它 **存在但标记为 [X]** → 安全地被忽略。
---
## ⚙️ 命令
| 命令 | 描述 |
|---|---|
| `/xfpm loot <玩家> <主掉宝池名称> <迷你掉宝池名称> <数量>` | 为玩家掷骰掉宝,如果玩家的钓鱼竿 Lore 符合条件,则应用附魔修改器。 |
| `/xfpm reload` / `/xfpmreload` | 在不重启服务器的情况下重新加载插件配置。 |
---
## 🛠️ 示例 `config.yml`
```yaml
pool_main:
fish:
salmon_common:
item: salmon
rarity: common
nbt:
- 'custom_name=[{"text":"Common Salmon","italic":false,"color":"white"}]'
message: "You caught a common salmon!"
amount: "1-2"
amount_weighted: false
chance: 0.5
commands:
- "say %player% caught a salmon!"
treasure:
golden_pearl:
item: ender_pearl
rarity: legendary
nbt:
- 'custom_name=[{"text":"Golden Pearl","italic":false,"color":"gold"}]'
message: "§6You fished up a Golden Pearl!%nl%§7Unbelievable luck!"
amount: "1"
amount_weighted: false
chance: 0.05
commands:
- "give %player% diamond 1"
```