setPermission(implode(";", [ DefaultPermissionNames::COMMAND_ENCHANT_SELF, DefaultPermissionNames::COMMAND_ENCHANT_OTHER ])); } public function execute(CommandSender $sender, string $commandLabel, array $args){ if(!$this->testPermission($sender)){ return true; } if(count($args) < 2){ throw new InvalidCommandSyntaxException(); } $player = $this->fetchPermittedPlayerTarget($sender, $args[0], DefaultPermissionNames::COMMAND_ENCHANT_SELF, DefaultPermissionNames::COMMAND_ENCHANT_OTHER); if($player === null){ return true; } $item = $player->getInventory()->getItemInHand(); if($item->isNull()){ $sender->sendMessage(KnownTranslationFactory::commands_enchant_noItem()); return true; } $enchantment = StringToEnchantmentParser::getInstance()->parse($args[1]); if($enchantment === null){ $sender->sendMessage(KnownTranslationFactory::commands_enchant_notFound($args[1])); return true; } $level = 1; if(isset($args[2])){ $level = $this->getBoundedInt($sender, $args[2], 1, $enchantment->getMaxLevel()); if($level === null){ return false; } } $item->addEnchantment(new EnchantmentInstance($enchantment, $level)); $player->getInventory()->setItemInHand($item); self::broadcastCommandMessage($sender, KnownTranslationFactory::commands_enchant_success($player->getName())); return true; } }