/ / Java Bukkit / Spigot - blokované špecifikované príkazy - java, plugins, server, minecraft, bukkit

Java Bukkit / Spigot - blokované špecifikované príkazy - java, plugins, server, minecraft, bukkit

Pokúšam sa vytvoriť doplnok, musí zablokovať zadané príkazy nastavené konfiguráciou. "" Urobil som to, ale nezablokoval žiadny príkaz.

kód:

@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);
}
}
}

config:

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

PS: Pokúsil som sa použiť:

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

Vďaka za pomoc... :)

odpovede:

0 pre odpoveď č. 1

Registrované udalosti? implementované listner?

Aj váš kód nebude fungovať s ďalšími argumentmi v príkaze. Ak obsahuje medzery, rozdeľte ho "" a získajte prvý prvok, aby ste dostali príkaz

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


0 pre odpoveď č. 2

Ako uvádza Bukkitova wiki, priority sa nazývajú v nasledujúcom poradí:

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

Možno by ste sa mohli pokúsiť použiť najnižšiu prioritu, takže udalosť sa zruší predtým, ako sa príkaz spracuje.

Som tiež presvedčený, že príkaz môže mať argumenty, takže sa nemusí zhodovať s poskytnutým reťazcom, mali by ste sa tiež pokúsiť

String command = event.getMessage();


if (command.toLowerCase().startsWith("/command") ) {
//cancel
}