Compatibility
Minecraft: Java Edition
1.21.x
Platforms
Tags
Creators
Details
Licensed MIT
Published last month
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
- Server: Paper, Purpur 1.21.1
- Java 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:
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 countmax-online-players: Historical maximum online playersyesterday-join-count: Yesterday's login counttoday-join-count: Today's login count (automatically resets daily)current-date: Current dateyesterday-players: Yesterday's player UUID list
Scheduled Tasks
The plugin automatically runs the following scheduled tasks after startup:
- TPS Monitoring: Updates minimum TPS every second
- Latency Update: Updates player latency data every second
- Date Check: Checks for date changes every minute, automatically resets today's statistics
- Data Save: Automatically saves data to file every 5 minutes


