1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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;
}
}
|