【问题标题】:Minecraft Spigot Plugin - StringListsMinecraft Spigot 插件 - StringLists
【发布时间】:2021-03-14 20:53:21
【问题描述】:
          List<String> bCmds = getConfig().getStringList("komendy-sprawdzanie");

           
          for (String bCmd : bCmds) {
              if(command != bCmd) {       
                  event.setCancelled(true);
                  player.sendTitle("§8[§bEasy§9Check§8]", "Jestes sprawdzany - Nie uzywaj komend", 5, 30, 5);
              }
              
          }
        }   
- /reload
- rl
- /rl

为什么它不起作用? 它阻止每个命令。 我希望它阻止除配置中的命令之外的所有命令

【问题讨论】:

  • 请帮助-_- idk

标签: java yaml minecraft


【解决方案1】:

想想你写了什么以及发生了什么。

  1. 加载列表,例如["blocked command", "blockend command 2"]
  2. 将列表中的每个元素与输入的命令non blocked command进行比较。
  3. non blocked command 不是 blocked command -> 阻止它。

让我们重新考虑一下您的要求:您想阻止不在列表中的所有命令。那么,您是否想要一个黑名单?这很容易:

for (String blocked : blockedList) {
   if (command == blocked) {
       event.setCancelled(true);
       break; // <- found a blocked one, no need to continue the search
   }
}

编辑

也许您不想检查是否等于...也许您也想检查参数。 在这种情况下,只需比较命令的开头即可。

blocked(或任何其他命令,只是命令)放入您的列表中。然后检查开始。

for (String blocked : blockedList) {
   if (command.startsWith(blocked) {
      event.setCancelled(true);
      break;
   }
}

【讨论】:

  • 它什么都不做;c
  • komendy-sprawdzanie: - /reload - rl - /rl
  • 但前提是我在字符串列表中有一个命令
  • 您的代码看起来如何?您将哪些数据放入列表中?输入了什么命令?
猜你喜欢
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多