# SkyeCrates
一个为 Paper/Spigot 服务器添加可自定义宝箱的 Minecraft 插件,宝箱包含原生的 Minecraft 掉落表和粒子效果。
## 特性
- **原生 Minecraft 掉落表**: 完全支持 Minecraft 的掉落表格式,与 [Misode 的掉落表生成器](https://misode.github.io/loot-table/) 兼容
- **粒子效果**: 每个宝箱类型都支持自定义粒子效果,可完全控制粒子行为
- **易于配置**: 每个宝箱类型都有 YAML 配置文件
- **权限**: 内置的权限系统,用于管理管理员和用户
- **命令**: 用于管理宝箱的完整命令系统
- **Paper API**: 专为 Paper 1.21.4+ 打造,采用现代 Java 特性
## 要求
- Minecraft 1.21.4+
- Paper 服务器(推荐)或 Spigot
- Java 21+
## 安装
1. 下载最新版本
2. 将 JAR 文件放置在服务器的 `plugins` 文件夹中
3. 重启服务器
4. 在 `plugins/SkyeCrates/crates/` 中配置你的宝箱
## 配置
每个宝箱都在 `plugins/SkyeCrates/crates/` 文件夹中的独立 YAML 文件中进行配置。
### 宝箱配置格式
```yaml
name: <宝箱名称>
particles:
type: <粒子类型> # Bukkit 粒子枚举值
deltaX: # X 轴上的粒子扩散距离
deltaY: # Y 轴上的粒子扩散距离
deltaZ: # Z 轴上的粒子扩散距离
count: <粒子数量> # 每个生成时的粒子数量
speed: <粒子速度> # 粒子的速度
loot: |
<粘贴的掉落表 JSON>
```
### 示例宝箱配置
```yaml
# 示例宝箱配置
name: "示例宝箱"
# 粒子配置
particles:
type: "FLAME" # 粒子类型 (参见 Bukkit 粒子枚举)
deltaX: 0.5 # X 轴上的粒子扩散距离
deltaY: 0.5 # Y 轴上的粒子扩散距离
deltaZ: 0.5 # Z 轴上的粒子扩散距离
count: 15 # 每个生成时的粒子数量
speed: 0.1 # 粒子的速度
# 掉落表 (来自 Misode 的掉落表生成器的 JSON 格式)
loot: |
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:diamond",
"weight": 1,
"functions": [
{
"function": "minecraft:set_count",
"count": {
"min": 1,
"max": 3
}
}
]
}
]
}
]
}
```
## 命令
- `/skyecrates reload` - 重新加载插件配置
- `/skyecrates list` - 列出所有可用的宝箱
- `/skyecrates give <玩家> <宝箱> [数量]` - 将一个宝箱物品给予玩家
- `/skyecrates place <宝箱>` - 在你的目标位置放置一个宝箱
- `/skyecrates remove` - 移除你正在观察的宝箱
## 权限
- `skyecrates.admin` - 访问所有 SkyeCrates 命令 (默认: op)
- `skyecrates.use` - 允许使用宝箱 (默认: true)
## 使用 Misode 的掉落表生成器
1. 访问 [Misode 的掉落表生成器](https://misode.github.io/loot-table/)
2. 使用可视化界面创建你想要的掉落表
3. 复制生成的 JSON
4. 将其直接粘贴到宝箱配置文件的 `loot:` 部分
### 支持的掉落表特性
- **多个池**,具有不同的投骰次数
- **加权条目**,用于物品稀有度
- **函数**,如 `set_count`、`set_damage`、`enchant_with_levels`
- **条件**,用于高级掉落逻辑
- **所有原版物品**及其属性
## 示例配置
### 基本宝箱
一个简单的宝箱,保证掉落一颗钻石:
```yaml
name: "基本宝箱"
particles:
type: "FLAME"
deltaX: 0.5
deltaY: 0.5
deltaZ: 0.5
count: 10
speed: 0.1
loot: |
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:diamond"
}
]
}
]
}
```
### 寻宝宝箱
一个高级宝箱,包含多个物品和不同的稀有度:
```yaml
name: "寻宝宝箱"
particles:
type: "VILLAGER_HAPPY"
deltaX: 1.0
deltaY: 0.8
deltaZ: 1.0
count: 25
speed: 0.05
loot: |
{
"type": "minecraft:block",
"pools": [
{
"rolls": {
"min": 2,
"max": 4
},
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:diamond",
"weight": 5
},
{
"type": "minecraft:item",
"name": "minecraft:emerald",
"weight": 8,
"functions": [
{
"function": "minecraft:set_count",
"count": {
"min": 2,
"max": 5
}
}
]
}
]
}
]
}
```
## 从源代码构建
```bash
./gradlew build
```
编译后的 JAR 将位于 `build/libs/` 目录中