2016-04-20 12 views
0

Ich versuche derzeit, ein Bukkit Plugin arbeiten zu lassen. Ich bin jedes Mal auf dieses Problem gestoßen und habe mich gefragt, ob jemand weiß, wie man es beheben kann. Ich habe fast jede Lösung ausprobiert, die man googlen kann, also hoffentlich kann jemand etwas Licht teilen.@EventHandler läuft nie für Bukkit Plugin

Keines der Spielerereignisse funktioniert jemals. Wenn ich etwas mit einem @EventHandler vorn mache, läuft es einfach nicht. Hier ist ein Beispiel:

package me.tgb20; 
import org.bukkit.entity.Player; 
import org.bukkit.event.EventHandler; 
import org.bukkit.event.Listener; 
import org.bukkit.event.player.PlayerJoinEvent; 
import org.bukkit.plugin.java.JavaPlugin; 

public class pluginmain extends JavaPlugin implements Listener{ 

    public void OnEnable(){ 
     this.getServer().getPluginManager().registerEvents(this, this); 
    } 

    public void OnDisable(){ 
    } 

    @EventHandler 
    public void OnJoin(PlayerJoinEvent e){ 
     Player p = e.getPlayer(); 
     p.sendMessage("Hello"); 
    } 
} 

Wenn diese auf dem Server ausgeführt, es sieht nie, dass ein Spieler das Spiel beigetreten.

Antwort

1

Ihr Code wird funktionieren, wenn Sie die Namen der Methoden onEnable (und onDisable) nicht groß schreiben. Aktivieren und Aktivieren Sie Aktivieren Sie zwei verschiedene Methoden, da Java Groß- und Kleinschreibung unterscheidet, und da Sie versuchen, bestimmte Methoden in der JavaPlugin-Superklasse zu überschreiben, müssen Sie sie genau so buchstabieren.

Gemeinsame Konvention ist, soweit ich weiß, dass Sie Ihre Methoden trotzdem mit Kleinbuchstaben starten. Die Annotation @Override ist sehr hilfreich beim Auffinden dieser Art von Fehlern, weil sie dem Compiler mitteilt, dass Sie eine bestehende Methode überschreiben wollen, und wenn diese Methode nicht existiert (zB wenn Sie den Namen falsch eingegeben oder andere Parameter hinzugefügt haben), es wird Sie warnen (es lässt auch jeden, der den Code liest, sofort wissen, dass Sie eine bestehende Methode überschreiben oder eine Schnittstelle implementieren).

(Ich kopierte diesen Text von einem anderen answer of mine, wo jemand ein sehr ähnliches Problem hatte, obwohl ich glaube nicht, dass diese Frage als ein Duplikat zählt).