summaryrefslogtreecommitdiff
path: root/src/main/java/net/uomc/mineshaft/Pickaxes.java
diff options
context:
space:
mode:
authordavidovski <david@davidovski.xyz>2025-10-11 04:55:51 +0100
committerdavidovski <david@davidovski.xyz>2025-10-11 04:55:51 +0100
commit10b327e9f6441a8863227ce3e075a5a587654065 (patch)
tree5e94ecc91290febacf5181d3596563a7a24bd010 /src/main/java/net/uomc/mineshaft/Pickaxes.java
v0.3.1
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/Pickaxes.java')
-rw-r--r--src/main/java/net/uomc/mineshaft/Pickaxes.java168
1 files changed, 168 insertions, 0 deletions
diff --git a/src/main/java/net/uomc/mineshaft/Pickaxes.java b/src/main/java/net/uomc/mineshaft/Pickaxes.java
new file mode 100644
index 0000000..42a1f92
--- /dev/null
+++ b/src/main/java/net/uomc/mineshaft/Pickaxes.java
@@ -0,0 +1,168 @@
+package net.uomc.mineshaft;
+
+import java.io.File;
+import java.sql.SQLException;
+import java.util.Collections;
+
+import org.json.JSONObject;
+
+import com.mouldycheerio.dbot.util.DatabaseUtils;
+import com.mouldycheerio.dbot.util.PeelingUtils;
+
+import net.dv8tion.jda.api.entities.Member;
+
+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 String pickaxesDb;
+
+ public Pickaxes(Mineshaft mineshaft) {
+ pickaxesDb = (new File(mineshaft.getDatadir(), "pickaxes.db")).getPath();
+ initDB();
+ }
+
+ private void initDB() {
+ try {
+ DatabaseUtils.createSimpleKVtable(pickaxesDb, LEVEL_TABLE);
+ DatabaseUtils.createSimpleKVtable(pickaxesDb, FORTUNE_TABLE);
+ } catch (SQLException e) {
+ // e.printStackTrace();
+ }
+ }
+
+ public void setLevel(Member member, long value) {
+ try {
+ DatabaseUtils.putInKVtable(pickaxesDb, LEVEL_TABLE, member.getId() + ":" + member.getGuild().getId(), value);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public long getLevel(Member member) {
+ try {
+ return DatabaseUtils.getInKVtable(pickaxesDb, LEVEL_TABLE, member.getId() + ":" + member.getGuild().getId());
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return 0l;
+ }
+
+ private void setFortune(Member member, long value) {
+ try {
+ DatabaseUtils.putInKVtable(pickaxesDb, FORTUNE_TABLE, member.getId() + ":" + member.getGuild().getId(), value);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private long getFortune(Member member) {
+ try {
+ return DatabaseUtils.getInKVtable(pickaxesDb, FORTUNE_TABLE, member.getId() + ":" + member.getGuild().getId());
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return 0l;
+ }
+
+ public boolean isEnchanted(Member member) {
+ long fortune = getFortune(member);
+ return fortune > 0;
+ }
+
+ public String getPickaxeName(Member member) {
+ long level = getLevel(member);
+ return pickaxeLevelToName(level);
+ }
+
+ public String getNextPickaxeName(Member member) {
+ long level = getLevel(member) + 1;
+ if (level == getMaPickaxeLevel())
+ level = getMaPickaxeLevel();
+ return pickaxeLevelToName(level);
+ }
+
+ private static String pickaxeLevelToName(long level) {
+ switch ((int) level) {
+ case 0:
+ return "Stone";
+ case 1:
+ return "Copper";
+ case 2:
+ return "Iron";
+ case 3:
+ return "Gold";
+ case 4:
+ return "Diamond";
+ default:
+ return "Netherite";
+ }
+ }
+
+ public String getPickaxeImage(Member member) {
+ long level = getLevel(member);
+ switch ((int) level) {
+ case 0:
+ return isEnchanted(member) ?
+ "https://minecraft.wiki/images/Enchanted_Stone_Pickaxe.gif"
+ : "https://minecraft.wiki/images/Stone_Pickaxe_JE2_BE2.png";
+ case 1:
+ return isEnchanted(member) ?
+ "https://minecraft.wiki/images/Enchanted_Copper_Pickaxe.webp"
+ : "https://minecraft.wiki/images/Copper_Pickaxe_JE1_BE1.png";
+ case 2:
+ return isEnchanted(member) ?
+ "https://minecraft.wiki/images/Enchanted_Iron_Pickaxe.gif"
+ : "https://minecraft.wiki/images/Iron_Pickaxe_JE3_BE2.png";
+ case 3:
+ return isEnchanted(member) ?
+ "https://minecraft.wiki/images/Enchanted_Golden_Pickaxe.gif"
+ : "https://minecraft.wiki/images/Golden_Pickaxe_JE4_BE3.png";
+ case 4:
+ return isEnchanted(member) ?
+ "https://minecraft.wiki/images/Enchanted_Diamond_Pickaxe.gif"
+ : "https://minecraft.wiki/images/Diamond_Pickaxe_JE3_BE3.png";
+ default:
+ return isEnchanted(member) ?
+ "https://minecraft.wiki/images/Netherite_Pickaxe_JE3.png"
+ : "https://minecraft.wiki/images/Enchanted_Netherite_Pickaxe.gif";
+ }
+ }
+
+ public int getMaPickaxeLevel() {
+ return MAX_PICKAXE_LEVEL;
+ }
+
+ public int getPickaxeLevel(Member member) {
+ return (int) getLevel(member);
+ }
+
+ public int getPickaxeFortune(Member member) {
+ return (int) getFortune(member);
+ }
+
+ public int incrementFortune(Member member) {
+ setFortune(member, getFortune(member) + 1);
+ return (int) getFortune(member);
+ }
+
+ public static String getRomanNumber(int number) {
+ return String.join("", Collections.nCopies(number, "I"))
+ .replace("IIIII", "V")
+ .replace("IIII", "IV")
+ .replace("VV", "X")
+ .replace("VIV", "IX")
+ .replace("XXXXX", "L")
+ .replace("XXXX", "XL")
+ .replace("LL", "C")
+ .replace("LXL", "XC")
+ .replace("CCCCC", "D")
+ .replace("CCCC", "CD")
+ .replace("DD", "M")
+ .replace("DCD", "CM");
+ }
+
+}