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