Seite 1 von 1

Mit Bukkit testen ob BungeeCord Server online ist

BeitragVerfasst: Sa 24. Sep 2016, 16:50
von Realever
Hallo!

ich möchte ein Lobbysystem programmieren wo ich mit einem Inventar auf Server connecten kann. Jedoch möchte ich beim Öffnen schon einzeigen welcher Server online ist, und welcher nicht. Deshalb zu meiner Frage:

Wie kann ich mit Bukkit abfragen ob ein anderer BungeeCord Server online ist?

Danke im vorraus!

Re: Mit Bukkit testen ob BungeeCord Server online ist

BeitragVerfasst: So 25. Sep 2016, 09:38
von DevToLearn
Hallo. Ich vermute mal, dass du mit "BungeeCord Server" einen normalen Spigot/Bukkit-Server meinst. Direkt von einem Server die Information zu erhalten, ob dieser online/offline ist, ist nicht möglich. Allerdings, könntest du dir einfach die MOTD des Servers ausgeben lassen. Wenn die MOTD == null ist, weisst du, dass der Server nicht online ist. In diesem Fall, müsste aber der jeweilge Server im aktiven Modus eine MOTD besitzen.

Hier eine Methode, mit welcher du die MOTD eines Servers in einem BuneeCord-Netzwerk bekommen kannst:
Code: Alles auswählen
  1. @SuppressWarnings("resource")
  2.    public static String getMOTD(String IP, int port) {
  3.       String serverMotd = "";
  4.       try {
  5.          Socket sock = new Socket(IP, port);         
  6.          DataOutputStream out = new DataOutputStream(sock.getOutputStream());
  7.          DataInputStream in = new DataInputStream(sock.getInputStream());         
  8.          out.write(0xFE);         
  9.          int b;
  10.          StringBuffer str = new StringBuffer();
  11.          while((b = in.read()) != -1) {
  12.             if(b != 0 && b > 16 && b != 255 && b != 23 && b != 24) {
  13.                str.append((char) b);
  14.             }
  15.          }   
  16.          String[] data = str.toString().split("§");         
  17.          String[] info = data[0].split("%");
  18.          serverMotd = info[1];
  19.       } catch(UnknownHostException e) {
  20.          return null;
  21.       } catch(IOException e1) {
  22.          return null;
  23.       }
  24.       return serverMotd;      
  25.    }

Re: Mit Bukkit testen ob BungeeCord Server online ist

BeitragVerfasst: Mo 26. Sep 2016, 18:37
von Realever
Dankeschön!

Ich werde es gleich mal ausprobieren!

Re: Mit Bukkit testen ob BungeeCord Server online ist

BeitragVerfasst: Di 13. Dez 2016, 14:49
von PCodezz
Uiii, dass könnte mir auch helfen! Danke!

Re: Mit Bukkit testen ob BungeeCord Server online ist

BeitragVerfasst: Di 13. Dez 2016, 22:25
von ilouHD
Ich würde in einem solchen Fall eher eine Datenbank benutzen und dort einspeichern, welche Server derzeit online sind, da das andauernde anpingen eines Servers nicht gerade die beste Möglichkeit ist.

Alternativ (bessere Möglichkeit) könnte auch ein partieller Cache zum Einsatz kommen. Du hast eine ArrayList (oder Ähnliches) in der du jeden verfügbaren Server einträgst. Nun kannst du mit z.B. Netty Informationen austauschen. Sollte ein Server zum Beispiel online gehen, wird vom Server ein entsprechendes Packet zum Hauptserver gesendet. Dieses Packet wird dann verarbeitet und dementsprechend wird der dazugehörige Server in der ArrayList geändert.

Jedes mal, wenn nun das Inventar geöffnet wird, lädst du die Server einfach aus der ArrayList. Du solltest somit eine Menge Traffic und Ressourcen speichern können.

Mit freundlichen Grüßen
ilou