Download Server Info API — Minecraft Mods — MetaMods

Server Info API

Active

Downloads

0

Last update

9 months ago

Versions

1.21.1 — 1.21.5
Server
Fabric
Libraries
Control
Utils

Server Info API - Advanced HTTP API for Your Minecraft Server

Add a fully functional HTTP API to your Minecraft server for accessing server statistics and data in real-time.

🌟 What This Mod Does

Create custom tools for monitoring and managing your server! With Server Info API you can:

  • Display online player count on your website
  • Create Discord bots for automation
  • Collect performance statistics
  • Develop custom applications for server management

🔧 Quick Start

The API automatically starts on port 8080. To change the port, edit the apiPort setting in the config/Server Info API/settings.json file.

📡 Available Endpoints

Server Status (/status)

Complete server status overview with disk, CPU, RAM, and player information.

{
  "disk": {
    "totalGB": 1606,
    "freeGB": 343,
    "usedMB": 25
  },
  "players": {
    "online": 0,
    "max": 20
  },
  "cpu": {
    "usagePercent": 9.865470852017937
  },
  "ram": {
    "totalMB": 63033,
    "usedMB": 31469
  }
}

Players List (/players)

Information about all server players: total count and currently online players.

{
  "totalPlayers": 1,
  "onlinePlayers": []
}

Player Information (/player/:criteria)

Detailed information about specific players by name or 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"
  }
}

🛠️ For Mod Developers

Creating Custom Routes

Develop extensions for your mods! Implement the APIRoute interface and configure the path using the @RouteSettings annotation.

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;

// Simple route without server access
@RouteSettings(path = "/my-simple-test-route") // By default requireMinecraftServer = false
public class MySimpleTestRoute implements APIRoute {
    @Override
    public APIResponse handle(APIRequest apiRequest) {
        return new APIResponse(APIResponse.HttpStatus.OK, APIResponse.MimeType.TEXT_PLAIN, "Hello from my route!");
    }
}

// Route with server access
@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,
            "Currently online players: " + onlinePlayers);
    }
}

Route Parameter Configuration

  • path: API endpoint path (for example, /my-custom-data)
  • requireMinecraftServer: If true, route activates only after full server loading

Route Registration

import xyz.yoinky3000.server_info_api.ServerInfoAPI;
import net.fabricmc.api.ModInitializer;

public class CustomMod implements ModInitializer {
    @Override
    public void onInitialize() {
        // Route registration using annotation
        ServerInfoAPI.registerRoute(new MyServerDataRoute());

        System.out.println("Custom API routes registered!");
    }
}

Available registration methods:

  • registerRoute(APIRoute route) - registration with annotation, no override
  • registerRoute(String path, APIRoute route) - explicit path specification
  • registerRoute(String path, APIRoute route, boolean requireMinecraftServer, boolean override) - full control

Dynamic Parameters

Create routes with variable segments:

@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, "Requested object ID: " + itemId);
        } else {
            return new APIResponse(APIResponse.HttpStatus.BAD_REQUEST, APIResponse.MimeType.TEXT_PLAIN, "Object ID not specified.");
        }
    }
}
Project members
Yoinky3000

Yoinky3000

Developer

Created: 31 May 2025

ID: 102646