Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
  • Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Веб API JMC

book777

Старожил
Пользователь
Баллы
123
Данное API предназначено для получения статуса сервера и его доп. информации без использования каких либо громоздких средств / потери производительности.
Так же ваш мониторинг сможет работать на бесплатных хостингах с ограниченными возможностями (Hostinger) и на сайтах без поддержки PHP (uCoz).
Вся информация выдается в формате JSON и кешируется на 20 секунд.

Что бы получить данные о своем сервере, необходимо произвести HTTP запрос вида

http://jsonmc.tk/old/?address={IP:PORT} [service.vkurske.org]

При переходе с пустым значением будет браться IP клиента и стандартный порт

http://jmc.mymine.su/earthcraft.ru:25566 (первый попавшийся)
Код:
{"adress":"earthcraft.ru:25566","ping":45,"geo":"Russia","motd":"<font color=\"00AA00\"><b>OCTPOB CBObODbl<\/b><\/font>","player_online":23,"player_max":120,"percent":20,"version":"1.4.7","online_max":23,"online_max_time":1404473708}

adress earthcraft.ru:25566 - собственно, сам адрес сервера

time_update 1404460688 - если есть это значение, значит вы получили кешируемый ответ (на данный момент кеширование 20 секунд). Последнее обновление вермени в unix

motd <font color=\"00AA00\"><b>OCTPOB CBObODbl<\/b><\/font> - Указанное MOTD на стороне сервера. Форматирование текста в MOTD заменяется на равнозначный вариант HTML

player_online 16 - онлайн игроков на время запроса / последнего обновления

player_max 120 - максимальный онлайн

online_max 16 - максимальный онлайн, зафиксированный со всех запросов к API
online_max_time 1404460688 - UNIX-время этого момента

percent 14 - процент онлайна (1-100%)

ping 44 - время в миллисекундах, за которое сервер ответил API (сам скрипт находится на немецком хостинге)

version 1.4.7 - версия сервера (у серверов с версии 1.7 еще пишет ядро)

player_name AssassinCreed, ipple, MrTwinkey, LibMageTech, Slenderman - с версии серверов 1.7 можно получить список игроков, если есть онлайн (отделение идет через ", ")

favicon data:image/png;base64,iVBORw0KGgo{...}AAA== - с версии серверов 1.7 можно получить иконку сервера, если она установлена

country Russian Federation - локация

organization Hetzner Online AG - хостер

code RU - сокращенная локация

region Moscow City - регион
Если сервер недоступен, JSON ответ может иметь следующий вид:
{"error":"TIMEOUT"}

Виды ошибок:
- OFF - по этому адресу и порту (если не указан, то 25565) ничего нет. Замечание: только в ошибке вида "OFF" добавляется пинг.
- TIMEOUT - слишком долгий ответ сервера (на данный момент timeout 2 секунды).
- UNKNOWN_ERROR - неизвестная ошибка. Сервер не распознан как minecraft.

Ниже для метода к серверам от 1.7 версий
- VERSION<1.7 - вы перешли с версии от 1.7 на более раннюю (эта ошибка однократна и на следующий запрос будет использоваться старый метод).


Примеры приложений, использующее данное API:

  1. Мониторинг на JS/JQuery [Авторы: @Cyber Owl, @limito]
  2. Пример получения данных посредством PHP
  3. PHP помощник

- поддержка MCPE
- поддержка bungeecord
- поддержка query
- оптимизация для прироста быстроты обработки №1
- оптимизация для прироста быстроты обработки №2
- вывод города(Minsk) и идентификатора страны (BY)

Спасибо @Cyber Owl за помощь в оформлении темы и разработки js-мониторинга

Пожертвования на R969285100089 с пометкой JMC пойдут на оплату хостинга​

​
 
Последнее редактирование:
Скоро, если не забуду, напишу мониторинги на обычном PHP с основы этого API

Вот пока что самый простой пример:
PHP:
<?php

$address = 'mc.hypixel.net';# Адрес сервера

$server = @file_get_contents('http://jmc.mymine.su/'.$address);# Получение ответа с запроса
$tree = json_decode($server, 1);# Разбиение на массивы

echo "
    {$tree['motd']} - motd<br>
    {$tree['player_online']} - player_online<br>
    {$tree['player_max']} - player_max<br>
    <img src=\"{$tree['favicon']}\"/> - favicon<br>
    {$tree['geo']} - geo<br>
    {$tree['version']} - version<br>
    {$tree['online_max']} - online_max<br>
    ".date('l jS \of F Y h:i:s A', $tree['online_max_time'])." - online_max_time<br>
    {$tree['player_name']} - player_name
";

?>
 
Последнее редактирование:
Пример работы API на JS/JQuery.
Дизайн, выводимый HTML и прочее - все можно сделать на ваше усмотрение.
Если необходимо, могу предоставить дополнительную информацию об установке/настройке.

// Добавил небольшие "доки"
 
Последнее редактирование:
тебе в натуре делать нечего :D всякие плюшки делаешь за даром)
 
Обновлен JS мониторинг.
+ Рекордный онлайн
+ Отображение даты рекордного онлайна
+ Немного изменен дизайн.
+ Добавлена функция refreshBtn() + кнопка.

// Перенос темы JS мониторинга в эту тему
 
Последнее редактирование:
Важная информация: будут изменены названия переменных после обновления
Обновил шапку. Пофиксил серьезный баг с кешированием. Оптимизировал код. Добавил больше информации о сервере.

Когда-нибудь доберусь до создания поддержки банджикорда и query. Пожертвования меня подгонят =)
 
Почему API возвращает список игроков как строку, когда можно возвращать как массив?
Алсо, вы бы сделали версионирование API на будущее. Лишним не будет и это позволит безопасно обновлять формат ответа API, если у кого-то что-то сломается
 
Почему API возвращает список игроков как строку, когда можно возвращать как массив?
Алсо, вы бы сделали версионирование API на будущее. Лишним не будет и это позволит безопасно обновлять формат ответа API, если у кого-то что-то сломается
Можно сделать. Даже идея о отдельном домене есть, но 100 рублей ой как лень тратить.
За всё время только 1 раз поблагодарили в размере 20р
 
Как-то попробовал, но ничего толком не получилось
http://theminecraftapi.com/v1/?server=37.59.56.227&action=info&apiKey=a4C7a0WAYm9PUU4px59t18tnXZ6YGx
http://jmc.mymine.su/37.59.56.227
Да и информации у меня так и так больше выводится
Не знаю что там у них за проблемы, но факт в том, что это есть, и это работало, и, скороее всего, будет работать позже. (Странно, я еще у одной АПИ проверил, та же самая ошибка, может совпадение)
Насчет информации:
Информация о геолокации ничего по сути не даст конечному пользователю, если только этот человек не додумается сделать рейтинг серверов с твоим АПИ, но тогда он у тебя полетит из-за нагрузки(несмотря на то, что данные ты кэшируешь).
Процент можно самому посчитать, а максимальный онлайн да, это можно считать как полезной дополнительной информацией.
Во всем остальном, тут такие же возможности, что и в других АПИ.
Продолжать разработку надеясь на какой-то результат или нет, твое дело, я бы не стал.
 
Не знаю что там у них за проблемы, но факт в том, что это есть, и это работало, и, скороее всего, будет работать позже. (Странно, я еще у одной АПИ проверил, та же самая ошибка, может совпадение)
Насчет информации:
Информация о геолокации ничего по сути не даст конечному пользователю, если только этот человек не додумается сделать рейтинг серверов с твоим АПИ, но тогда он у тебя полетит из-за нагрузки(несмотря на то, что данные ты кэшируешь).
Процент можно самому посчитать, а максимальный онлайн да, это можно считать как полезной дополнительной информацией.
Во всем остальном, тут такие же возможности, что и в других АПИ.
Продолжать разработку надеясь на какой-то результат или нет, твое дело, я бы не стал.
Дело не только в геолокации. У меня еще процент онлайна, максимально зафиксированный онлайн с временем, пинг от германии. И это только для серверов версии ниже 1.7. Выше идет вывод ядра, имена игроков онлайн, а так же картинка сервера (favicon)

В общем всё, что только можно
 
Дело не только в геолокации. У меня еще процент онлайна, максимально зафиксированный онлайн с временем, пинг от германии. И это только для серверов версии ниже 1.7. Выше идет вывод ядра, имена игроков онлайн, а так же картинка сервера (favicon)

В общем всё, что только можно
Кто-то посчитал не нужным дочитать мое сообщение. Я написал про процент и макс.онлайн.
GITHUB, взгляни на этот репозиторий, тоже позволяет получить favicon и пинг.
Про вывод игроков можно было и не писать, это стандартная функция.
В принципе я уже все сказал, это лично твое дело, продолжать эту идею или нет.
 
Кто-то посчитал не нужным дочитать мое сообщение. Я написал про процент и макс.онлайн.
GITHUB, взгляни на этот репозиторий, тоже позволяет получить favicon и пинг.
Про вывод игроков можно было и не писать, это стандартная функция.
В принципе я уже все сказал, это лично твое дело, продолжать эту идею или нет.
Но на бесплатных хостингах таким скриптом не воспользуешься
 
Ты шикарен! Прикрутил твой API к своему сайту визитке. Работает как часы!
 

Поделиться этой страницей

Назад
Верх