Bukkit Programmieren,führt Befehl doppelt aus?
Hey
Ich programmiere grade ein Plugin und hab euch mal was geschrieben um mein Problem zu zeigen:
//
public class InteractEvent implements Listener{
@EventHandler
public void onInteract(PlayerInteractEvent e) {
Player p = e.getPlayer();
if(e.getAction().equals(Action.RIGHT_CLICK_AIR)) {
p.sendMessage(" lo");
if(e.getItem() != null && e.getItem().getType().equals(Material.STICK)){
p.sendMessage("Hey");
return;
}
}
}
}
//
Hier wird dem Spieler jetzt gesendet
als erstes:"lo"
als zweites:"hey"
und dann:"lo"
Ich möchte lo aber auch nur einmal ausgegeben haben.
Warum wird dem Spieler jetzt zweimal lo gesendet,und was kann ich dagegen tun?
Danke schonmal.
Mfg.
4 Antworten
Du musst wohl überprüfen, mit welcher Hand geklickt wurde:
if (event.getHand().equals(EquipmentSlot.HAND)) { // Haupthand
// ...
}
Danke ich hab jetzt
if(e.getHand().equals(EquipmentSlot.HAND) && e.getAction().equals(Action.RIGHT_CLICK_AIR)) {
p.sendMessage(" lo");
Und es klappt.
Zuerst einmal würde ich doch davon ausgehen, dass das Event RIGHT_CLICK_AIR zweimal ausgelöst wird.
Dein Code besteht nur aus den gegebenen Zeilen? Gibst du noch irgendwo anders diese Texte aus? Ansonsten solltest du dich auf die Frage fokusieren, in welchen Fällen ein PlayerInteractEvent getriggert werden kann.
Hallo KartoffelYT,
Könnte es sein, das du dass Event anderweitig im Code aufrufst?
Mfg
TOminerTV
PS: Wenn es nicht klappt schau doch mal auf unserem TS vorbei:
PandoraPvP.spdns.de
Da könnt ich dir nochmal genauer helfen.
ich könnte eher heut abend muss meinen eltern heut helfen.
Ja, musste gucken wie es passt, musst dich halt nur bemerkbar machen und dann move ich dich hoch.
Danke werd ich machen,ohne das return wird auch hey zweimal ausgegeben
Ja, habe mir return nochmal angeguckt und meine Antwort aktualisiert, vielleicht liegt es ja daran
Also Leute,
Danke für eure schnelle Hilfe,
Die Lösung wäre gewesen bei meiner if abfrage bei right click air auch die Hand abzufragen sprich:
if(e.getHand().equals(EquipmentSlot.HAND) && e.getAction().equals(Action.RIGHT_CLICK_AIR)) {
p.sendMessage(" lo");
Danke an der Stelle an Scriptm, ihr habt natürlich alle sehr geholfen.
wenn ich aber mit einem anderen Material rechts klick mache kommt nur 1mal lo