57 $target = $this->fetchPermittedPlayerTarget($commandLabel, $sender, $args[0] ??
null, DefaultPermissionNames::COMMAND_CLEAR_SELF, DefaultPermissionNames::COMMAND_CLEAR_OTHER);
66 $targetItem = StringToItemParser::getInstance()->parse($args[1]) ?? LegacyStringToItemParser::getInstance()->parse($args[1]);
69 $targetItem->setCount($maxCount = $this->getInteger($sender, $args[2], -1));
73 $sender->sendMessage(KnownTranslationFactory::commands_give_item_notFound($args[1])->prefix(TextFormat::RED));
82 $target->getInventory(),
83 $target->getCursorInventory(),
84 $target->getArmorInventory(),
85 $target->getOffHandInventory()
89 if($targetItem !==
null && $maxCount === 0){
90 $count = $this->
countItems($inventories, $targetItem);
92 $sender->sendMessage(KnownTranslationFactory::commands_clear_testing($target->getName(), (
string) $count));
94 $sender->sendMessage(KnownTranslationFactory::commands_clear_failure_no_items($target->getName())->prefix(TextFormat::RED));
101 if($targetItem ===
null){
103 $clearedCount += $this->
countItems($inventories,
null);
104 foreach($inventories as $inventory){
105 $inventory->clearAll();
109 if($maxCount === -1){
110 $clearedCount += $this->
countItems($inventories, $targetItem);
111 foreach($inventories as $inventory){
112 $inventory->remove($targetItem);
116 foreach($inventories as $inventory){
117 foreach($inventory->all($targetItem) as $index => $item){
119 $reductionCount = min($item->getCount(), $maxCount);
120 $item->pop($reductionCount);
121 $clearedCount += $reductionCount;
122 $inventory->setItem($index, $item);
124 $maxCount -= $reductionCount;
133 if($clearedCount > 0){
134 Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_clear_success($target->getName(), (
string) $clearedCount));
136 $sender->sendMessage(KnownTranslationFactory::commands_clear_failure_no_items($target->getName())->prefix(TextFormat::RED));