Mit Bukkit testen ob BungeeCord Server online ist

Wenn ihr bei eurem Plugin nicht weiter kommt, könnt ihr hier euer Problem beschreiben und um Hilfe bitten.

Mit Bukkit testen ob BungeeCord Server online ist

Beitragvon Realever » Sa 24. Sep 2016, 16:50

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!
Benutzeravatar
Realever
 
Beiträge: 2
Registriert: Sa 24. Sep 2016, 16:46

Re: Mit Bukkit testen ob BungeeCord Server online ist

Beitragvon DevToLearn » So 25. Sep 2016, 09:38

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.    }
Benutzeravatar
DevToLearn
 
Beiträge: 15
Registriert: So 13. Mär 2016, 10:20

Re: Mit Bukkit testen ob BungeeCord Server online ist

Beitragvon Realever » Mo 26. Sep 2016, 18:37

Dankeschön!

Ich werde es gleich mal ausprobieren!
Benutzeravatar
Realever
 
Beiträge: 2
Registriert: Sa 24. Sep 2016, 16:46

Re: Mit Bukkit testen ob BungeeCord Server online ist

Beitragvon PCodezz » Di 13. Dez 2016, 14:49

Uiii, dass könnte mir auch helfen! Danke!
Benutzeravatar
PCodezz
 
Beiträge: 6
Registriert: Sa 26. Nov 2016, 17:11

Re: Mit Bukkit testen ob BungeeCord Server online ist

Beitragvon ilouHD » Di 13. Dez 2016, 22:25

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
Bild
Benutzeravatar
ilouHD
 
Beiträge: 1733
Registriert: Do 9. Jan 2014, 14:49


Zurück zu Hilfe und Support

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste