setPermission("pocketmine.command.effect"); } public function execute(CommandSender $sender, $currentAlias, array $args){ if(!$this->testPermission($sender)){ return true; } if(count($args) < 2){ $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); return true; } $player = $sender->getServer()->getPlayer($args[0]); if($player === null){ $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.player.notFound")); return true; } if(strtolower($args[1]) === "clear"){ foreach($player->getEffects() as $effect){ $player->removeEffect($effect->getId()); } $sender->sendMessage(new TranslationContainer("commands.effect.success.removed.all", [$player->getDisplayName()])); return true; } $effect = Effect::getEffectByName($args[1]); if($effect === null){ $effect = Effect::getEffect((int) $args[1]); } if($effect === null){ $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.effect.notFound", [(string) $args[1]])); return true; } $duration = 300; $amplification = 0; if(count($args) >= 3){ $duration = (int) $args[2]; if(!($effect instanceof InstantEffect)){ $duration *= 20; } }elseif($effect instanceof InstantEffect){ $duration = 1; } if(count($args) >= 4){ $amplification = (int) $args[3]; } if(count($args) >= 5){ $v = strtolower($args[4]); if($v === "on" or $v === "true" or $v === "t" or $v === "1"){ $effect->setVisible(false); } } if($duration === 0){ if(!$player->hasEffect($effect->getId())){ if(count($player->getEffects()) === 0){ $sender->sendMessage(new TranslationContainer("commands.effect.failure.notActive.all", [$player->getDisplayName()])); }else{ $sender->sendMessage(new TranslationContainer("commands.effect.failure.notActive", [$effect->getName(), $player->getDisplayName()])); } return true; } $player->removeEffect($effect->getId()); $sender->sendMessage(new TranslationContainer("commands.effect.success.removed", [$effect->getName(), $player->getDisplayName()])); }else{ $effect->setDuration($duration)->setAmplifier($amplification); $player->addEffect($effect); self::broadcastCommandMessage($sender, new TranslationContainer("%commands.effect.success", [$effect->getName(), $effect->getId(), $effect->getAmplifier(), $player->getDisplayName(), $effect->getDuration() / 20])); } return true; } }