- 版权类型
- 原创
- 插件中文名称
- FoitaCrates
- 插件英文名称
- FoitaCrates
- 原帖地址
- #
- 支持的核心(服务端)
- Paper
- 语言支持
- 多语言
- 前置组件
- protocolib https://www.spigotmc.org/resources/protocollib.1997/
packetevents https://modrinth.com/plugin/packetevents
- 适配版本(Java)
- 1.21
- 1.20
[MD]
# 【原创插件】FotiaCrates - 功能强大的抽奖箱插件 | 全GUI配置 | 多动画 | 保底系统
---
## ⚠️ 插件有问题?加QQ群:767608887 获取帮助!⚠️
---
## 📦 插件简介
FotiaCrates 是一款功能丰富、**配置超简单**的 Minecraft 抽奖箱插件。
**🎯 全程GUI可视化操作,无需手动编辑配置文件!**
支持多种开箱动画、保底系统、ModelEngine 自定义模型、虚拟/实体钥匙等功能。
完美适配 **Paper 1.20+** 服务端,使用 MiniMessage 格式支持丰富的文本样式。
---
## 🌟 为什么选择 FotiaCrates?
| 特点 | 说明 |
|------|------|
| ✅ **全GUI配置** | 游戏内点点鼠标就能完成所有配置,小白也能轻松上手! |
| ✅ **零代码操作** | 添加奖励?直接把物品拖进去!设置概率?点击修改! |
| ✅ **即时预览** | 所有修改实时生效,所见即所得 |
| ✅ **中文界面** | 完整中文支持,无语言障碍 |
---
## ✨ 核心特性
- **🖱️ 全GUI可视化配置** - 游戏内完成所有设置,告别繁琐的配置文件
- **多种开箱动画** - GUI轮盘动画、物理漂浮动画,可同时启用
- **保底系统** - 支持多级保底,抽X次必得稀有奖励
- **ModelEngine支持** - 自定义3D宝箱模型和开箱动画
- **虚拟+实体钥匙** - 双钥匙系统,一把钥匙可开多种宝箱
- **全息显示** - 宝箱上方显示信息,每个玩家看到自己的钥匙数量
- **多种奖励类型** - 物品、命令、金币、经验
- **多语言支持** - 内置中英文,可自定义语言
- **数据库支持** - SQLite/MySQL,记录抽奖历史
- **自定义稀有度** - 可配置稀有度名称和颜色
- **权限系统** - 每个宝箱可配置独立权限
---
## 📋 插件依赖
**必需:** Paper 1.20+
**可选:**
- Vault - 金币奖励支持
- PlaceholderAPI - 变量支持
- ModelEngine - 自定义3D模型
- ProtocolLib - 箱子盖子动画仅对开箱者可见
- CraftEngine/ItemsAdder/Oraxen - 自定义物品支持
---
## 🎮 命令大全
| 命令 | 说明 | 权限 |
|------|------|------|
| `/crate help` | 查看帮助信息 | 无 |
| `/crate open <宝箱ID> [数量]` | 打开宝箱 | fotiacrates.use |
| `/crate preview <宝箱ID>` | 预览宝箱奖励 | fotiacrates.preview |
| `/crate history [玩家]` | 查看抽奖历史 | fotiacrates.history |
| `/crate key give <玩家> <钥匙ID> <数量> [virtual/physical]` | 给予钥匙 | fotiacrates.admin.key |
| `/crate key take <玩家> <钥匙ID> <数量> [virtual/physical]` | 收回钥匙 | fotiacrates.admin.key |
| `/crate key check <玩家> [钥匙ID]` | 查看玩家钥匙 | fotiacrates.admin.key |
| `/crate give <玩家> <宝箱ID> [数量]` | 给予宝箱方块 | fotiacrates.admin.give |
| `/crate set <宝箱ID>` | 设置脚下方块为宝箱 | fotiacrates.admin.set |
| `/crate remove` | 移除脚下的宝箱 | fotiacrates.admin.remove |
| `/crate editor` | 打开可视化编辑器 | fotiacrates.admin.editor |
| `/crate reload` | 重载插件配置 | fotiacrates.admin.reload |
**命令别名:** `/crates`, `/fc`
---
## 🔑 权限节点
| 权限 | 说明 | 默认 |
|------|------|------|
| `fotiacrates.use` | 使用抽奖箱系统 | 所有玩家 |
| `fotiacrates.preview` | 预览宝箱奖励 | 所有玩家 |
| `fotiacrates.history` | 查看自己的抽奖历史 | 所有玩家 |
| `fotiacrates.history.others` | 查看其他玩家的抽奖历史 | OP |
| `fotiacrates.open.*` | 打开所有抽奖箱 | OP |
| `fotiacrates.admin.*` | 所有管理员权限 | OP |
| `fotiacrates.admin.key` | 管理钥匙 | OP |
| `fotiacrates.admin.give` | 给予宝箱方块 | OP |
| `fotiacrates.admin.place` | 放置宝箱方块 | OP |
| `fotiacrates.admin.set` | 设置抽奖箱位置 | OP |
| `fotiacrates.admin.remove` | 移除抽奖箱位置 | OP |
| `fotiacrates.admin.reload` | 重载插件配置 | OP |
| `fotiacrates.admin.editor` | 使用可视化编辑器 | OP |
> **提示:** 每个宝箱可以在配置文件中设置独立的权限节点,留空则所有玩家都可以开启。
---
## 📁 文件结构
```
plugins/FotiaCrates/
├── config.yml # 主配置文件
├── data.db # SQLite数据库(默认)
├── crates/ # 宝箱配置文件夹
│ ├── common.yml # 普通宝箱
│ └── rare.yml # 稀有宝箱(可自行添加更多)
├── keys/ # 钥匙配置文件夹
│ ├── common_key.yml # 普通钥匙
│ └── rare_key.yml # 稀有钥匙
├── guis/ # GUI配置文件夹
│ ├── admin.yml # 管理员菜单
│ ├── preview.yml # 预览界面
│ └── ...
└── lang/ # 语言文件夹
├── zh_CN.yml # 简体中文
└── en_US.yml # 英文
```
---
## 🚀 快速开始
### 第一步:安装插件
1. 下载插件 jar 文件
2. 放入服务器 `plugins` 文件夹
3. 重启服务器或使用插件管理器加载
### 第二步:创建宝箱
**方法一:使用命令**
1. 站在你想放置宝箱的方块上
2. 执行命令 `/crate set common`
3. 宝箱创建完成!
**方法二:使用宝箱方块**
1. 执行 `/crate give <玩家名> common 1` 获取宝箱方块
2. 将宝箱方块放置在地上
3. 宝箱自动创建!
### 第三步:给予钥匙
```
# 给予虚拟钥匙(存储在数据库)
/crate key give <玩家名> common_key 10 virtual
# 给予实体钥匙(物品形式)
/crate key give <玩家名> common_key 10 physical
# 不指定类型默认给予虚拟钥匙
/crate key give <玩家名> common_key 10
```
### 第四步:开箱!
- **右键点击** 宝箱方块即可开箱
- 或使用命令 `/crate open common`
---
## 🖱️ GUI可视化编辑器(重点推荐!)
**告别繁琐的配置文件,全程鼠标点击操作!**
### 打开编辑器
执行命令:`/crate editor`
### 编辑器功能一览
#### 📦 宝箱管理
- 点击宝箱图标进入宝箱编辑
- 可修改:名称、方块类型、动画设置、音效、粒子效果等
- 所有修改即时保存,无需重载
#### 🎁 奖励编辑
- **添加物品奖励**:直接将物品拖入GUI,自动识别!
- **设置概率**:点击奖励物品,输入概率数值
- **设置稀有度**:从下拉菜单选择
- **命令奖励**:点击添加,输入命令即可
- **批量编辑**:支持快速复制、删除奖励
#### 🔑 钥匙管理
- 创建新钥匙
- 编辑钥匙外观(材质、名称、Lore、发光效果)
- 设置钥匙可开启的宝箱
#### ⚙️ 动画设置
- 一键开关GUI动画/物理动画
- 调整动画时长
- 预览动画效果
#### 🎯 保底设置
- 开关保底系统
- 设置保底次数
- 选择保底稀有度
### GUI编辑示例
```
┌─────────────────────────────────┐
│ FotiaCrates 管理面板 │
├─────────────────────────────────┤
│ [📦] [🔑] [⚙️] │
│ 宝箱 钥匙 设置 │
│ 管理 管理 管理 │
│ │
│ [🎨] [📊] [🔄] │
│ 稀有度 统计 重载 │
│ 管理 查看 配置 │
└─────────────────────────────────┘
```
> **💡 小贴士**:90%的配置都可以在GUI中完成,只有极少数高级功能需要编辑配置文件!
---
## ⚙️ 配置详解(进阶用户)
> 以下配置文件内容供进阶用户参考,新手直接使用GUI编辑器即可!
### 主配置文件 (config.yml)
```yaml
# 数据库设置
database:
type: sqlite # sqlite 或 mysql
mysql:
host: localhost
port: 3306
database: fotiacrates
username: root
password: ""
# 稀有度配置(可自定义)
rarities:
common:
display-name: "<!i><gray>普通"
color: "gray"
rare:
display-name: "<!i><blue>精良"
color: "blue"
legendary:
display-name: "<!i><gold>传说"
color: "gold"
# 全息显示设置
hologram:
enabled: true
height-offset: 1.5
lines:
- "<!i><gold>{crate_name}"
- "<!i><gray>钥匙: <yellow>{keys}"
- "<!i><gray>左键预览 | 右键开启"
# 全局设置
settings:
default-language: zh_CN
broadcast-rare-rewards: true
save-history: true
max-history-entries: 100
```
---
### 宝箱配置文件 (crates/common.yml)
```yaml
# 宝箱显示名称
name: "<!i><green>普通宝箱"
# 开箱权限(留空则所有玩家都可以开启)
permission: ""
# 宝箱方块设置
block:
material: CHEST
item:
name: "<!i><green>普通宝箱方块"
lore:
- "<!i><gray>放置此方块创建抽奖箱"
# ModelEngine模型(可选)
modelengine:
enabled: false
model-id: "common_crate"
idle-animation: "idle"
open-animation: "open"
open-delay: 20
# 全息显示(每个宝箱可独立配置)
hologram:
height: 1.5
lines:
- "<!i><green>{crate_name}"
- "<!i><gray>钥匙: <yellow>{keys}"
- "<!i><gray>左键预览 | 右键开启"
# 预览设置
preview:
enabled: true
show-chance: true
title: "<!i><dark_gray>普通宝箱预览"
# GUI动画设置
animation:
enabled: true
type: ROULETTE # ROULETTE(轮盘) / INSTANT(即时)
duration: 3 # 动画时长(秒)
title: "<!i><dark_gray>普通宝箱抽奖中..."
# 物理动画设置(宝箱上方漂浮物品)
physical-animation:
enabled: false
height: 1.5
# 粒子效果
particles:
enabled: true
type: FLAME
count: 10
# 音效
sounds:
spin:
sound: BLOCK_NOTE_BLOCK_PLING
volume: 1.0
pitch: 1.0
win:
sound: ENTITY_PLAYER_LEVELUP
volume: 1.0
pitch: 1.0
# 保底系统
pity:
enabled: true
count: 50 # 抽50次必得
rarity: rare # 最低稀有度
# 多连抽
multi-open:
enabled: true
max: 10
# 奖励列表
rewards:
diamond_sword:
display-name: "<!i><aqua>钻石剑"
rarity: rare
chance: 5.0
broadcast: true
type: item
item:
material: DIAMOND_SWORD
name: "<!i><aqua>传说之剑"
lore:
- "<!i><gray>一把传说中的剑"
enchantments:
sharpness: 5
unbreaking: 3
money_1000:
display-name: "<!i><gold>1000金币"
rarity: common
chance: 30.0
type: command
commands:
- "eco give %player% 1000"
display:
material: GOLD_INGOT
name: "<!i><gold>1000金币"
exp_500:
display-name: "<!i><green>500经验"
rarity: common
chance: 40.0
type: experience
experience:
amount: 500
type: points # points(经验点) / levels(等级)
display:
material: EXPERIENCE_BOTTLE
```
---
### 钥匙配置文件 (keys/common_key.yml)
```yaml
# 钥匙显示名称
name: "<!i><green>普通钥匙"
# 钥匙物品设置
item:
material: TRIPWIRE_HOOK
name: "<!i><green>普通钥匙"
lore:
- "<!i><gray>使用此钥匙可以打开"
- "<!i><gray>普通宝箱!"
- ""
- "<!i><yellow>右键点击宝箱使用"
custom-model-data: 0
glow: true
# 可选:自定义物品插件支持
# craftengine-id: "namespace:item_id"
# itemsadder-id: "namespace:item_id"
# oraxen-id: "item_id"
# 可以打开的宝箱列表
# 使用 "*" 或留空表示可以打开所有宝箱
allowed-crates:
- "common"
```
---
## 🎨 奖励类型说明
### 1. 物品奖励 (item)
```yaml
reward_id:
type: item
display-name: "钻石剑"
rarity: rare
chance: 5.0
broadcast: true
item:
material: DIAMOND_SWORD
name: "<!i><aqua>传说之剑"
lore:
- "<!i><gray>描述文字"
amount: 1
enchantments:
sharpness: 5
# 可选:自定义物品
# custom-model-data: 1001
# 可选:额外给予的物品
extra-items:
- material: DIAMOND
amount: 5
```
### 2. 命令奖励 (command)
```yaml
reward_id:
type: command
display-name: "1000金币"
rarity: common
chance: 30.0
commands:
- "eco give %player% 1000"
- "say %player% 获得了金币!"
display:
material: GOLD_INGOT
name: "<!i><gold>1000金币"
```
### 3. 经验奖励 (experience)
```yaml
reward_id:
type: experience
display-name: "500经验"
rarity: common
chance: 40.0
experience:
amount: 500
type: points # points(经验点) / levels(等级)
display:
material: EXPERIENCE_BOTTLE
```
---
## 🎬 动画系统
### GUI动画(轮盘动画)
在GUI界面中显示滚动效果,类似老虎机。
```yaml
animation:
enabled: true
type: ROULETTE
duration: 5 # 动画时长(秒)
```
### 物理动画(漂浮物品)
在宝箱上方显示漂浮的物品滚动效果,更加炫酷!
```yaml
physical-animation:
enabled: true
height: 1.5 # 物品漂浮高度
```
> **提示:** GUI动画和物理动画可以同时启用,会同步播放!
---
## 🎯 保底系统
保底系统确保玩家在抽取一定次数后必定获得稀有奖励。
```yaml
pity:
enabled: true
count: 50 # 抽50次触发保底
rarity: rare # 保底最低稀有度
```
当玩家抽取次数达到设定值时,系统会从指定稀有度及以上的奖励中随机抽取一个。
---
## 🔧 ModelEngine 支持
如果你安装了 ModelEngine 插件,可以为宝箱配置自定义3D模型:
```yaml
block:
material: BARRIER # 使用屏障方块隐藏原方块
modelengine:
enabled: true
model-id: "your_crate_model" # 模型ID
idle-animation: "idle" # 待机动画
open-animation: "open" # 开箱动画
open-delay: 20 # 开箱动画延迟(tick)
```
---
## ❓ 常见问题
### Q: 如何创建新的宝箱?
A: 在 `plugins/FotiaCrates/crates/` 文件夹中复制一个现有的配置文件,修改文件名和内容即可。文件名就是宝箱ID。
### Q: 如何创建新的钥匙?
A: 在 `plugins/FotiaCrates/keys/` 文件夹中创建新的 yml 文件,配置钥匙属性和可开启的宝箱列表。
### Q: 虚拟钥匙和实体钥匙有什么区别?
A:
- **虚拟钥匙**: 存储在数据库中,不占用背包空间,不会丢失
- **实体钥匙**: 以物品形式存在于背包中,可以交易、丢弃
### Q: 如何让某个宝箱只有VIP才能开?
A: 在宝箱配置文件中设置 `permission: "vip.crate.xxx"`,然后给VIP玩家这个权限。
### Q: 如何修改全息显示内容?
A: 可以在 `config.yml` 中修改全局设置,也可以在每个宝箱配置文件的 `hologram.lines` 中单独设置。
### Q: 支持哪些占位符?
A: 全息显示支持:`{crate_name}` 宝箱名称、`{crate_id}` 宝箱ID、`{keys}` 玩家钥匙数量
---
## 📝 更新日志
### v1.0.0
- 首次发布
- 支持多种开箱动画
- 支持保底系统
- 支持虚拟/实体钥匙
- 支持 ModelEngine 自定义模型
- 支持多语言
- 支持 SQLite/MySQL 数据库
---
## ⚠️ 插件有问题?加QQ群:767608887 获取帮助!⚠️
---
## 📜 许可协议
本插件为免费插件,仅供学习交流使用。
禁止二次贩卖,禁止声称为自己原创。
---
**感谢使用 FotiaCrates!如果觉得好用,请给个好评支持一下~** ⭐
[/MD]