- 版权类型
- 原创
- 插件中文名称
- 自定义指令
- 插件英文名称
- custom-commands
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- 语言支持
- 中文(简体)
- 适配版本(Java)
- 1.21
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
[MD]
# CustomCommands - Minecraft 自定义命令插件
一个强大的 Minecraft Paper/Spigot 插件,允许服务器管理员在配置文件中创建自定义命令,将多个指令整合成一条指令执行。支持热重载、参数传递、权限控制等高级功能。
## ✨ 功能特性
- 🎯 **自定义命令** - 在配置文件中轻松创建自定义命令
- 🔗 **命令整合** - 将多个 Minecraft 命令整合成一条指令
- 🔄 **热重载** - 支持在线重新加载配置,无需重启服务器
- 📝 **参数支持** - 支持命令参数传递和占位符替换
- 🔗 **PAPI集成** - 完整支持PlaceholderAPI变量系统
- 🔐 **权限控制** - 细粒度的权限管理系统
- ⚡ **动态注册** - 自动注册配置文件中的命令
- 🎨 **颜色支持** - 支持 Minecraft 颜色代码
- 📋 **命令管理** - 内置命令列表和状态查看
## 📋 系统要求
- **Minecraft版本**: 1.16.5+
- **服务端**: Paper/Spigot
- **Java版本**: 8+
- **可选依赖**: PlaceholderAPI(用于高级变量支持)
## 🚀 安装方法
1. 下载插件 jar 文件
2. 将文件放入服务器的 `plugins` 文件夹
3. **(可选)** 安装 PlaceholderAPI 插件以启用高级变量支持
4. 重启服务器或使用 `/reload` 命令
5. 插件会自动生成默认配置文件
6. 编辑 `plugins/CustomCommands/config.yml` 配置你的自定义命令
[ATTACH type="full" size="212x201"]104721[/ATTACH]
### PlaceholderAPI 安装(可选)
如果你想使用 PlaceholderAPI 变量(如 `%player_level%`、`%server_online%` 等),请按以下步骤安装:
1. 下载 [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) 插件
2. 将 PlaceholderAPI.jar 放入 `plugins` 文件夹
3. 重启服务器
4. 使用 `/papi ecloud download <扩展名>` 下载所需的扩展
5. 使用 `/papi reload` 重新加载扩展
> 💡 **提示**: 即使没有安装 PlaceholderAPI,插件也能正常工作,只是无法使用 PAPI 变量。
## ⚙️ 配置说明
配置文件位置:`plugins/CustomCommands/config.yml`
### 基础配置格式
```yaml
custom-commands:
命令名称:
enabled: true/false # 是否启用此命令
commands: # 要执行的命令列表
- "命令1"
- "命令2"
- "命令3"
```
### 占位符说明
#### 基础占位符
- `{player}` - 执行命令的玩家名称
- `{args}` - 所有参数(用空格连接)
- `{arg0}`, `{arg1}`, `{arg2}...` - 第0、1、2...个参数
#### PlaceholderAPI变量
本插件完全支持PlaceholderAPI变量,使用 `%变量名%` 格式:
**玩家信息变量:**
- `%player_name%` - 玩家名称
- `%player_displayname%` - 玩家显示名
- `%player_level%` - 玩家等级
- `%player_exp%` - 玩家经验值
- `%player_health%` - 玩家当前生命值
- `%player_max_health%` - 玩家最大生命值
- `%player_food_level%` - 玩家饥饿值
- `%player_gamemode%` - 玩家游戏模式
- `%player_world%` - 玩家所在世界
- `%player_x%`, `%player_y%`, `%player_z%` - 玩家坐标
**服务器信息变量:**
- `%server_online%` - 在线玩家数量
- `%server_max_players%` - 最大玩家数量
- `%server_time_24%` - 服务器时间(24小时制)
**世界信息变量:**
- `%world_time%` - 世界游戏时间
- `%world_weather%` - 世界天气状态
- `%world_is_raining%` - 是否正在下雨
**经济变量(需要Vault插件):**
- `%vault_eco_balance%` - 玩家余额
- `%vault_eco_balance_formatted%` - 格式化的玩家余额
> 💡 **提示**: 更多PAPI变量请查看 [PlaceholderAPI官方文档](https://github.com/PlaceholderAPI/PlaceholderAPI/wiki/Placeholders)
### 配置示例
#### 示例1:新手礼包命令
```yaml
kit:
enabled: true
commands:
- "give {player} minecraft:iron_sword 1"
- "give {player} minecraft:bread 16"
- "tell {player} §a欢迎来到服务器!这是你的新手礼包!"
```
#### 示例2:带参数的命令
```yaml
giveitem:
enabled: true
commands:
- "give {player} {arg0} {arg1}"
- "tell {player} §a已给予你 {arg1} 个 {arg0}!"
```
使用方法:`/giveitem diamond 64`
#### 示例3:传送到出生点
```yaml
spawn:
enabled: true
commands:
- "tp {player} 0 64 0"
- "tell {player} §b已将你传送到出生点!"
- "playsound minecraft:entity.enderman.teleport player {player}"
```
#### 示例4:玩家状态查询(使用PAPI变量)
```yaml
status:
enabled: true
commands:
- "tell {player} §6=== 你的状态 ==="
- "tell {player} §e等级: §f%player_level% (经验: %player_exp%)"
- "tell {player} §e生命值: §f%player_health%/%player_max_health%"
- "tell {player} §e坐标: §f%player_x%, %player_y%, %player_z%"
- "tell {player} §e世界: §f%player_world%"
- "tell {player} §6=================="
```
#### 示例5:服务器信息(使用PAPI变量)
```yaml
serverinfo:
enabled: true
commands:
- "tell {player} §6=== 服务器信息 ==="
- "tell {player} §e在线玩家: §f%server_online%/%server_max_players%"
- "tell {player} §e当前时间: §f%server_time_24%"
- "tell {player} §e世界天气: §f%world_weather%"
- "tell {player} §6=================="
```
## 🎮 使用方法
### 管理员命令
- `/customcommands` 或 `/cc` - 显示插件信息
- `/customcommands reload` - 重新加载配置文件
- `/customcommands list` - 查看所有自定义命令列表
### 自定义命令
根据配置文件中定义的命令名称使用,例如:
- `/kit` - 获取新手礼包
- `/spawn` - 传送到出生点
- `/heal` - 完全治疗
- `/giveitem diamond 64` - 给予64个钻石
## 🔐 权限系统
### 管理权限
- `customcommands.admin` - 插件管理权限(默认:OP)
- `customcommands.reload` - 重新加载配置权限(默认:OP)
- `customcommands.list` - 查看命令列表权限(默认:OP)
### 使用权限
- `customcommands.use.*` - 使用所有自定义命令(默认:所有玩家)
- `customcommands.use.<命令名>` - 使用特定自定义命令
### 权限配置示例
```yaml
# 给予玩家使用特定命令的权限
permissions:
- customcommands.use.kit
- customcommands.use.spawn
- customcommands.use.heal
```
## 🔧 高级功能
### 1. 条件执行
可以在命令中使用条件判断(需要配合其他插件):
```yaml
conditional_heal:
enabled: true
commands:
- "execute if entity {player}[nbt={Health:1.0f..10.0f}] run effect give {player} minecraft:instant_health 1 10"
- "tell {player} §c你的生命值太低了,已为你治疗!"
```
### 2. 延迟执行
```yaml
delayed_command:
enabled: true
commands:
- "tell {player} §e3秒后将传送你到出生点..."
- "schedule function mypack:teleport_player 60t"
```
### 3. 多玩家命令
```yaml
broadcast:
enabled: true
commands:
- "say §c[公告] §f{player} 说: {args}"
- "playsound minecraft:block.note_block.pling master @a"
```
## 🛠️ 开发信息
- **开发者**: 9C2211D
- **版本**: 1.0-SNAPSHOT
- **API 版本**: 1.16+
- **构建工具**: Gradle
- **依赖**: Paper API 1.16.5
## 📦 构建项目
```bash
# 克隆项目
git clone <repository-url>
cd custom-commands
# 构建插件
./gradlew build
# 运行测试服务器
./gradlew runServer
```
## 🔍 故障排除
### 常见问题
**Q: 自定义命令不工作?**
A: 检查以下几点:
1. 确保命令在配置文件中 `enabled: true`
2. 检查玩家是否有相应权限
3. 查看控制台是否有错误信息
4. 使用 `/customcommands list` 确认命令已加载
**Q: 配置文件修改后不生效?**
A: 使用 `/customcommands reload` 重新加载配置文件
**Q: 权限设置不正确?**
A: 确保权限插件正确配置了 `customcommands.use.*` 或具体的命令权限
### 调试模式
在配置文件中添加以下内容启用调试:
```yaml
debug: true
```
## 📝 更新日志
### v1.0.0
- ✅ 初始版本发布
- ✅ 支持自定义命令创建
- ✅ 支持热重载配置
- ✅ 支持参数传递
- ✅ 支持权限控制
- ✅ 支持动态命令注册
## 🤝 贡献指南
欢迎提交 Issue 和 Pull Request!
1. Fork 本项目
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建 Pull Request
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
## 🎯 未来计划
- [ ] 支持命令冷却时间
- [ ] 支持命令使用次数限制
- [ ] 添加 GUI 配置界面
- [ ] 支持数据库存储
- [ ] 添加命令执行统计
- [ ] 支持条件执行
- [ ] 添加命令别名系统
---
**如果这个插件对你有帮助,请给个 ⭐ Star!**
## 📞 联系方式
- GitHub Issues: [提交问题](https://github.com/9C2211D/custom-commands/issues)
- QQ群: 159998932
[/MD]