Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Minecraft
You last visited: Today at 22:33

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Bukkit Server Anpingen... MOTD?!

Discussion on Bukkit Server Anpingen... MOTD?! within the Minecraft forum part of the Other Online Games category.

Closed Thread
 
Old   #1
 
elite*gold: 0
Join Date: Feb 2014
Posts: 48
Received Thanks: 0
Question Bukkit Server Anpingen... MOTD?!

Hey Leute,

ich bin dabei ein "JoinSigns"-Plugin für BungeeCord zu Programmieren, welches in einer Config eingestellte Server anpingt und unter anderem das MOTD ausliest.
Auf den einzelnen Servern wird das MOTD mit dem ServerListPingEvent geändert.

Vorweg: Google hat mir gesagt, das der Fehler an meiner Ping-Klasse liege.

Hier die Ping-Klasse:
Code:
public class Ping 
{
	public static String motd;
	public static int playercount;
	public static int maxplayers;
	public static boolean online;
	public static void ping(String address, int port)
	{
        try
        {
           InetSocketAddress isa = new InetSocketAddress(address, port);
           Socket socket = new Socket();
           OutputStream outputStream;
           DataOutputStream dataOutputStream;
           InputStream inputStream;
           InputStreamReader inputStreamReader;
           socket.setSoTimeout(4000);
           socket.connect(isa, 4000);
           outputStream = socket.getOutputStream();
           dataOutputStream = new DataOutputStream(outputStream);
           inputStream = socket.getInputStream();
           inputStreamReader = new InputStreamReader(inputStream,Charset.forName("UTF-16BE"));
           dataOutputStream.write(new byte[]{(byte) 0xFE,(byte) 0x01});
           int packetId = inputStream.read();
           if(packetId == -1)
           {
              dataOutputStream.close();
              outputStream.close();
              inputStreamReader.close();
              inputStream.close();
              socket.close();
              throw new IOException("Premature end of stream.");
           }
           if(packetId != 0xFF)
           {
              dataOutputStream.close();
              outputStream.close();
              inputStreamReader.close();
              inputStream.close();
              socket.close();
              throw new IOException("Invalid packet ID (" + packetId + ").");
           }
           int length = inputStreamReader.read();
           if(length == -1)
           {
              dataOutputStream.close();
              outputStream.close();
              inputStreamReader.close();
              inputStream.close();
              socket.close();
              throw new IOException("Premature end of stream.");
           }
           if(length == 0)
           {
              dataOutputStream.close();
              outputStream.close();
              inputStreamReader.close();
              inputStream.close();
              socket.close();
              throw new IOException("Invalid string length.");
           }
           char[] chars = new char[length];
           if(inputStreamReader.read(chars,0,length) != length)
           {
              dataOutputStream.close();
              outputStream.close();
              inputStreamReader.close();
              inputStream.close();
              socket.close();
              throw new IOException("Premature end of stream.");
           }
           String string = new String(chars);
           if(string.startsWith("§"))
           {
              String[] data = string.split("\0");
              motd = data[3];
              playercount = Integer.parseInt(data[4]);
              maxplayers = Integer.parseInt(data[5]);
           }
           else{
              String[] data = string.split("§");
              motd = data[0];
              playercount = Integer.parseInt(data[1]);
              maxplayers = Integer.parseInt(data[2]);
           }
           online = true;
           dataOutputStream.close();
           outputStream.close();
           inputStreamReader.close();
           inputStream.close();
           socket.close();
        }
        catch (SocketException exception)
        {
            online = false;
        }
        catch (IOException exception)
        {
            online = false;
        }
	 }
}
Ich freue mich über jeden Hinweis

Mit freundlichen Grüßen,
LuisKillergurke
LuisKillergurke is offline  
Old 11/02/2014, 17:34   #2
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,546
Received Thanks: 1,418
Reden wir hier von Minecraft 1.6 und älter oder von 1.7 und neuer? Dann deine Klasse ist für 1.6 und älter, bei 1.7 wurde das komplett verändert und viele Server reagieren nicht mehr auf den alten Ping.
ComputerBaer is offline  
Thanks
1 User
Old 11/02/2014, 17:42   #3
 
elite*gold: 0
Join Date: Feb 2014
Posts: 48
Received Thanks: 0
Oh :O

Tatsächlich sind die Server für 1.7 und älter, bzw. die neueste Spigot Version welche auch das Joinen von 1.8-Clients möglich macht.

Übrigens Danke für die wirklich extrem schnelle Antwort!

Mit freundlichen Grüßen,
LuisKillergurke
LuisKillergurke is offline  
Old 11/03/2014, 18:07   #4
 
elite*gold: 0
Join Date: Feb 2014
Posts: 48
Received Thanks: 0
Ahh ok ich hab jetzt einen Entsprechenden Ping mit Handshakes. Dieser gibt sämtliche informationen jedoch zwischen zwei "" aus. Diese kann ich aber ja nicht mit

String.replace(""", "");

ersetzten, da er den String dann ja nicht als solchen erkennt...
Auch bei google habe ich nichts entsprechendes gefunden...

Weis jemand wie man das Regelt?
Vielen Dank im Vorraus?
Mit freundlichen Grüßen
LuisKillergurke

//Edit:

Bin auch doof, das erste geht ja mit String.substring(1);
Aber am ende weis ich nicht wie ich das hinbekomme :/
LuisKillergurke is offline  
Old 11/03/2014, 18:43   #5
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,546
Received Thanks: 1,418
String.replace("\"", "");

Das Antwork-Paket sollte eigentlich einen JSON-String liefern und wenn du den "dekodierst" sollten da keine Anführungszeichen mehr sein.
ComputerBaer is offline  
Thanks
1 User
Old 11/03/2014, 19:03   #6
 
elite*gold: 0
Join Date: Feb 2014
Posts: 48
Received Thanks: 0
Ok Danke!

Mit dem Decodieren guck ich mal wie ich das hinbekomme xD

Vielen Dank für die Hilfe, kann Jetzt geclosed werden...
Kein Plan wie man das macht aber ich versuche jetzt einfach mal mit
#closerequest
LuisKillergurke is offline  
Old 11/03/2014, 19:40   #7
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,546
Received Thanks: 1,418
Ein Moderator muss das Thema schließen, also mache ich das hier gleich mal.
ComputerBaer is offline  
Thanks
1 User
Closed Thread

Tags
bukkit, bungeecord, programmieren, server anpingen, teleportsigns


Similar Threads Similar Threads
[How²] Anpingen des Servers verbieten
02/06/2014 - Metin2 PServer Guides & Strategies - 4 Replies
Folgender Code schaltet den Ping immer ab: # Echos auf Pings abschalten /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all # Auf Anfragen an den Broadcast auch nicht antworten. # (z.B.: smurf attacke) /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
Server MOTD mit PHP-Script
05/09/2013 - Minecraft - 3 Replies
Hallo liebe Community, heute ist mir mal wieder eine Idee aufgekommen: Wenn mein Server (temporär) offline ist, könnte man ja solange die (Sub-)Domain auf einen einfachen Webspace mit PHP weiterleiten, welcher aber eigentlich nur die Funktion erfüllt, dass er eine MOTD anzeigt. Wie z.B.: "§4Server temporär offline.§r" Ist sowas möglich?
Kleine Frage zum anpingen
10/16/2012 - AutoIt - 5 Replies
Hi ich habe mit nem Kumpel ne Lan Verbindung aufbauen wollen und dazu ist es ja üblich, sich anzupingen um zu schauen, ob eine Verbindung besteht. Mein Ziel war es nun ein kleines Programm zu schreiben, in dem man die gewünschte IP in eine Inputbox eingetragen wird. Anschließend soll diese IP im im cmd Fenster erscheinen und davor sollte natürlich "ping " stehen. Dann soll ein Enter befehl gesendet werden. Ich hoffe es war verständlich, was ich will. ^^ Das ist auch alles ganz schick. Aber er...
[Statusanzeiger] für Server [Slots,Online,MOTD]
02/07/2012 - Minecraft Mods, Textures, Skins & Maps - 6 Replies
Ich zeige habe vor in der nächsten Zeit PHP zu machen und dabei mache ich eine Statusanzeige die Anzeigen soll wieviele Slots der Server hat, wieviele drauf sind, ob der überhaupt Online ist, und die MOTD . Zurzeit habe ich ne einfache Anzeige gemacht, die Aktuell nur das Anzeigt: - IP - OnlineStatus - MaxSlotZahl - Wieviele sind drauf Wie benutze ich das? Ganz einfach



All times are GMT +1. The time now is 22:33.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.