summaryrefslogtreecommitdiff
path: root/src/main/java/net/uomc/mineshaft/resources/commands/GiveResourcesCommand.java
blob: a98a452c5751685ca7db01acd36b4f399cc13340 (plain)
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
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);

        }
    }

}