Bungeedord MultiLobby System

  • Guten Abend,


    ich schreibe aktuell an einem CloudSystem, dieses läuft aktuell auch bereits ohne Probleme.

    Die Proxy bekommt dann die ganzen Infos mit nem Socket mit.


    Ich habe auch bereits eine Methode geschrieben welche den nächsten Verfügbaren Lobbyserver mit am meisten Spieler online, aber auch nicht mehr als 80% der maximalen Spieler.

    Das funktioniert auch ohne Probleme.


    Mein Problem ist den Spieler auf diesen Server beim Join zu bekommen.

    Folgenden Code habe ich dabei:


    Code
        @EventHandler
        public void onPostLogin(PostLoginEvent e) {
            ServerInfo lobby = getAvaiableLobby();
            if(lobby != null && !(e.getPlayer().getServer() == lobby)) {
                e.getPlayer().connect(lobby);
            }
        }


    Mein Problem ist nun das Plugin den Spieler mit dem Server verbindet und daraufhin Bungeecord den Spieler zu seinem alten Server (aus locations.yml) bringt.

    Das sieht dann so aus:


    Etwas verwirrend.

    Nun ja, besser ist es auch nicht wenn ich das ganze verzögert ablaufen lasse, dann greift manchmal BungeeCord trotzdem, und der Spieler kommt trotzdem auf den alten Server, sofern dieser vorhanden ist(also vom CloudSystem einer bereitgestellt wurde).


    Die config.yml von Bungeecord hat force_default_server auf false

    Hat jemand eine spontane Idee?


    Vielen Dank :D

    LG, Thiemo

  • Naja, du bekommst den Spieler erst ab dem PostLoginEvent.


    Spontane Idee wäre vllt. Event welches vor dem PostLogin getriggert wird.

    PreLoginEvent -> LoginEvent -> PostLoginEvent


    Ob es funktioniert weiß ich leider nicht, aber probier es aus.

    Noch eine Idee? m(



    //Close DevTek

    Hab die Lösung gefunden!

    Man muss mit e.getPlayer().setReconnectServer(ServerInfo); einfach den Server definieren im PostLogin....kann man sicher auch früher, aber so ist es simple und kein hin und herwerfen :)

  • DevTek

    Hat das Thema geschlossen