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; import net.uomc.mineshaft.blacksmith.Pickaxe; 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])) { Pickaxe pick = bot.getPickaxe(e.getMember()); int level = pick.getLevel(); Map upgradeCost = upgradeCost(pick); if (level >= pick.getMaxLevel()) { 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); pick.setLevel(level + 1); String pickName = pick.getName(); bot.sendSuccessMessage(e, "Your pickaxe has been upgraded to a **" + pickName + " Pickaxe**"); return; } 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()); Pickaxe pick = bot.getPickaxe(target); String pickName = pick.getName(); String nextPick = pick.getNextName(); String pickImage = pick.getImage(); Map upgradeCost = upgradeCost(pick); 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 ", p2) + pick.getEnchantmentString(); 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 upgradeCost(Pickaxe pick) { Map cost = new HashMap<>(); int level = pick.getLevel(); switch ((int) level) { case 0: cost.put(MineshaftItem.COPPER, 16l); break; case 1: cost.put(MineshaftItem.IRON, 32l); break; case 2: cost.put(MineshaftItem.GOLD, 64l); break; case 3: cost.put(MineshaftItem.DIAMOND, 32l); break; case 4: cost.put(MineshaftItem.NETHERITE, 128l); break; } return cost; } }