diff options
| author | davidovski <david@davidovski.xyz> | 2025-10-31 17:49:48 +0000 |
|---|---|---|
| committer | davidovski <david@davidovski.xyz> | 2025-10-31 17:49:48 +0000 |
| commit | 5a008748459e230de0e875afff59e3b92c7aca0c (patch) | |
| tree | 0d09aebd1bb5628237959a6d1b49d1a7772d86a6 /src/main/java/net/uomc/mineshaft/blacksmith/Pickaxe.java | |
| parent | fff63aaea786a5f1c59bbf99c999a2aa7bb810e5 (diff) | |
Work on v0.6
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/blacksmith/Pickaxe.java')
| -rw-r--r-- | src/main/java/net/uomc/mineshaft/blacksmith/Pickaxe.java | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/src/main/java/net/uomc/mineshaft/blacksmith/Pickaxe.java b/src/main/java/net/uomc/mineshaft/blacksmith/Pickaxe.java new file mode 100644 index 0000000..ffe18d5 --- /dev/null +++ b/src/main/java/net/uomc/mineshaft/blacksmith/Pickaxe.java @@ -0,0 +1,211 @@ +package net.uomc.mineshaft.blacksmith; + +import java.sql.SQLException; +import java.util.Collections; + +import com.mouldycheerio.dbot.util.DatabaseUtils; + +import net.dv8tion.jda.api.entities.Member; +import net.uomc.mineshaft.Mineshaft; +import net.uomc.mineshaft.SavedStat; + +public class Pickaxe extends Tool { + + public static final int MAX_PICKAXE_LEVEL = 5; + + public static final String LEVEL_TABLE = "pickaxe_level"; + public static final String FORTUNE_TABLE = "pickaxe_ench_fortune"; + public static final String EFFICIENCY_TABLE = "pickaxe_ench_efficiency"; + + private SavedStat levelStat; + private SavedStat fortuneStat; + private SavedStat efficiencyStat; + + public Pickaxe(Mineshaft mineshaft, Member member) { + super(mineshaft, member, "pickaxe"); + initStats(); + } + + private void initStats() { + System.out.println("initing stats"); + try { + upgradeTableVersion(); + } catch (SQLException e) { + e.printStackTrace(); + } + + levelStat = bot.getPlayerStats().getStat(LEVEL_TABLE); + fortuneStat = bot.getPlayerStats().getStat(FORTUNE_TABLE); + efficiencyStat = bot.getPlayerStats().getStat(EFFICIENCY_TABLE); + } + + private void upgradeTableVersion() throws SQLException { + String dbPath = bot.getPlayerStats().getDbPath(); + String oldLevelTable = "levels"; + System.out.println("checking if table " + oldLevelTable + " exists..."); + if (DatabaseUtils.tableExists(dbPath, oldLevelTable)) { + System.out.println("it does!"); + if (DatabaseUtils.tableExists(dbPath, LEVEL_TABLE)) { + DatabaseUtils.deleteTable(dbPath, LEVEL_TABLE); + } + + DatabaseUtils.renameTable(dbPath, oldLevelTable, LEVEL_TABLE); + } + + String oldFortuneTable = "ench_fortune"; + if (DatabaseUtils.tableExists(dbPath, oldFortuneTable)) { + if (DatabaseUtils.tableExists(dbPath, FORTUNE_TABLE)) { + DatabaseUtils.deleteTable(dbPath, FORTUNE_TABLE); + } + + DatabaseUtils.renameTable(dbPath, oldFortuneTable, FORTUNE_TABLE); + } + + String oldEfficiencyTable = "ench_efficiency"; + if (DatabaseUtils.tableExists(dbPath, oldEfficiencyTable)) { + if (DatabaseUtils.tableExists(dbPath, EFFICIENCY_TABLE)) { + DatabaseUtils.deleteTable(dbPath, EFFICIENCY_TABLE); + } + + DatabaseUtils.renameTable(dbPath, oldEfficiencyTable, EFFICIENCY_TABLE); + } + } + + + public void setLevel(long value) { + levelStat.set(member, value); + } + + public int getLevel() { + return (int) levelStat.get(member); + } + + public void setEfficiency(int value) { + efficiencyStat.set(member, value); + } + + public int getEfficiency() { + return (int) efficiencyStat.get(member); + } + + public void setFortune(int value) { + efficiencyStat.set(member, value); + } + + public int getFortune() { + return (int) fortuneStat.get(member); + } + + public boolean isEnchanted() { + long fortune = getFortune(); + long eff = getEfficiency(); + return fortune+eff > 0; + } + + public String getName() { + long level = getLevel(); + return pickaxeLevelToName(level); + } + + public String getNextName() { + long level = getLevel() + 1; + if (level == getMaxLevel()) + level = getMaxLevel(); + + return pickaxeLevelToName(level); + } + + public 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 getImage() { + long level = getLevel(); + switch ((int) level) { + case 0: + return isEnchanted() ? + "https://minecraft.wiki/images/Enchanted_Stone_Pickaxe.gif" + : "https://minecraft.wiki/images/Stone_Pickaxe_JE2_BE2.png"; + case 1: + return isEnchanted() ? + "https://minecraft.wiki/images/Enchanted_Copper_Pickaxe.webp" + : "https://minecraft.wiki/images/Copper_Pickaxe_JE1_BE1.png"; + case 2: + return isEnchanted() ? + "https://minecraft.wiki/images/Enchanted_Iron_Pickaxe.gif" + : "https://minecraft.wiki/images/Iron_Pickaxe_JE3_BE2.png"; + case 3: + return isEnchanted() ? + "https://minecraft.wiki/images/Enchanted_Golden_Pickaxe.gif" + : "https://minecraft.wiki/images/Golden_Pickaxe_JE4_BE3.png"; + case 4: + return isEnchanted() ? + "https://minecraft.wiki/images/Enchanted_Diamond_Pickaxe.gif" + : "https://minecraft.wiki/images/Diamond_Pickaxe_JE3_BE3.png"; + default: + return isEnchanted() ? + "https://minecraft.wiki/images/Netherite_Pickaxe_JE3.png" + : "https://minecraft.wiki/images/Enchanted_Netherite_Pickaxe.gif"; + } + } + + public int getMaxLevel() { + return MAX_PICKAXE_LEVEL; + } + + public int incrementFortune() { + fortuneStat.increment(member, 1); + return (int) getFortune(); + } + + public int incrementEfficiency() { + efficiencyStat.increment(member, 1); + return (int) getEfficiency(); + } + + 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"); + } + + public String getEnchantmentString() { + int fortune = getFortune(); + int efficiency = getEfficiency(); + String curr = ""; + if (fortune > 0 || efficiency > 0) { + curr = "is enchanted with "; + if (fortune > 0) + curr += "**Fortune " + Pickaxe.getRomanNumber(fortune) + "** "; + if (efficiency > 0) + curr += "**Efficiency " + Pickaxe.getRomanNumber(efficiency) + "** "; + } else { + curr = "has no enchantments"; + } + return curr; + } + +} |
