Minecraft Server Status Abfragen

spark

Mitglied
Ich versuche gerade einen Status von einem Minecraft Server abzufragen mithilfe einer API. Ich bekomme eine Antwort, jedoch weiß ich nicht, wie ich diese (das JSON File) auslesen kann. Soweit ist mein Code:
Java:
private static HttpURLConnection connection;
    
    public static void main(String[] args) {
        BufferedReader reader;
        String line;
        StringBuffer responseContent = new StringBuffer();
        
        try {
            URL url = new URL("https://api.mcsrvstat.us/2/hypixel.net");
            connection = (HttpURLConnection) url.openConnection();
            
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(5000);
            connection.setReadTimeout(5000);
            
            int status = connection.getResponseCode();
            //System.out.println(status);
            if(status > 299) {
                reader = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
                while((line = reader.readLine()) != null) {
                    responseContent.append(line);
                }
                reader.close();
            }else {
                reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                while((line = reader.readLine()) != null) {
                    responseContent.append(line);
                }
                reader.close();
            }
            System.out.println(responseContent.toString());
            parse(responseContent.toString());
            
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            connection.disconnect();
        }

    }
Weiß jemand, wie ich die Antwort auslesen kann und dann zum Beispiel einen Boolean haben kann mit online true/false?
LG
 
Beste Antwort
Ich habe das Ganze nun so gelöst:
Java:
private static HttpURLConnection connection;
   
    public static void main(String[] args) {
        BufferedReader reader;
        String line;
        StringBuffer responseContent = new StringBuffer();
        try {
            URL url = new URL("https://api.mcsrvstat.us/2/SurvivalExtrem.nitrado.net:10040");
            connection = (HttpURLConnection) url.openConnection();
           
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(5000);
            connection.setReadTimeout(5000);
           
            int status = connection.getResponseCode();
            if(status > 299) {
                reader = new BufferedReader(new...

Oneixee5

Top Contributor
JSON lässt sich einfach in ein Java-Object umwandeln. Hier ein einfaches Beispiel:
XML:
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.14.1</version>
</dependency>
Java:
String json = IOUtils.toString(url, StandardCharsets.UTF_8);
ObjectMapper mapper = new ObjectMapper();
Person user = mapper.readValue(json, Person.class);

System.out.println(user.name); //e.g. John
Um eine detailierte Antwort zu geben wäre es gut, wenn du ein JSON-Beispiel hier veröffentlichen könntest.
 
Zuletzt bearbeitet:

spark

Mitglied
Danke für die Antwort.
JSON:
{
    "online": true,
    "ip": "127.0.0.1",
    "port": 25567,
    "debug": { //See section below for information about the values
        "ping": true,
        "query": true,
        "srv": true,
        "querymismatch": false,
        "ipinsrv": false,
        "cnameinsrv": false,
        "animatedmotd": false,
        "cachetime": 1518553220,
        "cacheexpire": 1518553280,
        "apiversion": 2
    },
    "motd": {
        "raw": [
            "\u00a7cEver\u00a7r\u00a79PvP \u00a7r\u00a77- \u00a7r\u00a72\u00c9n server, for alle",
            "\u00a7r\u00a7fSe dine stats p\u00e5 \u00a7r\u00a76stats.everpvp.dk\u00a7r"
        ],
        "clean": [
            "EverPvP - \u00c9n server, for alle",
            "Se dine stats p\u00e5 stats.everpvp.dk"
        ],
        "html": [
            "<span style=\"color: #FF5555\">Ever<\/span><span style=\"color: #5555FF\">PvP <\/span><span style=\"color: #AAAAAA\">- <\/span><span style=\"color: #00AA00\">\u00c9n server, for alle<\/span>",
            "<span style=\"color: #FFFFFF\">Se dine stats p\u00e5 <\/span><span style=\"color: #FFAA00\">stats.everpvp.dk<\/span>"
        ]
    },
    "players": {
        "online": 2,
        "max": 100,
        "list": [ //Only included when there are any players
            "Spirit55555",
            "sarsum33"
        ],
        "uuid": { //Only included when ping is used and players are returned (may not contain all players)
            "Spirit55555": "f6792ad3-cbb4-4596-8296-749ee4158f97",
            "sarsum33": "d3512599-d4d9-4520-808f-a81f4cdfe8d0"
        }
    },
    "version": "1.12", //Could include multiple versions or additional text
    "protocol": 332, //Only included when ping is used, see more here: http://wiki.vg/Protocol_version_numbers
    "hostname": "server.mymcserver.tld", //Only included when a hostname is detected
    "icon": "data:image\/png;base64,iVBORw0KGgoAAAANSUhEU...dSk6AAAAAElFTkSuQmCC", //Only included when an icon is detected
    "software": "BungeeCord", //Only included when software is detected
    "map": "MyMcWorld",
    "gamemode": "Survival", //Only included for Bedrock servers
    "serverid": "2438134582716697305", //Only included for Bedrock servers
    "plugins": { //Only included when plugins are detected
        "names": [
            "WordEdit",
            "WorldGuard"
        ],
        "raw": [
            "WordEdit 6.1.5",
            "WorldGuard 6.2"
        ]
    },
    "mods": { //Only included when mods are detected
        "names": [
            "BiomesOPlenty",
            "MoreFurnaces"
        ],
        "raw": [
            "BiomesOPlenty 2.1.0",
            "MoreFurnaces 1.3.9"
        ]
    },
    "info": { //Only included when detecting that the player samples are used for information
        "raw": [
            "\u00a77\u00bb \u00a7cKitPvP \u00a77:: \u00a7f1 \u00a77online",
            "\u00a77\u00bb \u00a7bSurvivalGames \u00a77:: \u00a7f0 \u00a77online"
        ],
        "clean": [
            "\u00bb KitPvP :: 1 online",
            "\u00bb SurvivalGames :: 0 online"
        ],
        "html": [
            "<span style=\"color: #AAAAAA\">\u00bb <\/span><span style=\"color: #FF5555\">KitPvP <\/span><span style=\"color: #AAAAAA\">:: <\/span><span style=\"color: #FFFFFF\">1 <\/span><span style=\"color: #AAAAAA\">online<\/span>",
            "<span style=\"color: #AAAAAA\">\u00bb <\/span><span style=\"color: #55FFFF\">SurvivalGames <\/span><span style=\"color: #AAAAAA\">:: <\/span><span style=\"color: #FFFFFF\">0 <\/span><span style=\"color: #AAAAAA\">online<\/span>"
        ]
    }
}
So könnte die JSON Datei aussehen und ich versuche beispielsweise dann die Anzahl der Spieler welche gerade online sind in einem int zu speichern.
 

KonradN

Super-Moderator
Mitarbeiter
Das kann man ja etwas nachbilden. Dabei sollte es ausreichen, die Felder zu nutzen, die Du wirklich brauchst. Du hast also eine klasse, in der Du z.B. die folgenden Felder hast:
  • boolean online
  • String ip
  • int port
  • Players players
  • String versuib
  • int protocol
  • String hostname

Die Klasse Players hat dann
  • int online
  • int max
  • List<String> list
  • List<String> uuid

Wenn Du etwas nicht brauchst, dann kannst Du es weglassen.

Damit hast Du dann die Typen, die Du verwenden kannst - du holst dir die Antwort einfach als Typ, den Du da als erstes erstellt hast also StateResult.class wenn du die Klasse StateResult genannt hast.
 

KonradN

Super-Moderator
Mitarbeiter
Du hast doch schon den konkreten Code:
  • Du bekommst in Deiner Abfrage ja bereits die Informationen als JSON
  • @Oneixee5 hat Dir den Code gezeigt, wie Du aus einem JSON String ein konkretes Objekt bekommen kannst. Da wurde eine Klasse Person im Code verwendet, aber das ist ja jetzt ersetzbar.
  • Ich habe dir jetzt den Aufbau von zwei Klassen gegeben. Diese musst Du nur erstellen. Dann kannst Du den Code von @Oneixee5 direkt verwenden und musst nur die Klasse entsprechend anpassen.
 

spark

Mitglied
Ich habe das Ganze nun so gelöst:
Java:
private static HttpURLConnection connection;
   
    public static void main(String[] args) {
        BufferedReader reader;
        String line;
        StringBuffer responseContent = new StringBuffer();
        try {
            URL url = new URL("https://api.mcsrvstat.us/2/SurvivalExtrem.nitrado.net:10040");
            connection = (HttpURLConnection) url.openConnection();
           
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(5000);
            connection.setReadTimeout(5000);
           
            int status = connection.getResponseCode();
            if(status > 299) {
                reader = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
                while((line = reader.readLine()) != null) {
                    responseContent.append(line);
                }
                reader.close();
            }else {
                reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                while((line = reader.readLine()) != null) {
                    responseContent.append(line);
                }
                reader.close();
            }
                       
            JSONObject js = new JSONObject(responseContent.toString());

            Boolean online = (Boolean) js.get("online");
            JSONObject players = (JSONObject) js.get("players");
            int playeron = (int) players.get("online");
            int playermax = (int) players.get("max");
            JSONArray list = players.getJSONArray("list");
            String[] spieler = new String[list.length()];

            for(int i = 0; i<list.length(); i++) {
                spieler[i] = list.toString();
            }          
                 
            System.out.println("Ist der Server online: "+online);
            System.out.println("Anzahl der Spieler welche im Moment online sind: "+playeron);
            System.out.println("Maximale Spieleranzahl: "+playermax);
                       
            System.out.println("Spieler: "+spieler[1]);
           

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            connection.disconnect();
        }

    }
Man muss nur die Json library hinzufügen
 
Beste Antwort
Ähnliche Java Themen
  Titel Forum Antworten Datum
Lord_Joker Minecraft Server Bat error Spiele- und Multimedia-Programmierung 2
N Minecraft Frage für einen Minecraft Server Spiele- und Multimedia-Programmierung 2
Joris Minecraft Minecraft Java Server Spiele- und Multimedia-Programmierung 6
Shanic Minecraft Minecraft Forge Server "Falsche Java Version" Spiele- und Multimedia-Programmierung 6
JeremyStarTM Minecraft Minecraft Spigot Server akzeptiert JAR-Version nicht Spiele- und Multimedia-Programmierung 8
L Minecraft 1.7.10 Server startet nicht Spiele- und Multimedia-Programmierung 1
T Minecraft Minecraft-Server pingt lange Spiele- und Multimedia-Programmierung 3
U Minecraft Mit Java auf Minecraft Server anmelden Spiele- und Multimedia-Programmierung 11
A Minecraft Java Ubuntu Minecraft Server startet nicht - ERROR (SIGSEGV) Spiele- und Multimedia-Programmierung 7
R Minecraft Minecraft läuft nicht paralel mit minecraft server ? Spiele- und Multimedia-Programmierung 3
D Minecraft Spieleranzahl von Minecraft Server abfragen Spiele- und Multimedia-Programmierung 8
M Minecraft Bukkit Server VM Kann nicht Vergrößert werden Spiele- und Multimedia-Programmierung 20
C Minecraft Minecraft-Programm: Server anpingen Spiele- und Multimedia-Programmierung 2
R Minecraft Minecraft Server Spiele- und Multimedia-Programmierung 20
E Minecraft Ich bekomme diesen unbekannten Fehlercode von Minecraft Spiele- und Multimedia-Programmierung 2
A [HILFE] - Minecraft-Problem! Spiele- und Multimedia-Programmierung 1
W Minecraft Client exportieren Spiele- und Multimedia-Programmierung 0
Plug-inMacher Minecraft Plugin mit Itemstack kreierte Items weiterverwenden Spiele- und Multimedia-Programmierung 2
KIWILETSPLAY How can i delete a Minecraft world Spiele- und Multimedia-Programmierung 0
Taknax Minecraft: Export der Mod dupliziert Dateien Spiele- und Multimedia-Programmierung 0
Mika_MDF Minecraft Eclipse startet Minecraft nicht? Spiele- und Multimedia-Programmierung 23
C Minecraft Spigot Entities 1.8 Spiele- und Multimedia-Programmierung 2
C Eigene Minecraft Enchantements Spiele- und Multimedia-Programmierung 1
C Minecraft Enchantements Spiele- und Multimedia-Programmierung 1
Z Minecraft Hilfe bei Minecraft PvP Client Spiele- und Multimedia-Programmierung 21
K Minecraft Minecraft "Griefergames" CobbleBot Spiele- und Multimedia-Programmierung 10
lolzo Minecraft Minecraft: Exit Code: 0 Spiele- und Multimedia-Programmierung 3
N Musikplayer in Minecraft Spiele- und Multimedia-Programmierung 0
G Minecraft PlayerBot (Listener Thread für jeden Spieler?) Spiele- und Multimedia-Programmierung 3
F Spigot 1.14 Minecraft Welt file löschen Spiele- und Multimedia-Programmierung 6
M Minecraft Spigot Plugin kompilieren Spiele- und Multimedia-Programmierung 4
N Minecraft Spigot-Plugin | Schusswaffe programmieren Spiele- und Multimedia-Programmierung 3
T Minecraft Event Plugin Spiele- und Multimedia-Programmierung 6
I Minecraft Support Bot Mod Spiele- und Multimedia-Programmierung 8
M Minecraft Minecraft 1.12.2 Plotrand ändern Spiele- und Multimedia-Programmierung 1
L wo sehe ich die Range und die Hitbox im Minecraft Sourcecode? Spiele- und Multimedia-Programmierung 2
M Minecraft Spieler move/run (bewegen) Spiele- und Multimedia-Programmierung 0
M Minecraft neue setDirection() (Blickrichtung) setzten Spiele- und Multimedia-Programmierung 5
D Minecraft [Minecraft] Java Start Fehler (Core-Dump) Spiele- und Multimedia-Programmierung 1
Z Minecraft Multiplayer geht nicht Spiele- und Multimedia-Programmierung 2
A Minecraft Withdraw und Deposit Spiele- und Multimedia-Programmierung 1
A Minecraft Plugin, welches nur bestimmten Block zum bebauen festlegt Spiele- und Multimedia-Programmierung 26
B Minecraft Scoreboard Spiele- und Multimedia-Programmierung 3
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
T Minecraft Minecraft Scoreboard Spiele- und Multimedia-Programmierung 1
I Minecraft Minecraft Minigame Plugin (Bug) Spiele- und Multimedia-Programmierung 0
L Minecraft [Minecraft] Spigot und JavaFX mit fxml Spiele- und Multimedia-Programmierung 0
L Minecraft Minecraft Bukkit Entwickler Spiele- und Multimedia-Programmierung 0
C [Minecraft] Launcher Spiele- und Multimedia-Programmierung 14
J Minecraft Coding BlockBreakEvent Spiele- und Multimedia-Programmierung 2
KeexZDeveoper Launcher (Minecraft) Spiele- und Multimedia-Programmierung 1
T Minecraft Spigot Plugin [Minecraft] Spiele- und Multimedia-Programmierung 1
T Minecraft Spigot Plugin [Minecraft] Spiele- und Multimedia-Programmierung 2
M Minecraft Minecraft Plugin Fehlermeldung! Spiele- und Multimedia-Programmierung 2
J Minecraft Minecraft Obfuscation Spiele- und Multimedia-Programmierung 1
C Minecraft Coding Spiele- und Multimedia-Programmierung 8
C Minecraft Coding Spiele- und Multimedia-Programmierung 5
I Minecraft Suche Plugin Developer für Minecraft Netzwerk! Spiele- und Multimedia-Programmierung 2
I Minecraft Plugin: Auf Spielerantwort warten Spiele- und Multimedia-Programmierung 1
M Minecraft Minecraft Plugin Fehlermeldung Spiele- und Multimedia-Programmierung 13
C Minecraft Minecraft Plugin Problem Spiele- und Multimedia-Programmierung 17
S Minecraft Minecraft crasht! Spiele- und Multimedia-Programmierung 3
I Minecraft: Craftingrecipe für Braustand ändern Spiele- und Multimedia-Programmierung 9
A Minecraft Minecraft Autojump Spiele- und Multimedia-Programmierung 2
H Minecraft Minecraft Error Spiele- und Multimedia-Programmierung 7
D Minecraft Java JDK installiert - Minecraft läuft nichtmehr in 64 Bit Spiele- und Multimedia-Programmierung 2
DanielsLPecke Minecraft Bukkit Scheduler. ALLGEMEIN. Spiele- und Multimedia-Programmierung 1
K Minecraft-Forge Mod Programmierung Spiele- und Multimedia-Programmierung 1
L Minecraft Minecraft Serversoftware Entwickler gesucht Spiele- und Multimedia-Programmierung 5
T Problem mit Eclipse (java)-(minecraft) Spiele- und Multimedia-Programmierung 3
C Minecraft Plugin 'Ancient Gates' Spiele- und Multimedia-Programmierung 0
W Minecraft wie Minidumps aktivierren ? (kein Minecraft) Spiele- und Multimedia-Programmierung 0
C +++Minecraft Plug-In Programmierer gesucht+++ Spiele- und Multimedia-Programmierung 3
L Minecraft - BungeePerms Spiele- und Multimedia-Programmierung 1
F Minecraft Bot Mouse Inputs Spiele- und Multimedia-Programmierung 3
lord239123 Minecraft Nur sichtbare Objekte rendern Spiele- und Multimedia-Programmierung 5
T Minecraft Bukkit Plugin Text Datei auslesen Spiele- und Multimedia-Programmierung 1
M Minecraft Minecraft Kit Plugin mit Eclipse Spiele- und Multimedia-Programmierung 8
X Minecraft Wie kann ich eine Karte erstellen wie zb:(Bei Minecraft) Spiele- und Multimedia-Programmierung 1
OnDemand Minecraft Minecraft Anforderungen Spiele- und Multimedia-Programmierung 1
A Minecraft Plugin Teleport Fehler Spiele- und Multimedia-Programmierung 1
H Minecraft Minecraft Plugin Spiele- und Multimedia-Programmierung 3
L Minecraft Minecraft Plugin programmieren (Craftbukkit 1.7.2) Problem Spiele- und Multimedia-Programmierung 4
OnDemand Minecraft Minecraft Spiele- und Multimedia-Programmierung 5
B Minecraft mehr Ram zuweißen Problem Spiele- und Multimedia-Programmierung 0
J Minecraft Problem mit dem JRE - Minecraft Spiele- und Multimedia-Programmierung 3
H [Minecraft] Eclipse Spiele- und Multimedia-Programmierung 3
H Minecraft Minecraft counter Spiele- und Multimedia-Programmierung 1
N Minecraft Minecraft Mod Launcher Spiele- und Multimedia-Programmierung 1
D Minecraft Config in andere Class laden/Minecraft Plugin Spiele- und Multimedia-Programmierung 1
A Minecraft Minecraft, Programm funktioniert nur in Eclipse richtig Spiele- und Multimedia-Programmierung 24
N Minecraft java lernen minecraft Spiele- und Multimedia-Programmierung 20
T Minecraft Launcher Minecraft Spiele- und Multimedia-Programmierung 29
T Minecraft Minecraft im Forum Spiele- und Multimedia-Programmierung 16
M Minecraft weitere Java Entwickler für minecraft projekt gesucht Spiele- und Multimedia-Programmierung 0
I Minecraft Java programmierungs fehler "MineCraft" Spiele- und Multimedia-Programmierung 6
I Minecraft NBT Minecraft *.dat-Datei - Verständnisproblem Spiele- und Multimedia-Programmierung 26
G Minecraft Minecraft / Knuddels Spiele- und Multimedia-Programmierung 7
1 Minecraft Minecraft Plugins programmieren Spiele- und Multimedia-Programmierung 6
J Minecraft Eigene Buttons "bauen" á la MineCraft Spiele- und Multimedia-Programmierung 11

Ähnliche Java Themen

Neue Themen


Oben