SyAPI

Provides some obscure APIs for the development of other plugins

6

SyAPI

SyAPI

SyAPI is a server statistics API plugin for Minecraft Purpur/Paper 1.21.1, providing server runtime status, player statistics, and more.

Features

- 📊 Server uptime statistics - 📈 Yesterday's login count statistics - 👥 Historical maximum online players record - 📝 Total login count statistics - ⚡ Server minimum TPS monitoring - 🌐 Player latency detection (highest latency player)

Supported Versions

- API Version: Paper, Purpur 1.21.1 - API Version: Java 17+ - API Version: 1.21

Usage

Commands

| Command | Description | Permission | |---------|-------------|------------| | `/syapi` | View server statistics | `syapi.use` | | `/syapi info` | View server statistics | `syapi.use` | | `/syapi reload` | Reload plugin configuration | `syapi.admin` | | `/syapi help` | Display help information | `syapi.use` |

API Usage

Other plugins can call SyAPI in the following way:

```java import cn.shiyuan.syapi.SyAPI; import cn.shiyuan.syapi.SyAPIProvider;

// Get API provider SyAPI syapi = SyAPI.getInstance(); SyAPIProvider api = syapi.getApiProvider();

// Get server start time long startTime = api.getServerStartTimeMillis(); String uptime = api.getServerUptime(); String startTimeFormatted = api.getServerStartTimeFormatted();

// Get player statistics int yesterdayJoins = api.getYesterdayJoinCount(); int maxOnline = api.getMaxOnlinePlayers(); int totalJoins = api.getTotalJoinCount();

// Get server performance data double minTps = api.getMinTps();

// Get latency information Player highestLatencyPlayer = api.getHighestLatencyPlayer(); String playerName = api.getHighestLatencyPlayerName(); long highestLatency = api.getHighestLatency(); long playerLatency = api.getPlayerLatency(player); ```

API Method Reference

Server Time Related

| Method | Return Value | Description | |--------|--------------|-------------| | `getServerStartTimeMillis()` | `long` | Get server start timestamp (milliseconds) | | `getServerUptime()` | `String` | Get server uptime (formatted string, e.g., "2 days 5 hours 30 minutes") | | `getServerStartTimeFormatted()` | `String` | Get server start time (formatted date, e.g., "2026-04-03 12:30:00") |

Player Statistics Related

| Method | Return Value | Description | |--------|--------------|-------------| | `getYesterdayJoinCount()` | `int` | Get yesterday's login count (unique players) | | `getMaxOnlinePlayers()` | `int` | Get historical maximum online players | | `getTotalJoinCount()` | `int` | Get total login count |

Server Performance Related

| Method | Return Value | Description | |--------|--------------|-------------| | `getMinTps()` | `double` | Get server minimum TPS | | `getHighestLatencyPlayer()` | `Player` | Get player object with highest latency | | `getHighestLatencyPlayerName()` | `String` | Get name of player with highest latency | | `getHighestLatency()` | `long` | Get maximum latency value (milliseconds) | | `getPlayerLatency(Player player)` | `long` | Get specified player's latency (milliseconds) |

Project Structure

``` SyAPI/ ├── src/ │ └── main/ │ ├── java/cn/shiyuan/syapi/ │ │ ├── SyAPI.java # Main class │ │ ├── SyAPIProvider.java # API provider │ │ ├── StatsManager.java # Statistics manager │ │ ├── PlayerListener.java # Player event listener │ │ └── SyAPICommand.java # Command handler │ └── resources/ │ ├── plugin.yml # Plugin configuration │ └── data.yml # Data storage ├── pom.xml # Maven configuration └── README.md # Documentation ```

Permission Nodes

| Permission | Description | Default | |------------|-------------|---------| | `syapi.admin` | Admin permissions (reload, etc.) | OP | | `syapi.use` | Usage permissions (view statistics) | All players |

Data Storage

The plugin uses YAML files to store data, located at `plugins/SyAPI/data.yml`:

- `total-join-count`: Total login count - `max-online-players`: Historical maximum online players - `yesterday-join-count`: Yesterday's login count - `today-join-count`: Today's login count (automatically resets daily) - `current-date`: Current date - `yesterday-players`: Yesterday's player UUID list

Scheduled Tasks

The plugin automatically runs the following scheduled tasks after startup:

- Data Save: Updates minimum TPS every second - Data Save: Updates player latency data every second - Data Save: Checks for date changes every minute, automatically resets today's statistics - Data Save: Automatically saves data to file every 5 minutes

ADS