package net.uomc.mineshaft; import java.io.File; import java.util.HashMap; import java.util.Map; import net.dv8tion.jda.api.entities.Member; public class PlayerStats { public static final int MAX_PICKAXE_LEVEL = 5; public static final String DIMENSION_TABLE = "dimension"; public static final String FARM_LEVEL_TABLE = "farms"; private String playersDb; private Map stats; public PlayerStats(Mineshaft mineshaft) { File playersDbFile = new File(mineshaft.getDatadir(), "players.db"); // migrate old file if exists if (!playersDbFile.exists()) { File oldplayersDbFile = new File(mineshaft.getDatadir(), "pickaxes.db"); if (oldplayersDbFile.exists()) { oldplayersDbFile.renameTo(playersDbFile); } } stats = new HashMap<>(); playersDb = playersDbFile.getPath(); initStats(); } private void initStats() { createStat(DIMENSION_TABLE); createStat(FARM_LEVEL_TABLE); } public SavedStat createStat(String name) { SavedStat savedStat = new SavedStat(playersDb, name); stats.put(name, savedStat); return savedStat; } public SavedStat getStat(String name) { if (stats.containsKey(name)) return stats.get(name); SavedStat savedStat = new SavedStat(playersDb, name); stats.put(name, savedStat); return savedStat; } public void setFarmLevel(Member member, long value) { getStat(FARM_LEVEL_TABLE).set(member, value); } public long getFarmLevel(String member, String guild) { return getStat(FARM_LEVEL_TABLE).get(member, guild); } public long getFarmLevel(Member member) { return getFarmLevel(member.getId(), member.getGuild().getId()); } public void setNether(Member member, boolean nether) { getStat(DIMENSION_TABLE).set(member, nether ? 1 : 0); } public boolean isNether(Member member) { return getStat(DIMENSION_TABLE).get(member) == 1; } public String getDbPath() { return playersDb; } }