Spieler in einem Spigot Plugin auf einem anderen Server senden.

  • Hey Dev-Tek Community ,


    Und zwar habe ich Folgendes Problem ich möchte einen Spieler in einem Spigot Plugin auf einen anderen Server senden, Googel konnte mir in diesem fall leider nicht sehr viel weiter helfen also wollte ich mal hier frage ob vlt wer ne Idee hätte und mir weiter helfen könnte




  • Hey,


    Du brauchst für das Spieler Senden und für das Abfragen, ob der Spieler auf dem Server bereits ist, jeweils den BungeeCord Messaging-Channel.

    Biosphere hat dir dazu eh einen Link geschickt...


    Außerdem solltest du vielleicht noch zusätzlich abfragen, ob der ItemStack nicht null ist, um NPEs auszuschließen...


    Hey,


    Danke für die antwort ja das hatte ich schon so in der Form gefunden leider hatte das bei mir nicht funktioniert.


    Fehlermeldung? Code?



  • Ja und wo ist das Problem? Hast du den OutgoingPluginChannel registriert? Bekommst du eine Exception?

    Außerdem verstehe ich den Sinn deiner try-catch nicht so ganz? Die sollte unbedingt auch um das p.sendPluginMessage() gehen:


    Code
    try {
        ByteArrayDataOutput out = ByteStreams.newDataOutput();
        out.writeUTF("Connect");
        out.writeUTF("Lobby2");
        p.sendPluginMessage(plugin, "BungeeCord", b.toByteArray());
    }catch (Exception e1) {
        e1.printStackTrace();
    }
  • OutgoingPluginChannel registriert


    Wie genau meinst du das oben steht der Code wie er nun aktuell ist dann passiert der untere Fehler ( Kenne mich noch nicht so gut aus mit Error Logs) > Da ich noch nicht so lange code




  • So das ganze hier machst du am besten mit einer for schleife.

    Hier bei (Plugin) this musst du die Klasse angeben in der du den Channel registriert hast.

    Code
    p.sendPluginMessage((Plugin) this, "BungeeCord", b.toByteArray());

    Bei (Plugin) this schreibst du dann Lobby.getInstance beispielsweise.

  • Okay danke für die Klasse, wollte gerade danach fragen...


    Du musst in der Methode p.sendPluginMessage() das Plugin übergeben... Du kannst "this" nur in der Mainklasse verwenden, und du kannst auch "this" nicht einfach zu nem Plugin casten...


    Du kannst z.B. in deiner Main deine Instanz als statische Variable setzen und dann mit nem Getter darauf zugreifen


    Noch ein paar weitere Vorschläge zu deinem Code:


    Verwende keine try-catches für ganze Methoden.. und vor allem lass die Exception dann niemals unbehandelt... so wie bei dir in Zeile 304
    Wenn eine Exception auftritt musst du hinterfragen warum sie auftritt(Fehlercode lesen) und dann die Entstehung verhindern...


    Noch als Tipp: Du musst nicht jeden Inventarslot manuell setzen.. du könntest z.B. auch mit einer for-Schleife am Schluss das Inventar durchgehen und dann auf alle freien Slots deinen Glasscheiben ItemStack setzen...


  • Hey,


    Danke funktioniert jetzt und auch für den Tipp mit den try-catches / Programmiere noch net so lange :c