Оставлю тут пример кода, так как в интернете информации об этом почти нет.
Maven:
Java:
Использование:
В получении информации используется
Maven:
Код:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180130</version>
</dependency>
Java:
Java:
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class Server {
String host;
int port = 25565;
public Server(String host) {
this.host = host;
}
public Server(String host, int port) {
this.host = host;
this.port = port;
}
private String getJsonText() throws IOException {
URL url = new URL("https://api.mcsrvstat.us/2/"+host+":"+port);
URLConnection connection = url.openConnection();
connection.addRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
return reader.readLine();
}
private JSONObject toJsonObject() throws IOException {
return new JSONObject(getJsonText());
}
private String getObject(String object) {
try {
return toJsonObject().getString(object);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private String getObject(String object, String subObject) {
try {
JSONObject o = toJsonObject().optJSONObject(object);
return String.valueOf(o.getInt(subObject));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private boolean getBooleanObject(String object) {
try {
return toJsonObject().getBoolean(object);
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
private boolean getBooleanObject(String object, String subObject) {
try {
return toJsonObject().getJSONObject(object).getBoolean(subObject);
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
private String getStringObject(String object, String subObject) {
try {
JSONObject o = toJsonObject().optJSONObject(object);
return o.getString(subObject);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private String getMotdObject(String object, String subObject) {
try {
JSONObject o = toJsonObject().optJSONObject(object);
return o.getJSONArray(subObject).toString().replace("[", "").replace("]", "").replace(",", "\n").replace("\"", "");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public String getIp() {
return getObject("ip");
}
public String getPort() {
return getObject("port");
}
public String getMotd() {
return getMotdObject("motd", "clean");
}
public String getOnlinePlayers() {
return getObject("players","online");
}
public String getMaxOnlinePlayers() {
return getObject("players", "max");
}
public String getVersion() {
return getObject("version");
}
public String getSoft() {
return getObject("software");
}
public String isOnline() {
return getBooleanObject("debug", "ping") ? "Да" : "Нет";
}
public String getPlugins() {
return getMotdObject("plugins", "names");
}
}
Использование:
Java:
//пример из моего телеграм бота
public void check() {
if(msg.getText().startsWith("/чек ")) {
User user = User.getUser(msg.getFrom().getId());
Telegram chat = new Telegram(chatId);
SendMessage message;
if(!user.hasPermission(Permission.CHECK)) {
message = chat.sendMessage("• У Вас недостаточно прав!");
chat.execute(message, main);
return;
}
String text = msg.getText().replace("/чек ", "");
String host;
int port = 25565;
String[] split;
if(text.contains(":")) {
split = text.split(":");
host = split[0];
if(split[1] != null) {
port = Integer.parseInt(split[1]);
}
} else {
host = text;
}
message = chat.sendMessage("Проверяю: "+host+":"+port+", \nЭто может занять некоторое время.");
message.setReplyToMessageId(msgId);
chat.execute(message, main);
long time = System.currentTimeMillis();
Server server = new Server(host, port);
String isOnline = server.isOnline();
if(isOnline.toLowerCase().contains("нет")) {
message = chat.sendMessage("Не удалось проверить сервер!\n\n• Возможно он оффлайн.");
} else {
String motd = server.getMotd();
String version = server.getVersion();
String online = server.getOnlinePlayers();
String maxOnline = server.getMaxOnlinePlayers();
String ip = server.getIp();
time = System.currentTimeMillis()-time;
message = chat.sendMessage(
"☄ Информация о сервере:\n\n" +motd+"\n\n"+"• Версия: "+version
+"\n\n• Онлайн: " +online +" | " +maxOnline
+"\n• Скорость соединения: "+time+"мс"
+"\n\n• Адрес: "+ip);
}
message.setReplyToMessageId(msgId);
chat.execute(message, main);
}
}
В получении информации используется
Авторизуйтесь для просмотра ссылок.