From 5a008748459e230de0e875afff59e3b92c7aca0c Mon Sep 17 00:00:00 2001 From: davidovski Date: Fri, 31 Oct 2025 17:49:48 +0000 Subject: Work on v0.6 --- src/main/java/net/uomc/mineshaft/PlayerStats.java | 80 +++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/main/java/net/uomc/mineshaft/PlayerStats.java (limited to 'src/main/java/net/uomc/mineshaft/PlayerStats.java') diff --git a/src/main/java/net/uomc/mineshaft/PlayerStats.java b/src/main/java/net/uomc/mineshaft/PlayerStats.java new file mode 100644 index 0000000..40ef349 --- /dev/null +++ b/src/main/java/net/uomc/mineshaft/PlayerStats.java @@ -0,0 +1,80 @@ +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; + } +} -- cgit v1.2.3