Location aus Config in anderer Klasse

  • Guten Abend, ich bin relativ neu in der Programmierszene und benötige Hilfe:


    So weit bin ich schon. Nun ist meine Frage wie ich aus einer anderen Klasse (ich möchte wenn man im Kompass auf das Item drückt "p.teleport(loc);" ausgeführt wird? Wie mache ich, dass es funktioniert ?


    Liebe Grüße

  • Ich vermute mal mit einer anderen Klasse meinst du einen EventHandler der das Item anklicken regelt.


    Also zunächst musst du eine neue Klasse anlegen und dann folgendes hineinschreiben:

    Code
    public class InventoryClickListener implements Listener {
        
    @EventHandler
    public void handleEvent(InventoryClickEvent event) {
    //TODO codey stuff
    }
    }


    Jetzt empfehle ich dir dir mal die Javadoc anzuschauen.

    https://hub.spigotmc.org/javad…/InventoryClickEvent.html

    Damit du weißt was du so machen kannst!


    Alles was du jetzt noch machen musst ist prüfen ob Rechts oder Links Klick und dann ob das Item das richtige ist. Und dann kannst du deinen Teleport ausführen!

    If you are homeless ... just buy a house, duh!

    and if you wanna have a plugin matching your conditions ... just code it yourself!

  • Zum Thema Locations sollte man sich auch nochmal etwas informieren. Diese können nämlich direkt in der Config gespeichert werden und auch dann wieder direkt ausgelesen werden ohne das man umständlich jeden Wert einzelne speichert und später einzeln ausliest.


    Zum Thema beim draufklicken soll etwas passieren ist es schon so wie IDK_WHO_AM_I es beschrieben hat, das du dafür einen listener brauchst. Sollte man mit der Maus im Inventar drsufklicken sollen, dann ist das InventoryClickEvent schon richtig. Sollte man in der Hand mit dem item rechtsklicken sollen, dann ist das PlayerInterctEvent bzw. dessen Unterklassen interessant dafür.


  • Zum Thema beim draufklicken soll etwas passieren ist es schon so wie zM4xi es beschrieben hat, das du dafür einen listener brauchst. Sollte man mit der Maus im Inventar drsufklicken sollen, dann ist das InventoryClickEvent schon richtig. Sollte man in der Hand mit dem item rechtsklicken sollen, dann ist das PlayerInterctEvent bzw. dessen Unterklassen interessant dafür.

    Super, vielen Dank.



    Zum Thema Locations sollte man sich auch nochmal etwas informieren. Diese können nämlich direkt in der Config gespeichert werden und auch dann wieder direkt ausgelesen werden ohne das man umständlich jeden Wert einzelne speichert und später einzeln ausliest.

    Weißt du zufällig wie das funktioniert?


    Lg

  • Java
    public Location loadLocation(String path) {
    return (Location) getConfig().get(path);
    }
    public void saveLocation(Location location, String path) {
    getConfig().set(path, location);
    saveConfig();
    }

    Die Location kann ganz normal gesetzt werden, wie ein int oder String. Beim auslesen muss man halt das ganze zu einer Location casten, aber mehr muss man auch gar nicht tun. Das ganze geht übrigens mit allen Klassen die das Interface ConfigurationSerializable implementieren wie z.b de ItemStack.

  • Java
    public Location loadLocation(String path) {
    return (Location) getConfig().get(path);
    }
    public void saveLocation(Location location, String path) {
    getConfig().set(path, location);
    saveConfig();
    }

    Die Location kann ganz normal gesetzt werden, wie ein int oder String. Beim auslesen muss man halt das ganze zu einer Location casten, aber mehr muss man auch gar nicht tun. Das ganze geht übrigens mit allen Klassen die das Interface ConfigurationSerializable implementieren wie z.b de ItemStack.

    Man könnte auch beim start des Plugins die kompletten Locations einfach cachen, direkt aus der Config laden ist nicht so gut.

  • Man könnte auch beim start des Plugins die kompletten Locations einfach cachen, direkt aus der Config laden ist nicht so gut.

    iirc lädt #getConfig() die Config nicht neu.

    MfG


    00110101 00110001 00110101 00111000 00110100 00110110 00110011 00110001 00110101 00111001 00110101 00110111 00110100 00110110 00110011 00110000 00110110 00110001 00110101 00110111 00110100 01000100 00110011 01000100 8o