白色的小熊
本帖最后由 白色的小熊 于 2021-8-17 15:03 编辑

源代码在这里:

  1. import org.bukkit.command.Command;
  2. import org.bukkit.command.CommandExecutor;
  3. import org.bukkit.command.CommandSender;
  4. import org.bukkit.event.Listener;
  5. import org.bukkit.event.player.AsyncPlayerChatEvent;
  6. import org.bukkit.plugin.Plugin;

  7. public class OnCommand implements CommandExecutor, Listener {

  8.     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
  9.         if (cmd.toString().equals("chat")) {
  10.             if (args[0].equals("close")) {
  11.                 AsyncPlayerChatEvent.getHandlerList().unregister(this);
  12.                 sender.sendMessage("已关闭聊天功能");
  13.             }
  14.             if (args.length == 1) {
  15.                 return false;
  16.             }
  17.             if (args[0].equals("open")) {
  18.                 sender.getServer().getPluginManager().registerEvents(this, (Plugin) this);
  19.                 sender.sendMessage("已开启聊天功能");
  20.             }
  21.             return true;
  22.         }
  23.         return false;
  24.     }
  25. }
复制代码


你们说的错误我已经改了,现在的问题就是命令参数的判断,虽然有两个命令,实质上是一个命令,然后还有一个问题,就是怎么在其他类中注销主类的事件监听器

Recarside979
额,完全看不懂呢

ARSpark
toString 不应该在这里使用
要使用 cmd.getName().equalsIgnoreCase("chat")

白色的小熊
本帖最后由 白色的小熊 于 2021-8-17 12:00 编辑
RarityEG 发表于 2021-8-17 11:24
toString 不应该在这里使用
要使用 cmd.getName().equalsIgnoreCase("chat")

这样的话就只能实现/chat close而不能实现/chat open,怎么在另一个类里关闭主类的事件监听器?
不管是/chat open还是/chat close实质上都是一个指令,两个不同的参数

Promenade69
多试几次吧

白色的小熊

今天怎么这么多灌水的?不会你来回复啥?

liqiang999
sdgavfdhieavfc

结冰的离季
我在想 if (cmd.toString().equals("chat"))  有什么意义,setExcutor的时候不是指定了命令了吗,为什么还要判断一次,还有你判长为什么在中间.

下一页 最后一页