SyAPI
Provides some obscure APIs for the development of other plugins
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