From dc825ad776f9fe9f763267874f6fa70c4870fc46 Mon Sep 17 00:00:00 2001 From: davidovski Date: Wed, 15 Oct 2025 04:01:15 +0100 Subject: v5 --- .../resources/commands/GiveResourcesCommand.java | 112 +++++++++++---------- .../resources/commands/ValuesCommand.java | 7 +- 2 files changed, 62 insertions(+), 57 deletions(-) (limited to 'src/main/java/net/uomc/mineshaft/resources/commands') 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 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 argList = Arrays.asList(args); + + Optional memberMention = argList.stream().filter(s -> s.startsWith("<@")).findFirst(); + + if (memberMention.isEmpty()) { + op.sendErrorMessage(e, ":x: Invalid usage!" + usage); + return; + } + + Optional 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 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 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 resources = new ArrayList(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()); } - - } -- cgit v1.2.3