我的世界Bukkit插件开发(4)——命令

本文详细介绍了在Minecraft Bukkit插件开发中如何创建和管理命令,包括onCommand()方法的使用、判断命令发送者、处理自变量、检查玩家在线状态、权限设置以及配置权限。通过实例代码演示了CommandExecutor类的应用,帮助开发者更好地理解和实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之所以隔了这么长时间才写这篇文章,是因为这几天有事,加上最近有一个编程问题困扰了我好久,我便放弃了开发插件,想着出于责任,还是把文章写完吧。即使自己写教程,也不敢自称老师,我还是学生,在学习java这条路上,我一直都是学生,有问题一起切磋交流。

目录

命令基础

onCommand()方法

一个判断sender的方法:

使用独立的 CommandExecutor class

判断发出命令的是玩家:

判断玩家输入的自变量个数:

在获取玩家之前先检测他们是否在线:

权限:

 配置权限:


命令基础

onCommand()方法

现在你已经知道如何注册一个事件并做出响应,但是如果你只是想要在命令输入之后做出响应呢? 你可以使用onCommand()方法
这个代码的作用是当玩家输入“/”时,监听该操作并执行相关语句"/" . 举个例子来说.输入 "/do something" 将会执行onCommand()方法
此种情况下,因为没有特定的行为被编程,所以并不会发生任何事情。

请避免使用和bukkit所提供的指令重名的指令
例如.指令"give"已经被好几个插件使用了, 如果你执行了另外一个"give"指令, 你的插件将会和这些插件冲突。
你必须在插件的"plugin.yml"注册你的指令 否则这个方法将不会被触发。
onCommand()方法必须返回一个布尔值(true或false)。 
如果返回值是true,你不会看到什么明显的事情发生。 
但如果返回值是false,则会返回你的plugin.yml里的'usage:property'然后发送给命令使用者. 

当使用 onCommand方法时, 你需要填写4个参数.
CommandSender sender - 发送命令的对象
Command cmd - 被执行的指令  

String commandLabel - 被执行指令的别名

String[] args - 该指令的自变量数组。

例如.指令 /hello abc def 中, abc 会被存放进args[0]中, def 被存放进args[1]中。

代码示例:

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    // 如果这里注册了多条命令则使用
    if (command.equalsIgnoreCase("basic")) {
        // 你要写的代码
        return true;
    } //如果以上内容成功执行,则返回true 
    // 这里的return false则是返回指令的usage的信息(如果有)
    // 如果执行失败,则返回false.
    return false;
}

和之前一样,上面必须加:

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;

其中equalsIgnoreCase是忽略大小写,除了这里要这这个代码,还要在plugin.yml写入你的指令:

commands:
   basic:
      aliases: b
      description: This is a demo command.
      usage: /<command> [player]
      permission: <plugin name>.basic
      permission-message: You don't have <permission>
  • basic - 指令名称
  • aliases - 指令别名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lemon_sjdk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值