summaryrefslogtreecommitdiff
path: root/src/main/java/net/uomc/mineshaft/PlayerStats.java
diff options
context:
space:
mode:
authordavidovski <david@davidovski.xyz>2025-10-31 17:49:48 +0000
committerdavidovski <david@davidovski.xyz>2025-10-31 17:49:48 +0000
commit5a008748459e230de0e875afff59e3b92c7aca0c (patch)
tree0d09aebd1bb5628237959a6d1b49d1a7772d86a6 /src/main/java/net/uomc/mineshaft/PlayerStats.java
parentfff63aaea786a5f1c59bbf99c999a2aa7bb810e5 (diff)
Work on v0.6
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/PlayerStats.java')
-rw-r--r--src/main/java/net/uomc/mineshaft/PlayerStats.java80
1 files changed, 80 insertions, 0 deletions
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<String, SavedStat> 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;
+ }
+}