【问题标题】:Java Bukkit/Spigot - Block Specified CommandsJava Bukkit/Spigot - 块指定命令
【发布时间】:2016-11-14 00:23:15
【问题描述】:

我正在尝试制作一个插件,它必须阻止由配置设置的指定命令。我做了这个,但它不会阻止任何命令。

代码:

@EventHandler(priority = EventPriority.HIGHEST)
  public void onPreprocess(PlayerCommandPreprocessEvent event)
  {
    Player player = event.getPlayer();
    String command = event.getMessage();
    List<String> bCmds = this.plugin.cfg.getStringList("blocked-commands");

    for (String bCmd : bCmds) 
    {
        if(command.equalsIgnoreCase(bCmd))
        {
            event.setCancelled(true);
        }
    }
  }

配置:

blocked-commands:
- /pl
- /op
- /sp
- /gravityblock

PS:我试过用:

String command = event.getMessage().subString(1);

感谢您的帮助... :)

【问题讨论】:

    标签: java plugins server minecraft bukkit


    【解决方案1】:

    Bukkit's wiiki 所述,优先级按以下顺序调用:

    • EventPriority.LOWEST
    • EventPriority.LOW
    • EventPriority.NORMAL
    • EventPriority.HIGH
    • EventPriority.HIGHEST
    • EventPriority.MONITOR

    也许您可以尝试使用最低优先级,以便在处理命令之前取消事件。

    我也相信命令可能有参数,所以它可能不等于提供的字符串,你也应该尝试

    String command = event.getMessage();
    
    
    if (command.toLowerCase().startsWith("/command") ) {
        //cancel
    }
    

    【讨论】:

      【解决方案2】:

      已注册的活动?实现了监听器?

      此外,您的代码将无法与命令中的其他参数一起使用。 如果它包含空格,用“”分割它并获取第一个元素以获取命令

      if (cmd.contains(" ")) cmd = cmd.split(" ")[0];

      【讨论】:

      • Omg...我还没有注册活动 xDDDD 感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多