# ExpBottle 🍾💧
[](https://github.com/wilddip/ExpBottle/actions/workflows/release.yml)
厌倦了失去你宝贵的经验值吗? 😤 ExpBottle 来拯救你! 🚀 这个 Spigot 插件允许玩家将经验值瓶装起来,稍后使用或发送给朋友。一切都带有风格、自定义消息和流畅的 MiniMessage 格式! ✨
## 🔥 核心功能
* **经验瓶装与取回**: `/exp get [amount|amountL|all]` - 将经验值变成可交易的瓶子。
* **直接经验值转移**: `/exp send ` - 直接将经验值发送给他人!
* **批量瓶装**: `/exp split ` - 创建多个固定大小的瓶子。
* **管理员赠送**: `/exp give [count]` - 赠送瓶子给玩家(控制台也能使用!)。
* **通用瓶子使用**: 存储经验值的标准经验值瓶子按预期工作。
* **无缝交互**: 在拿着自定义经验值瓶子时,正常使用箱子、熔炉等。
* **深度自定义**:
* 🌍 **完整的本地化**: 编辑 `lang/.yml` 文件(例如 `en_US.yml`、`ru_RU.yml`)。支持 **MiniMessage** 用于精彩的文本格式化!
* 🗣️ **智能本地化**: 自动检测玩家的语言并从 `lang/` 文件中使用正确的翻译。
* 🔊 **声音通知**: 在从其他玩家那里收到经验值时,自定义声音警报。
* 📦 **物品栏管理**: 配置满物品栏时的行为 (`drop` 或 `error`)。
* ✂️ **拆分控制**: 为 `/exp split` 设置最小/最大等级/经验值和步长。
* **基于权限**: 对谁可以做什么进行细粒度控制。
* **即时重新加载**: `/exp reload` - 在不重启服务器的情况下应用配置更改。
## 🎮 命令和权限
所有命令都以 `/exp` 开头(或你的配置别名)。
| 命令 | 描述 | 权限 | 别名 |
| :------------------------------------------ | :--------------------------------------------------------------------------------------------------------- | :------------ | :------- |
| `/exp` | 显示你的当前经验值信息。 | `expbottle.use` | _(无)_ |
| `/exp get [amount[L] \| all]` | 将经验值提取到瓶子中。`amount` = 经验点数, `amountL` = 等级。默认为 `all`。 | `expbottle.get` | `g` |
| `/exp send [amount[L] \| all]` | 直接将经验值发送给另一位玩家。格式如上。 | `expbottle.send` | _(无)_ |
| `/exp split ` | 创建多个固定 `amount` 或 `amountL` 的瓶子。 | `expbottle.split` | `s` |
| `/exp give [count]` | 给予玩家 `count` 个带有 `amount` 或 `amountL` 经验值的瓶子。控制台也能使用! | `expbottle.give` | _(无)_ |
| `/exp help` | 显示此帮助菜单。 | `expbottle.help` | `h` |
| `/exp reload` | 重新加载插件配置。 | `expbottle.reload` | _(无)_ |
**理解数量:**
* `100` = 100 经验点。
* `10L` = 10 经验等级。
* `all` = 你所有的当前经验值(不适用于 `/split` 或 `/give` 每瓶数量)。
## ⚙️ 配置
ExpBottle 具有高度可配置性!
* **`config.yml`**:
* `default_language`: 例如,`en_US`、`ru_RU`。
* `command.name` 和 `command.aliases`: 自定义你的命令。
* `bottle_lore`: 定义你的经验值瓶子的外观。使用 MiniMessage!
* 占位符:``、``、``、``。
* `sound_settings.*`: 配置不同操作的声音(详情请参见下文)。
* `command.get.inventory_full_action`: 物品栏已满时的操作 (`drop` 或 `error`)。
* `command.split.*`: `split` 命令的参数 (最小等级、步长等)。
* _(...以及其他一般设置,如果存在)_
* **`Sound Settings` (`sound_settings`) 详细信息**:
* `get`:
* `enabled: true|false` - 使用 `/exp get` 时播放的声音。
* `name: "SOUND_NAME"` - Bukkit 声音名称 (例如 `ENTITY_ITEM_PICKUP`)。
* `volume: 1.0`
* `pitch: 1.0`
* `send_receive`:
* `enabled: true|false` - `/exp send` 或 `/exp give` 的接收者的声音。
* `name: "SOUND_NAME"` (例如 `ENTITY_PLAYER_LEVELUP`)。
* `volume: 1.0`
* `pitch: 1.0`
* `split`:
* `enabled: true|false` - 使用 `/exp split` 时播放的声音。
* `name: "SOUND_NAME"` (例如 `BLOCK_AMETHYST_BLOCK_CHIME`)。
* `volume: 1.0`
* `pitch: 1.0`
* **`lang/` 目录 (例如 `lang/en_US.yml`)**:
* 所有面向玩家的消息都在这里!插件会智能地根据每个玩家的客户端语言选择正确的文件!
* 使用 **MiniMessage** 进行颜色、格式和悬停/点击事件。
* 例如 MiniMessage: `成功! 收到 经验值。 `
* 占位符通常为 ``。
## 📦 安装
1. 从 [发布页面](https://github.com/wilddip/ExpBottle/releases) 下载最新的 `ExpBottle-X.X.X.jar`。
2. 将其放入你的 Spigot 服务器的 `plugins` 文件夹中。
3. 重启或在服务器上加载插件。
4. 完成! 根据需要进行配置。 🎉
## 🙏 作者和鸣谢
* 最初的概念和初始版本:[BrannStroom](https://github.com/Brannstroom)
* 当前维护者和重构者:[wilddip](https://github.com/wilddip)
## 🛠️ 从源代码构建
感觉冒险?使用 Maven:
```bash
mvn clean package
```
在 `target` 目录中找到你的新鲜 JAR。