ServerPlugin Wie überprüfe ich per Plugin, ob das Spiel auf einem Server im BungeeCord schon gestartet hat?

Dieses Thema im Forum "Programmierung" wurde erstellt von G.A.F, 2. Juni 2015.

  1. G.A.F
    Offline

    G.A.F

    Registriert seit:
    13. Oktober 2013
    Beiträge:
    38
    Heyho,

    ich schreibe momentan ein ServerSigns Plugin und möchte auf diesem nun anzeigen, wenn das Spiel auf einem anderen Server im BungeeCord schon gestartet hat. Ich habe es schon per Motd probiert, allerdings wird ja das ServerListPingEvent natürlich nicht ausgelöst, wenn ich den Server per Plugin anpinge, weshalb ich nur die Motd aus den Properties bekomme :/
    So sieht mein Code bisher aus:

    Code (Javascript):
    1. public void update(){
    2.         Socket s = new Socket();
    3.         try {
    4.             s.connect(new InetSocketAddress(ip, port), 1*1000);
    5.            
    6.             DataOutputStream out = new DataOutputStream(s.getOutputStream());
    7.             DataInputStream in = new DataInputStream(s.getInputStream());
    8.            
    9.             out.write(0xFE);
    10.            
    11.             StringBuilder str = new StringBuilder();
    12.            
    13.             int b;
    14.             while ((b = in.read()) != -1) {
    15.                 if (b != 0 && b > 16 && b != 255 && b != 23 && b != 24) {
    16.                         str.append((char) b);
    17.                 }
    18.             }
    19.             String[] data = str.toString().split("§");
    20.             String motd = data[0];
    21.             int max = Integer.parseInt(data[2]);
    22.             int onlinePlayers = Integer.parseInt(data[1]);
    23.             if(motd.equals("Spiel bereits gestartet!")){
    24.                 sign.setLine(0, "§4==============");
    25.                 sign.setLine(1, "§cDas Spiel hat");
    26.                 sign.setLine(2, "§cbereits begonnen!");
    27.                 sign.setLine(3, "§4==============");
    28.                 sign.update();
    29.             }else{
    30.                 sign.setLine(0, "§1" + serverName);
    31.                 sign.setLine(1, "");
    32.                 sign.setLine(2, "§2" + onlinePlayers + "§1/§2" + max + "§1 Spieler");
    33.                 sign.update();
    34.             }
    35.             s.close();
    36.         } catch (IOException e) {
    37.             e.printStackTrace();
    38.         }
    39.     }
    Ich hoffe ihr könnt mir helfen :)

    LG G.A.F ~ Mineworker08
     
    #1
  2. Sabbertran
    Offline

    Sabbertran

    Registriert seit:
    24. April 2012
    Beiträge:
    75
    Minecraft:
    Sabbertran
    #2
    G.A.F gefällt das.
  3. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Hallo,

    den Motd kann man auch über eine CraftServer Methode setzen. Wenn erwünscht, kann ich diese heute Abend gerne aufführen ;)
     
    #3
  4. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Soweit ich weiß, muss dort immer ein Spieler online sein. Hier die Funktion für das Bearbeiten des MOTDs ohne das ServerListPingEvent:
    Code (Text):
    1. ((CraftServer)Bukkit.getServer()).getServer().setMotd("");
    Zum Anpingen des Server, habe ich immer folgende Klasse genutzt: http://pastebin.com/LTLA57Ca
     
    #4
    G.A.F gefällt das.
  5. G.A.F
    Offline

    G.A.F

    Registriert seit:
    13. Oktober 2013
    Beiträge:
    38
    Dankeschön euch beiden schonmal :) Probiere das gleich mal aus...

    Uuuund es klappt! Vieeelen Dank an euch :)
     
    #5
  6. G.A.F
    Offline

    G.A.F

    Registriert seit:
    13. Oktober 2013
    Beiträge:
    38
    UUah Doppelpost :D Nehmts mir nicht übel :*

    Und noch eine Frage:
    Wie mache ich das ganze jetzt mit den MaxPlayers? Diese Methode ( .setMaxPlayers(10) ) gibt es nicht für Server. Ich möchte nämlich gerne, dass der in der Config angegebene MaxPlayers Wert auf den Schildern angezeigt wird :)

    Das geht natürlich im Notfall auch mit nem restart, aber fragen kostet ja nichts :p
     
    #6
  7. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Entweder du machst es über das ServerListPingEvent (das sollte die max. Spieler erfassen) oder über den Plugin-Messaging-Channel oder im Notfall auch über den Motd.
     
    #7
  8. G.A.F
    Offline

    G.A.F

    Registriert seit:
    13. Oktober 2013
    Beiträge:
    38
    Hmm okay danke :) Also mit ServerListPingEvent geht das nicht :/ Sollte es denn funktionieren?

    Ich kann im Plugin-Messaging-Channel keinen SubChannel für die maximale Spielerzahl finden :/ Ich denke da muss die Motd herhalten :) Dankeschön
     
    #8