diff options
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/resources/commands/MyResourcesCommand.java')
| -rw-r--r-- | src/main/java/net/uomc/mineshaft/resources/commands/MyResourcesCommand.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/main/java/net/uomc/mineshaft/resources/commands/MyResourcesCommand.java b/src/main/java/net/uomc/mineshaft/resources/commands/MyResourcesCommand.java new file mode 100644 index 0000000..b172a1e --- /dev/null +++ b/src/main/java/net/uomc/mineshaft/resources/commands/MyResourcesCommand.java @@ -0,0 +1,53 @@ +package net.uomc.mineshaft.resources.commands; + +import java.util.List; + +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 MyResourcesCommand extends ResourceCommand { + + public MyResourcesCommand(ResourceManager resourceManager) { + super(resourceManager); + setCommandDetails(CommandDetails.from("items,inventory,inv,i", "Lists your current inventory of items", "inventory [@user]")); + + } + + @Override + public void execute(MessageReceivedEvent e, CustomBot op, String[] args) { + List<Resource> resources = getResourceManager().listResources(); + + Member member = PeelingUtils.getSingleMentionFromArgs(e); + boolean your = member.equals(e.getMember()); + StringBuilder stringBuilder = new StringBuilder(); + resources.stream().sorted((r1, r2) -> (int)(r1.get(member) - r2.get(member))).forEach(r -> { + long l = r.get(member); + if (l != 0) { + String v = r.prettyValue(l); + stringBuilder.append("**" + v + "** " + r.getName()); + stringBuilder.append("\n"); + } + }); + String name = (your ? "Your" : member.getEffectiveName() + "'s"); + if (stringBuilder.length() == 0) + stringBuilder.append(name + "inventory is empty"); + + op.sendMessage(e, name + " Inventory", stringBuilder.toString() + "\n*Total value: " + PeelingUtils.amountToString(calculateInventoryValue(member)) + "*"); + } + + public long calculateInventoryValue(Member member) { + return getResourceManager() + .getResources() + .stream() + .map(r -> r.get(member) * r.getValue()) + .reduce((long) 0, (a, b) -> a + b); + } + +} |
