summaryrefslogtreecommitdiff
path: root/src/main/java/net/uomc/mineshaft/PickaxeCommand.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/PickaxeCommand.java
v0.3.1
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/PickaxeCommand.java')
-rw-r--r--src/main/java/net/uomc/mineshaft/PickaxeCommand.java112
1 files changed, 112 insertions, 0 deletions
diff --git a/src/main/java/net/uomc/mineshaft/PickaxeCommand.java b/src/main/java/net/uomc/mineshaft/PickaxeCommand.java
new file mode 100644
index 0000000..6ca3e08
--- /dev/null
+++ b/src/main/java/net/uomc/mineshaft/PickaxeCommand.java
@@ -0,0 +1,112 @@
+package net.uomc.mineshaft;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.mouldycheerio.dbot.CustomBot;
+import com.mouldycheerio.dbot.commands.CommandDetails;
+import com.mouldycheerio.dbot.commands.CommandFail;
+import com.mouldycheerio.dbot.commands.DetailedCommand;
+import com.mouldycheerio.dbot.util.PeelingUtils;
+
+import net.dv8tion.jda.api.EmbedBuilder;
+import net.dv8tion.jda.api.entities.Member;
+import net.dv8tion.jda.api.entities.User;
+import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
+
+public class PickaxeCommand extends DetailedCommand {
+
+ private Mineshaft bot;
+
+ public PickaxeCommand(Mineshaft b) {
+ setCommandDetails(CommandDetails.from("pickaxe,pick", "", "pickaxe [user]"));
+ this.bot = b;
+ }
+
+ @Override
+ public void execute(MessageReceivedEvent e, CustomBot b, String[] args) throws CommandFail {
+ if (args.length > 0 && "upgrade".equalsIgnoreCase(args[0])) {
+ int level = bot.getPickaxes().getPickaxeLevel(e.getMember());
+ Map<MineshaftItem, Long> upgradeCost = upgradeCost(e.getMember());
+
+ if (level >= bot.getPickaxes().getMaPickaxeLevel()) {
+ bot.sendErrorMessage(e, ":x: Your pickaxe is already at the maximum level");
+ return;
+ }
+
+ if (!bot.hasItems(e.getMember(), upgradeCost)) {
+ bot.sendErrorMessage(e,
+ ":x: You need **" + String.join(",", bot.createItemList(bot.getMissingIngredients(e.getMember(), upgradeCost)).split("\n")) + "** to upgrade!"
+ );
+ return;
+ }
+
+ bot.removeItems(e.getMember(), upgradeCost);
+ bot.getPickaxes().setLevel(e.getMember(), level + 1);
+ String pickName = bot.getPickaxes().getPickaxeName(e.getMember());
+ bot.sendSuccessMessage(e, "Your pickaxe has been upgraded to a **" + pickName + " Pickaxe**");
+ return;
+ }
+
+ String pickName = bot.getPickaxes().getPickaxeName(e.getMember());
+ String nextPick = bot.getPickaxes().getNextPickaxeName(e.getMember());
+ String pickImage = bot.getPickaxes().getPickaxeImage(e.getMember());
+ int fortune = bot.getPickaxes().getPickaxeFortune(e.getMember());
+
+ Member target = PeelingUtils.getSingleMentionFromArgs(e);
+ String p1 = target.equals(e.getMember()) ? "You currently have" : String.format("%s currently has", e.getMember().getEffectiveName());
+ String p2 = target.equals(e.getMember()) ? "Your pickaxe" : String.format("%s's pickaxe", e.getMember().getEffectiveName());
+
+
+ Map<MineshaftItem, Long> upgradeCost = upgradeCost(target);
+
+ String upgradeString = "\n\nTo upgrade to a **" + nextPick + " Pickaxe **, use `" + bot.getCommandController().getPrefix() + "pickaxe upgrade`.\nUpgrade cost: **" + String.join(",", bot.createItemList(upgradeCost).split("\n")) + "**";
+ if (!target.equals(e.getMember())){
+ upgradeString = "";
+ }
+
+ String enchants = String.format("\n*%s pickaxe has no enchantments*", p2);
+ if (fortune > 0) {
+ enchants = String.format("\n%s pickaxe is enchanted with **Fortune %s**", p2,
+ Pickaxes.getRomanNumber(fortune));
+ }
+
+ EmbedBuilder em = new EmbedBuilder();
+ em.setTitle(p2);
+ em.setDescription(p1 + " a **" + pickName + " Pickaxe**" + enchants + upgradeString);
+ em.setThumbnail(pickImage);
+
+ e.getMessage().replyEmbeds(em.build()).queue();
+ }
+
+ private Map<MineshaftItem, Long> upgradeCost(Member m) {
+ Map<MineshaftItem, Long> cost = new HashMap<>();
+
+ int level = bot.getPickaxes().getPickaxeLevel(m);
+
+ switch ((int) level) {
+ case 0:
+ cost.put(MineshaftItem.COPPER, 16l);
+ //cost.put(MineshaftItem.XP, 5000l);
+ break;
+
+ case 1:
+ cost.put(MineshaftItem.IRON, 32l);
+ //cost.put(MineshaftItem.XP, 10000l);
+ break;
+ case 2:
+ cost.put(MineshaftItem.GOLD, 48l);
+ //cost.put(MineshaftItem.XP, 64000l);
+ break;
+ case 3:
+ cost.put(MineshaftItem.DIAMOND, 64l);
+ //cost.put(MineshaftItem.XP, 128000l);
+ break;
+ case 4:
+ cost.put(MineshaftItem.DIAMOND, 9999999999999999l);
+ break;
+ }
+
+ return cost;
+ }
+}