From 4837ccb98303ccce5cd521ce91a0e9a3bcc701f0 Mon Sep 17 00:00:00 2001 From: alt3ri <95161279+alt3ri@users.noreply.github.com> Date: Mon, 25 Apr 2022 02:45:43 +0700 Subject: [PATCH] Added UID parameter Now you can delete other player's weapons with UID Usage: /clearwp [uid] --- .../command/commands/ClearWeaponsCommand.java | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/main/java/emu/grasscutter/command/commands/ClearWeaponsCommand.java b/src/main/java/emu/grasscutter/command/commands/ClearWeaponsCommand.java index 8fab1768b..fbe72db87 100644 --- a/src/main/java/emu/grasscutter/command/commands/ClearWeaponsCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/ClearWeaponsCommand.java @@ -1,5 +1,6 @@ package emu.grasscutter.command.commands; +import emu.grasscutter.Grasscutter; import emu.grasscutter.command.Command; import emu.grasscutter.command.CommandHandler; import emu.grasscutter.game.GenshinPlayer; @@ -10,20 +11,41 @@ import java.util.List; @Command(label = "clearweapons", usage = "clearweapons", description = "Deletes all unequipped and unlocked weapons, including yellow rarity ones from your inventory", - aliases = {"clearwpns"}, permission = "player.clearweapons") + aliases = {"clearwp"}, permission = "player.clearweapons") public final class ClearWeaponsCommand implements CommandHandler { @Override public void execute(GenshinPlayer sender, List args) { if (sender == null) { CommandHandler.sendMessage(null, "Run this command in-game."); - return; // TODO: clear player's weapons from console or other players + return; } - Inventory playerInventory = sender.getInventory(); + int target; + if (args.size() == 1) { + try { + target = Integer.parseInt(args.get(0)); + if (Grasscutter.getGameServer().getPlayerByUid(target) == null) { + target = sender.getUid(); + } + } catch (NumberFormatException e) { + CommandHandler.sendMessage(sender, "Invalid player id."); + return; + } + } else { + target = sender.getUid(); + } + GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target); + if (targetPlayer == null) { + CommandHandler.sendMessage(sender, "Player not found."); + return; + } + + Inventory playerInventory = targetPlayer.getInventory(); playerInventory.getItems().values().stream() .filter(item -> item.getItemType() == ItemType.ITEM_WEAPON) .filter(item -> !item.isLocked() && !item.isEquipped()) .forEach(item -> playerInventory.removeItem(item, item.getCount())); + sender.dropMessage("Cleared weapons for " + targetPlayer.getNickname() + " ."); } }