summaryrefslogtreecommitdiff
path: root/src/main/java/net/uomc/mineshaft/resources/commands/GiveResourcesCommand.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/resources/commands/GiveResourcesCommand.java')
-rw-r--r--src/main/java/net/uomc/mineshaft/resources/commands/GiveResourcesCommand.java85
1 files changed, 85 insertions, 0 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
new file mode 100644
index 0000000..a98a452
--- /dev/null
+++ b/src/main/java/net/uomc/mineshaft/resources/commands/GiveResourcesCommand.java
@@ -0,0 +1,85 @@
+package net.uomc.mineshaft.resources.commands;
+
+import static java.lang.Math.abs;
+
+import java.util.Optional;
+
+import com.mouldycheerio.dbot.CustomBot;
+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;
+
+public class GiveResourcesCommand extends ResourceCommand {
+
+ private String usage;
+
+ public GiveResourcesCommand(ResourceManager resourceManager) {
+ super(resourceManager);
+ setCommandDetails(CommandDetails.from("give,trade", "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 {
+ op.sendErrorMessage(e, ":x: Invalid usage!" + usage);
+
+ }
+ }
+
+}