diff options
| author | davidovski <david@davidovski.xyz> | 2025-10-11 04:55:51 +0100 |
|---|---|---|
| committer | davidovski <david@davidovski.xyz> | 2025-10-11 04:55:51 +0100 |
| commit | 10b327e9f6441a8863227ce3e075a5a587654065 (patch) | |
| tree | 5e94ecc91290febacf5181d3596563a7a24bd010 /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.java | 112 |
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; + } +} |
