๐ StatsService
StatsService lets developers read stored EventForge player stats and event history.
This is useful for:
- player profile menus
- Discord stats commands
- web dashboards
- holograms
- leaderboards
- admin panels
- analytics tools
Accessing the serviceโ
StatsService statsService = EventForgeAPI.getStatsService();
Always check the API first:
if (!EventForgeAPI.isAvailable()) {
return;
}
Available methodsโ
Optional<PlayerStatsInfo> getPlayerStats(UUID uuid);
Optional<PlayerStatsInfo> getPlayerStats(OfflinePlayer player);
Optional<PlayerEventStatsInfo> getPlayerEventStats(UUID uuid, String eventId);
Set<PlayerStatsInfo> getAllPlayerStats();
List<EventHistoryInfo> getEventHistory();
List<EventHistoryInfo> getRecentEventHistory(int limit);
int getTrackedPlayerCount();
int getHistoryCount();
Player statsโ
Get stored stats for a player:
StatsService statsService = EventForgeAPI.getStatsService();
statsService.getPlayerStats(player.getUniqueId()).ifPresent(stats -> {
player.sendMessage("Events played: " + stats.getEventsPlayed());
player.sendMessage("Wins: " + stats.getWins());
player.sendMessage("Total score: " + stats.getTotalScore());
player.sendMessage("Best score: " + stats.getBestScore());
});
Offline player statsโ
OfflinePlayer target = Bukkit.getOfflinePlayer("Steve");
EventForgeAPI.getStatsService()
.getPlayerStats(target)
.ifPresent(stats -> {
Bukkit.getLogger().info(target.getName()
+ " has played "
+ stats.getEventsPlayed()
+ " events.");
});
Per-event player statsโ
StatsService statsService = EventForgeAPI.getStatsService();
statsService.getPlayerEventStats(player.getUniqueId(), "mining_rush")
.ifPresent(eventStats -> {
player.sendMessage("Mining Rush played: " + eventStats.getPlayed());
player.sendMessage("Mining Rush wins: " + eventStats.getWins());
player.sendMessage("Mining Rush best score: " + eventStats.getBestScore());
});
All tracked player statsโ
Set<PlayerStatsInfo> allStats = EventForgeAPI.getStatsService().getAllPlayerStats();
for (PlayerStatsInfo stats : allStats) {
Bukkit.getLogger().info(stats.getName()
+ " - wins: "
+ stats.getWins());
}
Event historyโ
Get all stored event history:
List<EventHistoryInfo> history = EventForgeAPI.getStatsService().getEventHistory();
Get recent history:
List<EventHistoryInfo> recent = EventForgeAPI.getStatsService().getRecentEventHistory(5);
Example:
for (EventHistoryInfo entry : recent) {
Bukkit.getLogger().info(entry.getEventDisplayName()
+ " ended with "
+ entry.getParticipants()
+ " participant(s).");
}
Event winnersโ
EventHistoryInfo includes winner entries.
for (EventHistoryInfo history : EventForgeAPI.getStatsService().getRecentEventHistory(5)) {
Bukkit.getLogger().info("Event: " + history.getEventId());
for (EventWinnerInfo winner : history.getWinners()) {
Bukkit.getLogger().info("#"
+ winner.getPosition()
+ " "
+ winner.getName()
+ " - "
+ winner.getScore());
}
}
PlayerStatsInfoโ
PlayerStatsInfo contains stored player totals.
UUID uuid = stats.getUuid();
String name = stats.getName();
int eventsPlayed = stats.getEventsPlayed();
int wins = stats.getWins();
int totalScore = stats.getTotalScore();
int bestScore = stats.getBestScore();
Map<String, PlayerEventStatsInfo> eventStats = stats.getEventStats();
PlayerEventStatsInfoโ
PlayerEventStatsInfo contains stored stats for one event type.
String eventId = eventStats.getEventId();
int played = eventStats.getPlayed();
int wins = eventStats.getWins();
int totalScore = eventStats.getTotalScore();
int bestScore = eventStats.getBestScore();
EventHistoryInfoโ
EventHistoryInfo contains a completed event history entry.
String eventId = history.getEventId();
String displayName = history.getEventDisplayName();
long endedAt = history.getEndedAt();
int participants = history.getParticipants();
List<EventWinnerInfo> winners = history.getWinners();
EventWinnerInfoโ
EventWinnerInfo contains winner data from a completed event.
int position = winner.getPosition();
UUID uuid = winner.getUuid();
String name = winner.getName();
int score = winner.getScore();
Example: player profile menuโ
private void sendProfile(Player player) {
StatsService statsService = EventForgeAPI.getStatsService();
statsService.getPlayerStats(player.getUniqueId()).ifPresentOrElse(stats -> {
player.sendMessage("Events played: " + stats.getEventsPlayed());
player.sendMessage("Wins: " + stats.getWins());
player.sendMessage("Best score: " + stats.getBestScore());
}, () -> {
player.sendMessage("No EventForge stats found.");
});
}
Example: recent history commandโ
private void sendRecentHistory(CommandSender sender) {
StatsService statsService = EventForgeAPI.getStatsService();
for (EventHistoryInfo entry : statsService.getRecentEventHistory(5)) {
sender.sendMessage(entry.getEventDisplayName()
+ " - participants: "
+ entry.getParticipants());
}
}
Example: Discord stats commandโ
statsService.getPlayerStats(uuid).ifPresent(stats -> {
String message = "**" + stats.getName() + "**\n"
+ "Events played: " + stats.getEventsPlayed() + "\n"
+ "Wins: " + stats.getWins() + "\n"
+ "Best score: " + stats.getBestScore();
// Send message to Discord using your bot system.
});
Summaryโ
StatsService gives addons read-only access to EventForge statistics and event history.
Use it for menus, dashboards, Discord bots, player profiles, and analytics tools.