🔵Your own statistics system
The library supports a custom stats system.
You can create your stats system in 5 steps.
Setup with database.
If you want to use file storage, see
Create UserStats model (Choose the saving method - file or database)
Create a loader to load data from a file or database
Create UserStatsManager (It is important to manage users)
Create migration to create a database table (optional when you want to use file storage)
Setup all in your main class
First step - create UserStats model
public class MyUserStats implements UserStats,DbModel {
@Id
private final UUID uuid;
private final String name;
private final String arenaName;
private int wins;
private int defeats;
private int kills;
public UserStats(UUID uuid, String name, String arenaName) {
this.uuid = uuid;
this.name = name;
this.arenaName = arenaName;
}
public UserStats(UUID uuid, String name, String arenaName, int wins, int defeats,int kills) {
this.uuid = uuid;
this.name = name;
this.arenaName = arenaName;
this.wins = wins;
this.defeats = defeats;
this.kills = kills;
}
//or use @Table annotation
@Override
public String getTableName() {
return "users_stats"; //it is important
}
//Methods to add stats
public void addWin() {
wins++;
update();
}
public void addDefeat() {
defeats++;
update();
}
public void addKill() {
kills++;
update();
}
}Second step - create a loader
public class MyStatisticsLoader extends AbstractSqlDataBaseLoader<MyUserStats> {
private final ISQLDataBase sqlDataBase = DatabasesApiPlugin.getApi()
.getCurrentSqlDataBase();
@Override
public void load() {
load("myminigame_users_stats");
}
@Override
public void load(String tableName) {
QueryBuilder queryBuilder = new QueryBuilder();
String query = queryBuilder.selectAll(tableName).build();
try (ResultSet resultSet = sqlDataBase.getAsyncQuery().query(query)) {
while (resultSet.next()) {
MyUserStats userStats = new MyUserStats(
UUID.fromString(resultSet.getString("uuid")),
resultSet.getString("name"),
resultSet.getString("arenaName"),
resultSet.getInt("wins"),
resultSet.getInt("defeats"),
resultSet.getInt("kills"),
);
getData().add(userStats);
}
} catch (ExecutionException | InterruptedException | SQLException e) {
throw new RuntimeException(e);
}
}
}How to add stats?
Create method getUserStatsOrCreate(player, arena) in your UserStatsManager.
Add stats
Last updated