Events mithilfe der SpigotAPI erstellen

  • Eine kleine Erklärung wie man mithilfe der SpigotAPi eigene Events erstellen kann.

    Hey,


    ich möchte versuchen alles relativ kurz zu halten, und alles einigermaßen verständlich zu verfassen.



    Ich mache das ganze jetzt am Beispiel meiner CoinAPI.

    Zum Anfang erstellst du eine Klasse, in meinem Fall heißt diese PlayerCoinsAmountUpdateEvent , diese Klasse muss von Event erben, damit sehe das ganze so aus:


    Java
    1. public class PlayerCoinsAmountUpdateEvent extends Event {
    2. }

    Bisher relativ simpel, jetzt folgen die HandlerList (diese muss static sein), was diese genau bringen kann man hier nachlesen. Mit dieser HandlerList sieht das ganze so aus:



    Das wäre erstmal der Grundaufbau. Jetzt kann man das ganze natürlich weiter ausbauen, ich in meinem Event benötige ja rein theoretisch nur einen Spieler und den neuen Wert (des Geldes) und füge die Funktion setCancelled ein.


    Dazu erstellen wir Variablen und den Konstruktor der Klasse und übergeben in ihm alle Werte die wichtig sind, dazu noch die Getter & Setter:



    Also das wäre mein Event. Jetzt bringt es mir relativ wenig, da es nie aufgerufen wird. Ein Event aufzurufen (zu "callen") geht relativ einfach, als erstes instanzieren wir die Klasse einmal:


    Java
    1. PlayerCoinsAmountUpdateEvent e = new PlayerCoinsAmountUpdateEvent(newAmount, player);

    Nun callen wir es: Bukkit.getServer().getPluginManager().callEvent(e);. Das geht simpel mit dem PluginManager.

    Und da wir jetzt noch die Funktion setCancelled eingebaut haben, müssen wir natürlich abfragen ob es "gecancelled" ist: if(e.isCancelled()).


    Meine ganze Methode sehe dann so aus:


    Java
    1. public void set(int newAmount) {
    2. PlayerCoinsAmountUpdateEvent event = new PlayerCoinsAmountUpdateEvent(newAmount, player);
    3. Bukkit.getServer().getPluginManager().callEvent(event);
    4. if(!event.isCancelled()) {
    5. coins = newAmount;
    6. }
    7. }


    Das war es damit eigentlich schon. Nun kann man noch das Event aufrufen, ein kleines beispiel dazu wäre dass hier (Ich denke dazu muss ich eigentlich nichts erklären, mache es aber dennoch):



    Also, hier sieht man, dass ich direkt auf getPlayer und getNewAmount zugreifen kann was wir auch hinzugefügt haben. Jetzt frage ich ab, ob ich Geld bekomme und cancel es, da ich kein geld bekommen darf :c


    Ansonsten verwende ich die Variable amount um anzugeben wie viel Geld ich habe, nachdem ich neues Geld bekam.


    Ich hoffe ich konnte euch Events näher bringen und bedanke mich für´s lesen.




    MfG

Teilen

Kommentare 14

  • Es wäre schöner, wenn du noch Cancellable in deine Klasse implementierst, anstatt selber einfach die Methoden reinzuschreiben.

  • Du hast die Java-Konventions leider nicht eingehalten :(

    • Es sollen ja auch nur Beispiele sein. Und ein Beispiel nach java-Konventionen zu beurteilen finde ich absurd.

    • Ich dachte, dass du die Konventions generell nicht einhalten würdest. Ich würde aber auch in einem Beispiel, aufgrund, dass Neulinge dies dann auch schon richtig machen, auch die Konventions einhalten.

    • Dieses Tutorial ist ja nicht für Neulinge geeignet, deswegen fängt man erst mit Java an :)

    • Na und? Trotzdem sollte man doch selbst Konventionen einhalten. Hinterher denkt noch einer, dass die Variablenbezeichnungen von dir richtig sind. Gerade Beispiele sollte man richtig bezeichnen, sonst versteht's doch keiner? Stell' mal vor du schreibst eine Simulation (im Sinne von Mathematik, Biologie usw.) und alle Variablen sind einbuchstabig? Ich glaube du rennst dann weg. :D

    • Is ja gut, ich werde es noch ändern. Meine Güte.