API: Statistics
Methods for retrieving player order statistics.
Get Statistics
getPlayerStatistics
Get player order statistics.
Signature:
CompletableFuture<PlayerStats> getPlayerStatistics(UUID playerUuid)
Parameters:
playerUuid- UUID of the player
Returns: CompletableFuture<PlayerStats> - Player statistics
Example:
CompletableFuture<PlayerStats> future = ordersAPI.getPlayerStatistics(
player.getUniqueId()
);
future.thenAccept(stats -> {
if (stats == null || !stats.hasActivity()) {
player.sendMessage("No statistics available");
return;
}
player.sendMessage("Orders Created: " + stats.getOrdersCreated());
player.sendMessage("Orders Fulfilled: " + stats.getOrdersFulfilled());
player.sendMessage("Items Delivered: " + stats.getItemsDelivered());
player.sendMessage("Total Spent: " + ordersAPI.formatCurrency(stats.getTotalSpent()));
player.sendMessage("Total Earned: " + ordersAPI.formatCurrency(stats.getTotalEarned()));
});
PlayerStats Class
Methods
public class PlayerStats {
int getOrdersCreated(); // Number of orders created
int getOrdersFulfilled(); // Number of orders fulfilled
int getItemsDelivered(); // Total items delivered
double getTotalSpent(); // Total money spent
double getTotalEarned(); // Total money earned
boolean hasActivity(); // Has any activity
}
Statistics Explained
Orders Created:
- Total number of orders created by player
- Includes all statuses (pending, completed, cancelled)
Orders Fulfilled:
- Number of distinct orders player has delivered to
- Counts unique orders, not deliveries
Items Delivered:
- Total quantity of items delivered
- Sum of all items delivered across all orders
Total Spent:
- Total money spent on orders
- Sum of all order prices created
Total Earned:
- Total money earned from deliveries
- Sum of all payments received
Complete Example
// Get statistics
CompletableFuture<PlayerStats> future = ordersAPI.getPlayerStatistics(
player.getUniqueId()
);
future.thenAccept(stats -> {
if (stats == null) {
player.sendMessage("Failed to load statistics");
return;
}
if (!stats.hasActivity()) {
player.sendMessage("No order activity yet!");
return;
}
// Format statistics
player.sendMessage("=== Order Statistics ===");
player.sendMessage("Orders Created: " + stats.getOrdersCreated());
player.sendMessage("Orders Fulfilled: " + stats.getOrdersFulfilled());
player.sendMessage("Items Delivered: " + stats.getItemsDelivered());
player.sendMessage("Total Spent: " +
ordersAPI.formatCurrency(stats.getTotalSpent()));
player.sendMessage("Total Earned: " +
ordersAPI.formatCurrency(stats.getTotalEarned()));
// Calculate profit
double profit = stats.getTotalEarned() - stats.getTotalSpent();
player.sendMessage("Net Profit: " +
ordersAPI.formatCurrency(profit));
});
Best Practices
- Check for Activity: Use
hasActivity()before displaying - Handle Null: Always check for null return
- Format Currency: Use
formatCurrency()for money - Async Handling: Handle CompletableFuture properly
- Error Handling: Handle potential errors
Related Documentation
- Order Management - Order operations
- Economy Operations - Currency formatting