summaryrefslogtreecommitdiff
path: root/src/main/java/net/uomc/mineshaft/resources/commands
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/resources/commands')
-rw-r--r--src/main/java/net/uomc/mineshaft/resources/commands/GiveResourcesCommand.java112
-rw-r--r--src/main/java/net/uomc/mineshaft/resources/commands/ValuesCommand.java7
2 files changed, 62 insertions, 57 deletions
diff --git a/src/main/java/net/uomc/mineshaft/resources/commands/GiveResourcesCommand.java b/src/main/java/net/uomc/mineshaft/resources/commands/GiveResourcesCommand.java
index a98a452..2925bd4 100644
--- a/src/main/java/net/uomc/mineshaft/resources/commands/GiveResourcesCommand.java
+++ b/src/main/java/net/uomc/mineshaft/resources/commands/GiveResourcesCommand.java
@@ -2,6 +2,8 @@ package net.uomc.mineshaft.resources.commands;
import static java.lang.Math.abs;
+import java.util.List;
+import java.util.Arrays;
import java.util.Optional;
import com.mouldycheerio.dbot.CustomBot;
@@ -9,7 +11,6 @@ import com.mouldycheerio.dbot.commands.CommandDetails;
import com.mouldycheerio.dbot.util.PeelingUtils;
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.resources.Resource;
import net.uomc.mineshaft.resources.ResourceManager;
@@ -20,66 +21,73 @@ public class GiveResourcesCommand extends ResourceCommand {
public GiveResourcesCommand(ResourceManager resourceManager) {
super(resourceManager);
- setCommandDetails(CommandDetails.from("give,trade", "Give a user an item", "give [@user] [quantity] [item]"));
+ setCommandDetails(CommandDetails.from("give", "Give a user an item", "give [@user] [quantity] [item]"));
usage = "\n`" + getCommandDetails().getUsage() + "`";
}
@Override
public void execute(MessageReceivedEvent e, CustomBot op, String[] args) {
- if (args.length > 1) {
- String usermention = args[0];
- String quantitystring = args[1];
- String resourcename = getResourceManager().getPrimaryResourceName();
- if (args.length > 2) {
- resourcename = args[2];
- }
-
- boolean generate = false;
- String ownerid = op.getConfig().getString("ownerid");
- if (ownerid.equals(e.getAuthor().getId())) {
- if (args.length > 3) {
- if (args[3].equals("generate")) {
- generate = true;
- }
- }
- }
- Optional<Member> mentionToUser = PeelingUtils.mentionToMember(usermention, e.getGuild());
- if (mentionToUser.isPresent()) {
- Member member = mentionToUser.get();
- try {
- long quantity = Long.parseLong(quantitystring);
- quantity = abs(quantity);
-
- Resource resource = getResourceManager().getResource(resourcename);
- if (resource != null) {
-
- if (!generate && quantity > resource.get(e.getMember())) {
- op.sendErrorMessage(e,":x: You do not have enough " + resource.getName() + "!");
- } else {
- if (!generate) {
- resource.increment(e.getMember(), -quantity);
- }
- resource.increment(member, quantity);
- op.sendSuccessMessage(e, ":white_check_mark: You gave " + member.getAsMention() + " " + resource.prettyValue(quantity));
- }
- } else {
- op.sendErrorMessage(e, ":x: Please provide a valid resource!" + usage);
-
- }
-
- } catch (NumberFormatException ex) {
- op.sendErrorMessage(e,":x: Please provide a valid quantity!" + usage);
-
- }
-
- } else {
- op.sendErrorMessage(e, ":x: That user was not found!" + usage);
- }
- } else {
+ if (args.length < 3) {
op.sendErrorMessage(e, ":x: Invalid usage!" + usage);
+ return;
+ }
+ List<String> argList = Arrays.asList(args);
+
+ Optional<String> memberMention = argList.stream().filter(s -> s.startsWith("<@")).findFirst();
+
+ if (memberMention.isEmpty()) {
+ op.sendErrorMessage(e, ":x: Invalid usage!" + usage);
+ return;
+ }
+
+ Optional<Long> quantity = argList.stream().filter(s -> PeelingUtils.isLong(s)).map(s -> Long.parseLong(s))
+ .findFirst();
+ if (quantity.isEmpty()) {
+ op.sendErrorMessage(e, ":x: Invalid usage!" + usage);
+ return;
+ }
+ Optional<String> resourceName = argList.stream().filter(s -> !s.startsWith("<@") && !PeelingUtils.isLong(s))
+ .findFirst();
+ if (resourceName.isEmpty()) {
+ op.sendErrorMessage(e, ":x: Invalid usage!" + usage);
+ return;
+ }
+
+ boolean generate = argList.stream().filter(s -> "generate".equals(s)).findFirst().isPresent();
+ if (!e.getMember().getId().equals(op.getOwnerID())){
+ generate = false;
}
+
+ Optional<Member> mentionToUser = PeelingUtils.mentionToMember(memberMention.get(), e.getGuild());
+
+ if (!mentionToUser.isPresent()) {
+ op.sendErrorMessage(e, ":x: That user was not found!" + usage);
+ return;
+ }
+
+ Member member = mentionToUser.get();
+ long q = abs(quantity.get());
+
+ Resource resource = getResourceManager().getResource(resourceName.get());
+ if (resource == null) {
+ op.sendErrorMessage(e, ":x: Please provide a valid resource!" + usage);
+ return;
+ }
+
+ if (!generate && q > resource.get(e.getMember())) {
+ op.sendErrorMessage(e, ":x: You do not have enough " + resource.getName() + "!");
+ return;
+ }
+
+ if (!generate) {
+ resource.increment(e.getMember(), -q);
+ }
+
+ resource.increment(member, q);
+ op.sendSuccessMessage(e,
+ ":white_check_mark: You gave " + member.getAsMention() + " " + resource.prettyValue(q));
}
}
diff --git a/src/main/java/net/uomc/mineshaft/resources/commands/ValuesCommand.java b/src/main/java/net/uomc/mineshaft/resources/commands/ValuesCommand.java
index c094d83..084856b 100644
--- a/src/main/java/net/uomc/mineshaft/resources/commands/ValuesCommand.java
+++ b/src/main/java/net/uomc/mineshaft/resources/commands/ValuesCommand.java
@@ -7,6 +7,7 @@ import java.util.List;
import com.mouldycheerio.dbot.CustomBot;
import com.mouldycheerio.dbot.commands.CommandDetails;
import com.mouldycheerio.dbot.commands.CommandFail;
+import com.mouldycheerio.dbot.util.PeelingUtils;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.uomc.mineshaft.resources.Resource;
@@ -21,8 +22,6 @@ public class ValuesCommand extends ResourceCommand {
@Override
public void execute(MessageReceivedEvent e, CustomBot b, String[] args) throws CommandFail {
- long total = getResourceManager().getPrimaryResource().total();
-
List<Resource> resources = new ArrayList<Resource>(getResourceManager().getResources());
Collections.sort(resources, (r1, r2) -> Long.compare(r2.getValue(),r1.getValue()));
@@ -33,13 +32,11 @@ public class ValuesCommand extends ResourceCommand {
if (v < 0) {
stringBuilder.append("**???**");
} else {
- stringBuilder.append("**" + getResourceManager().getPrimaryResource().prettyValue(v) + "**");
+ stringBuilder.append("**" +PeelingUtils.amountToString(v) + "**");
}
stringBuilder.append("\n");
});
b.sendMessage(e, "Estimated Market Values", stringBuilder.toString());
}
-
-
}