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 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); } } }