# 一个用于使用 Minecraft 1.13 中引入的命令 UI 的 Bukkit/Spigot API
_[您需要的一切都可以在 GitHub 页面上找到](https://github.com/CommandAPI/CommandAPI)_
## 什么是 CommandAPI?
CommandAPI 提供了对 Minecraft 1.13 更新中实现的新的命令 UI 的全面支持。

想及时了解最新信息?我们现在有一个 [Discord 服务器!](https://discord.gg/G4SzSxZ)
## 功能概述
- **更好的命令** - 防止玩家运行无效命令,方便开发者
- **更好的参数** - 自动参数解析,内置验证
- **支持代理命令发送者** - 使用 /execute as ... run command 作为其他实体运行你的命令
- **支持 /execute 命令** - 允许你的命令由内置的 /execute 命令执行
- **支持 Minecraft 的函数** - 允许你的命令从 Minecraft 的函数和标签执行
- **无需 plugin.yml 注册** - 命令不再需要在 plugin.yml 文件中注册
- **无其他依赖** - 您无需将 Brigadier 导入您的项目中即可使用 CommandAPI
- **无跟踪** - CommandAPI 不会收集关于其插件的任何统计信息;您看到的就是您得到的内容!
## 参数类型转换
不再需要在命令运行后检查参数是否为整数,例如:
```java
onCommand(CommandSender sender, Command command, String label, String[] args) {
try {
int i = Integer.parseInt(args[0]);
// Do something with this number
catch (NumberFormatException e) {
// Do something with the fact this isn't a number...
}
}
```
您可以放心地相信 CommandAPI 已经推断出您想要的任何类型,可以直接跳到这里:
```java
new CommandAPICommand("mycommand")
.withArguments(new IntegerArgument("myint"))
.executes((sender, args) -> {
int i = (int) args.get("myint");
// Do something with this number
})
.register();
```
CommandAPI 提供了超过 40 种不同的参数,以满足您的需求!自动转换为 Enchantments、EntityTypes、Locations、ItemStacks、PotionEffects 等等!
## CommandSender 类型检查
您将不再需要检查您的发送者是否为玩家! CommandAPI 提供了对各种命令发送者的自动命令发送者检查:
```java
new CommandAPICommand("mycommand")
.withArguments(arguments)
.executesPlayer((player, args) -> {
player.sendMessage("Hi " + player.getDisplayName());
})
.register();
```
## 文档
最新的文档可以在 [这里](https://commandapi.jorel.dev/latest.html) 找到。相信我,您以前从未见过如此优秀的文档。
## 内置插件转换器
为您的插件的命令无法与 /execute 命令一起使用并且不知道如何编写代码而感到沮丧?CommandAPI 为您提供解决方案!借助其内置的插件命令转换系统,您可以使任何插件命令与 Minecraft 的 /execute 命令和数据包兼容!
## 仍然不信服?
它还能做什么:
- 自动解析具有范围的整数 (强制您的命令仅接受一定范围内的值)
- 处理整数和浮点坐标,以及使用 ~ 符号的相对坐标
- 解析原始 JSON 并将其直接转换为 BaseComponent[]
- 解析在线玩家,并根据谁在线提供建议
- 创建自定义参数,将字符串解析为自定义定义的对象
- 将权限应用于特定参数 - 您需要权限才能查看建议的参数以及运行它
- 使未使用 CommandAPI 编写的插件与 /execute 命令兼容
- 像您可以在命令方块中一样处理命令的结果和成功
- 根据用户已经输入到命令提示符中的内容设置上下文感知的建议
还需要我多说吗?