summaryrefslogtreecommitdiff
path: root/src/main/java/net/uomc/mineshaft/Pickaxes.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/Pickaxes.java')
-rw-r--r--src/main/java/net/uomc/mineshaft/Pickaxes.java122
1 files changed, 115 insertions, 7 deletions
diff --git a/src/main/java/net/uomc/mineshaft/Pickaxes.java b/src/main/java/net/uomc/mineshaft/Pickaxes.java
index 42a1f92..16d6958 100644
--- a/src/main/java/net/uomc/mineshaft/Pickaxes.java
+++ b/src/main/java/net/uomc/mineshaft/Pickaxes.java
@@ -3,20 +3,27 @@ package net.uomc.mineshaft;
import java.io.File;
import java.sql.SQLException;
import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
import org.json.JSONObject;
import com.mouldycheerio.dbot.util.DatabaseUtils;
import com.mouldycheerio.dbot.util.PeelingUtils;
+import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
-class Pickaxes {
+public class Pickaxes {
private static final int MAX_PICKAXE_LEVEL = 5;
private static final String LEVEL_TABLE = "levels";
private static final String FORTUNE_TABLE = "ench_fortune";
+ private static final String EFFICIENCY_TABLE = "ench_efficiency";
+ private static final String DIMENSION_TABLE = "dimension";
+
+ private static final String FARM_LEVEL_TABLE = "farm";
private String pickaxesDb;
@@ -27,11 +34,45 @@ class Pickaxes {
private void initDB() {
try {
- DatabaseUtils.createSimpleKVtable(pickaxesDb, LEVEL_TABLE);
DatabaseUtils.createSimpleKVtable(pickaxesDb, FORTUNE_TABLE);
} catch (SQLException e) {
- // e.printStackTrace();
}
+ try {
+ DatabaseUtils.createSimpleKVtable(pickaxesDb, DIMENSION_TABLE);
+ } catch (SQLException e) {
+ }
+ try {
+ DatabaseUtils.createSimpleKVtable(pickaxesDb, EFFICIENCY_TABLE);
+ } catch (SQLException e) {
+ }
+ try {
+ DatabaseUtils.createSimpleKVtable(pickaxesDb, LEVEL_TABLE);
+ } catch (SQLException e) {
+ }
+ try {
+ DatabaseUtils.createSimpleKVtable(pickaxesDb, FARM_LEVEL_TABLE);
+ } catch (SQLException e) {
+ }
+ }
+
+ public void setFarmLevel(Member member, long value) {
+ try {
+ DatabaseUtils.putInKVtable(pickaxesDb, FARM_LEVEL_TABLE, member.getId() + ":" + member.getGuild().getId(), value);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ public long getFarmLevel(String member, String guild) {
+ try {
+ return DatabaseUtils.getInKVtable(pickaxesDb, FARM_LEVEL_TABLE, member + ":" + guild);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return 0l;
+ }
+
+ public long getFarmLevel(Member member) {
+ return getFarmLevel(member.getId(), member.getGuild().getId());
}
public void setLevel(Member member, long value) {
@@ -42,15 +83,52 @@ class Pickaxes {
}
}
+ public long getLevel(String member, String guild) {
+ try {
+ return DatabaseUtils.getInKVtable(pickaxesDb, LEVEL_TABLE, member + ":" + guild);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return 0l;
+ }
+
public long getLevel(Member member) {
+ return getLevel(member.getId(), member.getGuild().getId());
+ }
+ public List<String> getMembersGuilds() {
+ try {
+ return DatabaseUtils.listKeys(pickaxesDb, LEVEL_TABLE);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return Collections.emptyList();
+ }
+
+ public List<String> getMembers(Guild guild) {
+ return getMembersGuilds().stream().filter(m -> guild.getId().equals(m.split(":")[1])).map(m -> m.split(":")[0]).collect(Collectors.toList());
+ }
+
+ private void setEfficiency(Member member, long value) {
try {
- return DatabaseUtils.getInKVtable(pickaxesDb, LEVEL_TABLE, member.getId() + ":" + member.getGuild().getId());
+ DatabaseUtils.putInKVtable(pickaxesDb, EFFICIENCY_TABLE, member.getId() + ":" + member.getGuild().getId(), value);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public long getEfficiency(String member, String guild) {
+ try {
+ return DatabaseUtils.getInKVtable(pickaxesDb, EFFICIENCY_TABLE, member + ":" + guild);
} catch (SQLException e) {
e.printStackTrace();
}
return 0l;
}
+ public long getEfficiency(Member member) {
+ return getEfficiency(member.getId(), member.getGuild().getId());
+ }
+
private void setFortune(Member member, long value) {
try {
DatabaseUtils.putInKVtable(pickaxesDb, FORTUNE_TABLE, member.getId() + ":" + member.getGuild().getId(), value);
@@ -59,15 +137,36 @@ class Pickaxes {
}
}
- private long getFortune(Member member) {
+ public long getFortune(String member, String guild) {
try {
- return DatabaseUtils.getInKVtable(pickaxesDb, FORTUNE_TABLE, member.getId() + ":" + member.getGuild().getId());
+ return DatabaseUtils.getInKVtable(pickaxesDb, FORTUNE_TABLE, member + ":" + guild);
} catch (SQLException e) {
e.printStackTrace();
}
return 0l;
}
+ public long getFortune(Member member) {
+ return getFortune(member.getId(), member.getGuild().getId());
+ }
+
+ public void setNether(Member member, boolean nether) {
+ try {
+ DatabaseUtils.putInKVtable(pickaxesDb, DIMENSION_TABLE, member.getId() + ":" + member.getGuild().getId(), nether ? 1: 0);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public boolean isNether(Member member) {
+ try {
+ return DatabaseUtils.getInKVtable(pickaxesDb, DIMENSION_TABLE, member.getId() + ":" + member.getGuild().getId()) == 1;
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+
public boolean isEnchanted(Member member) {
long fortune = getFortune(member);
return fortune > 0;
@@ -85,7 +184,7 @@ class Pickaxes {
return pickaxeLevelToName(level);
}
- private static String pickaxeLevelToName(long level) {
+ public static String pickaxeLevelToName(long level) {
switch ((int) level) {
case 0:
return "Stone";
@@ -144,11 +243,20 @@ class Pickaxes {
return (int) getFortune(member);
}
+ public int getPickaxeEfficiency(Member member) {
+ return (int) getEfficiency(member);
+ }
+
public int incrementFortune(Member member) {
setFortune(member, getFortune(member) + 1);
return (int) getFortune(member);
}
+ public int incrementEfficiency(Member member) {
+ setEfficiency(member, getEfficiency(member) + 1);
+ return (int) getEfficiency(member);
+ }
+
public static String getRomanNumber(int number) {
return String.join("", Collections.nCopies(number, "I"))
.replace("IIIII", "V")