• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

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

G.A.F

Redstoneengineer
Registriert
13 Oktober 2013
Beiträge
38
Diamanten
0
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:

Javascript:
public void update(){
        Socket s = new Socket();
        try {
            s.connect(new InetSocketAddress(ip, port), 1*1000);
           
            DataOutputStream out = new DataOutputStream(s.getOutputStream());
            DataInputStream in = new DataInputStream(s.getInputStream());
           
            out.write(0xFE);
           
            StringBuilder str = new StringBuilder();
           
            int b;
            while ((b = in.read()) != -1) {
                if (b != 0 && b > 16 && b != 255 && b != 23 && b != 24) {
                        str.append((char) b);
                }
            }
            String[] data = str.toString().split("§");
            String motd = data[0];
            int max = Integer.parseInt(data[2]);
            int onlinePlayers = Integer.parseInt(data[1]);
            if(motd.equals("Spiel bereits gestartet!")){
                sign.setLine(0, "§4==============");
                sign.setLine(1, "§cDas Spiel hat");
                sign.setLine(2, "§cbereits begonnen!");
                sign.setLine(3, "§4==============");
                sign.update();
            }else{
                sign.setLine(0, "§1" + serverName);
                sign.setLine(1, "");
                sign.setLine(2, "§2" + onlinePlayers + "§1/§2" + max + "§1 Spieler");
                sign.update();
            }
            s.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Ich hoffe ihr könnt mir helfen :)

LG G.A.F ~ Mineworker08
 

MrPyro13

Workaholic
Registriert
29 April 2013
Beiträge
826
Diamanten
300
Minecraft
MrPyro13
Versuchs mal mit dem Plugin Messaging Channel.
Damit kannst du Nachrichten (wie z.B. den Spielstatus) einfach zwischen Bungee und Bukkit/Spigot Plugin austauschen.
Ist hier super erklärt: http://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/
Soweit ich weiß, muss dort immer ein Spieler online sein. Hier die Funktion für das Bearbeiten des MOTDs ohne das ServerListPingEvent:
Code:
((CraftServer)Bukkit.getServer()).getServer().setMotd("");

Zum Anpingen des Server, habe ich immer folgende Klasse genutzt: http://pastebin.com/LTLA57Ca
 

G.A.F

Redstoneengineer
Registriert
13 Oktober 2013
Beiträge
38
Diamanten
0
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
 
Zuletzt bearbeitet:

G.A.F

Redstoneengineer
Registriert
13 Oktober 2013
Beiträge
38
Diamanten
0
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
 
Oben