Server Info API
Активный0.0
Установок
Последнее обновление
Версии
Server Info API - Расширенный HTTP API для вашего Minecraft-сервера
Добавьте на ваш Minecraft-сервер полнофункциональный HTTP API для доступа к статистике и данным сервера в реальном времени.
🌟 Что делает этот мод?
Создавайте собственные инструменты для мониторинга и управления сервером! С Server Info API вы сможете:
- Отображать количество игроков онлайн на сайте
- Создавать Дискорд-бота для автоматизации
- Собирать статистику производительности
- Разрабатывать кастомные приложения для управления сервером
🔧 Быстрый старт
API автоматически запускается на порту 8080. Для изменения порта отредактируйте настройку apiPort в файле config/Server Info API/settings.json.
📡 Доступные эндпоинты
Статус сервера (/status)
Полный обзор состояния сервера с информацией о диске, процессоре, оперативной памяти и игроках.
{
"disk": {
"totalGB": 1606,
"freeGB": 343,
"usedMB": 25
},
"players": {
"online": 0,
"max": 20
},
"cpu": {
"usagePercent": 9.865470852017937
},
"ram": {
"totalMB": 63033,
"usedMB": 31469
}
}
Список игроков (/players)
Информация обо всех игроках сервера: общее количество и текущие онлайн-игроки.
{
"totalPlayers": 1,
"onlinePlayers": []
}
Информация об игроке (/player/:criteria)
Детальные сведения об отдельных игроках по имени или UUID.
{
"name": "PLAYER_NAME",
"online": true,
"uuid": "PLAYER_UUID",
"info": {
"currentChunkPos": {
"z": 1,
"x": 0
},
"currentPos": {
"z": 23.423937096484163,
"x": 7.907748838070694,
"y": 100.12983446114534
},
"dimension": "minecraft:the_nether"
}
}
🛠️ Для разработчиков модов
Создание собственных маршрутов
Разрабатывайте расширения для ваших модов! Реализуйте интерфейс APIRoute и настройте путь с помощью аннотации @RouteSettings.
import xyz.yoinky3000.server_info_api.annotations.RouteSettings;
import xyz.yoinky3000.server_info_api.api.APIRequest;
import xyz.yoinky3000.server_info_api.api.APIResponse;
import xyz.yoinky3000.server_info_api.api.APIRoute;
import net.minecraft.server.MinecraftServer;
// Простой маршрут без доступа к серверу
@RouteSettings(path = "/my-simple-test-route") // По умолчанию requireMinecraftServer = false
public class MySimpleTestRoute implements APIRoute {
@Override
public APIResponse handle(APIRequest apiRequest) {
return new APIResponse(APIResponse.HttpStatus.OK, APIResponse.MimeType.TEXT_PLAIN, "Привет из моего маршрута!");
}
}
// Маршрут с доступом к серверу
@RouteSettings(path = "/my-server-data-route", requireMinecraftServer = true)
public class MyServerDataRoute implements APIRoute {
@Override
public APIResponse handle(APIRequest request, MinecraftServer server) {
int onlinePlayers = server.getCurrentPlayerCount();
return new APIResponse(APIResponse.HttpStatus.OK, APIResponse.MimeType.TEXT_PLAIN,
"Игроков сейчас онлайн: " + onlinePlayers);
}
}
Настройка параметров маршрута
path: Путь API эндпоинта (например,/my-custom-data)requireMinecraftServer: Еслиtrue, маршрут активируется только после полной загрузки сервера
Регистрация маршрутов
import xyz.yoinky3000.server_info_api.ServerInfoAPI;
import net.fabricmc.api.ModInitializer;
public class CustomMod implements ModInitializer {
@Override
public void onInitialize() {
// Регистрация маршрута с помощью аннотации
ServerInfoAPI.registerRoute(new MyServerDataRoute());
System.out.println("Пользовательские API маршруты зарегистрированы!");
}
}
Доступные методы регистрации:
registerRoute(APIRoute route)- регистрация с аннотацией, без перезаписиregisterRoute(String path, APIRoute route)- явное указание путиregisterRoute(String path, APIRoute route, boolean requireMinecraftServer, boolean override)- полный контроль
Динамические параметры
Создавайте маршруты с переменными сегментами:
@RouteSettings(path = "/my-data/:item_id")
public class ItemDataRoute implements APIRoute {
@Override
public APIResponse handle(APIRequest request, MinecraftServer server) {
String itemId = request.routeParams().get("item_id");
if (itemId != null) {
return new APIResponse(APIResponse.HttpStatus.OK, APIResponse.MimeType.TEXT_PLAIN, "Запрошен ID объекта: " + itemId);
} else {
return new APIResponse(APIResponse.HttpStatus.BAD_REQUEST, APIResponse.MimeType.TEXT_PLAIN, "ID объекта не указан.");
}
}
}