From 10b327e9f6441a8863227ce3e075a5a587654065 Mon Sep 17 00:00:00 2001 From: davidovski Date: Sat, 11 Oct 2025 04:55:51 +0100 Subject: v0.3.1 --- src/main/java/net/uomc/mineshaft/Pickaxes.java | 168 +++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 src/main/java/net/uomc/mineshaft/Pickaxes.java (limited to 'src/main/java/net/uomc/mineshaft/Pickaxes.java') 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"); + } + +} -- cgit v1.2.3