Spigot plugin Command Blockieren?
Ich habe versucht, z.B. /pl Commands zu Blockieren
Mein Code:
@EventHandler
private void onCommandPreProcess(PlayerCommandPreprocessEvent e) {
Player p = e.getPlayer();
if (!Rang.isTeam(p)) {
if (e.getMessage().toLowerCase().contains("pl".toLowerCase())) {
e.setCancelled(true);
}
}
}
Nu wird aber der COMMAND trotzdem noch ausgeführt. Das ist das erste mal, dass ich mit dem Event arbeite. Kann mir da Vieleicht wer helfen?
LG
2 Antworten

@EventHandler
private void onCommandPreProcess(PlayerCommandPreprocessEvent e) {
Player p = e.getPlayer();
if(!Rang.isTeam(p)) {
if(e.getMessage().split(" ")[0].equalsIgnoreCase("/pl")) {
e.setCancelled(true);
}
}
}
Die Antwort ist zwar bisschen spät, aber für die anderen die das lesen:
Diese Methode sollte auf jeden Fall funktionieren.

Erstmal ist das ".toLowerCase()" nach "pl" unnötig, da "pl" ja schon kleingeschrieben ist ^^. Hast du das Event registriert? Wenn ja, prüfe doch z.B. mit einer Broadcast Nachricht ob der Code überhaupt bis zum setCancelled(true); kommt?


Hehehehe Jaguut. Trotzdem ich habe Jetzt
if(e.isCancelled()){
p.sendMessage("1");
}else{
p.sendMessage("2");
}
Genutzt, es wird auch 1 gesendet.


Habe das Jetzt testweise so:
@EventHandler
private void onCommandPreProcess(PlayerCommandPreprocessEvent e) {
Player p = e.getPlayer();
if (!Rang.isTeam(p)) {
if (e.getMessage().toLowerCase().contains("pl")) {
if (!e.isCancelled()) {
p.sendMessage("0");
} else {
p.sendMessage("0.5");
}
e.setCancelled(true);
if (e.isCancelled()) {
p.sendMessage("1");
} else {
p.sendMessage("2");
}
}
}
}
Omg die Formatierung ._.




Scheint irgendwie ein allgemeines Problem zu sein, sonst entzieh den Usern, welche nicht im Team sind, die Permission bukkit.command.plugins

Ich wollte aber auch Comamnds wie /version /bukkit:pl /? /aac etc. Blockerien. Dafür gibt es keine Permissions


1. toLowerCase ist wichtig, da man sonnst einfach /PL schreiben könnte.
2. Ist Regsitriert
3. Versuche ich eben.
EDIT : Ist gecancelt!