NPC API

  • Hallo ich Arbeite Grade mit der Citizens API und woll 2 DInge Fragen



    ist das Normal wenn so etwas in der Console ist?

    Code
    Loaded class net.citizensnpcs.api.event.NPCClickEvent from Citizens v2.0.27-SNAPSHOT (build 2191) which is not a depend, softdepend or loadbefore of this plugin.



    und kann ich so denn NPC namen Abfragen?

    Code
     if (e.getNPC().equals("Test")){
    }
  • 1. Bitte lese deine Texte nochmal Korrektur bevor du diese abschickst.

    2. Bitte informiere die über die JavaDocs von der API über deren Verwendung (Es ist bereits der zweite Thread den du zu diesem Thema Citizens API geöffnet hast und beide male sind es banale/simple Sachen)


    Aber nun gut die Meldung in der Konsole taucht auf, wenn dein Plugin vor dem Citizens Plugin geladen wird.

    Das kannst du ändern indem du in deiner plugin.yml sagt, dass du das Citizens Plugin für dein Plugin benötigst.

    Füge einfach die Zeile: depend: [Citizens] ein.


    Bei der zweiten Frage verweise ich auf die JavaDocs von Citizens. https://jd.citizensnpcs.co

  • kann ich Jetzt noch wissen wie ich das Ganze in meiner Main eintragen soll das geht nicht mehr so wie ich es immer mache der WIll immer das ich etwas in die Klammer einsetze


    Code
     Bukkit.getPluginManager().registerEvents(new NPCClickEvent(),this);
  • In welche Klammer?


    Und schick mal den Code vom NPCClickEvent oder ist das ein Event von Citizen? Falls ja muss man dort schauen was es als Parameter erwartet. Wahrscheinlich eine Instanz deines Plugins, aber so genau kann man das nicht sagen ohne den dazugehörigen Code zu sehen.

  • Die die Kammer bei (Dort wo die Pubnkt sind)

    Code
     NPCClickEvent(....)

    Und das ist das Event (Quelle: https://jd.citizensnpcs.co/)

  • Deine Herangehensweise ist nicht ganz richtig, denn du versuchst gerade ein eigenes NPCEvent zu erstellen. Das NPCClickEvent von Citizens verhält sich von der Art her genauso wie ein Event von der Spigot API selbst.

    Deswegen solltest du auch, genauso wie bei jedem anderen Event, in einer Listener-Klasse auf das Event hören/horchen.

    In etwa so: (Beispiel ohne IDE geschrieben)

    In deiner Main registrierst du die Klasse dann wie gewohnt mit Bukkit.getPluginManager().registerEvents(new NPCListener(), this);


    Die Implementierung einer Listener-Klasse und die Verwendung von Events sollten dir aber eigentlich mittlerweile geläufig sein. Ansonsten würde ich dir ernsthaft raten, dich noch mehr mit den Grundlagen auseinanderzusetzen.


    LG


    PS: Ich habe gerade in den JavaDocs gesehen, dass es auch ein NPCLeftClickEvent sowie ein NPCRightClickEvent gibt. Diese kannst du verwenden, falls du spezifisch auf einen der beiden Fälle reagieren möchtest.

  • Dane für deine Rückmeldung und Hilfe da habe ich Jetzt nur noch eine Frage kann ich Jetzt mit


    Code
    if (npc.getName().equals("")){

    oder

    Code
    if (npc.getName().equalsIgnoreCase("")){


    Einen Ganz bestimmten NPC abfragen?


  • beide methoden werden für den vergleich von strings verwendet. der unterschied zwischen den 2 methoden ist, dass die ".equals" methode auf die groß- und kleinschreibung achtet. die ".equalsIgnoreCase" methode tut dies nicht. die ".equals()" methode würde z.B. false zurückgeben, wenn wir den text "TEXT" und "text" vergleichen. ".equalsIgnoreCase()" würde jedoch true zurückgeben.

  • Das ist das Fertige Ergebnis (Für alle die das mal nach Lesen)


    Code
    @EventHandler
    public void onClick(NPCRightClickEvent event) {    
    Entity npc = event.getNPC().getEntity();  // angeklickter NPC     
    Player p = event.getClicker(); // Spieler der den NPC angeklickt hat
        if (npc.getName().equalsIgnoreCase("Bob")){ //NPC Name        
    //Was aufgeführt werden soll    }
    }