From 582feb3bc25cc6c5b8b42e43217b243090200550 Mon Sep 17 00:00:00 2001 From: james <75051061+notsceptor@users.noreply.github.com> Date: Sun, 4 Feb 2024 07:12:55 +0000 Subject: [PATCH] Update WhoHasCMD.java Added functionality that clears all players with a specified item --- .../java/dev/plex/command/impl/WhoHasCMD.java | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/server/src/main/java/dev/plex/command/impl/WhoHasCMD.java b/server/src/main/java/dev/plex/command/impl/WhoHasCMD.java index 0f1fcf0..cbc1fa0 100644 --- a/server/src/main/java/dev/plex/command/impl/WhoHasCMD.java +++ b/server/src/main/java/dev/plex/command/impl/WhoHasCMD.java @@ -36,12 +36,30 @@ public class WhoHasCMD extends PlexCommand return messageComponent("materialNotFound", args[0]); } - final List players = Bukkit.getOnlinePlayers().stream().filter(player -> - player.getInventory().contains(material)).map(player -> Component.text(player.getName())).toList(); + boolean clearInventory = args.length > 1 && args[1].equalsIgnoreCase("clear"); - return players.isEmpty() ? messageComponent("nobodyHasThatMaterial") : - messageComponent("playersWithMaterial", Component.text(material.name()), - Component.join(JoinConfiguration.commas(true), players)); + if (clearInventory && !sender.hasPermission("plex.whohas.clear")) + { + return messageComponent("noPermissionNode", "plex.whohas.clear"); + } + + List players = Bukkit.getOnlinePlayers().stream().filter(player -> + player.getInventory().contains(material)).map(player -> { + if (clearInventory) + { + player.getInventory().remove(material); + player.updateInventory(); + } + return Component.text(player.getName()); + }).toList(); + + return players.isEmpty() ? + messageComponent("nobodyHasThatMaterial") : + (clearInventory ? + messageComponent("playersMaterialCleared", Component.text(material.name()), + Component.join(JoinConfiguration.commas(true), players)) : + messageComponent("playersWithMaterial", Component.text(material.name()), + Component.join(JoinConfiguration.commas(true), players))); } @Override