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ď č. 1Registrované 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
}