$max){ $i = $max; } return $i; } protected function getRelativeDouble(float $original, CommandSender $sender, string $input, float $min = self::MIN_COORD, float $max = self::MAX_COORD) : float{ if($input[0] === "~"){ $value = $this->getDouble($sender, substr($input, 1)); return $original + $value; } return $this->getDouble($sender, $input, $min, $max); } /** * @param mixed $value */ protected function getDouble(CommandSender $sender, $value, float $min = self::MIN_COORD, float $max = self::MAX_COORD) : float{ $i = (double) $value; if($i < $min){ $i = $min; }elseif($i > $max){ $i = $max; } return $i; } protected function getBoundedInt(CommandSender $sender, string $input, int $min, int $max) : ?int{ if(!is_numeric($input)){ throw new InvalidCommandSyntaxException(); } $v = (int) $input; if($v > $max){ $sender->sendMessage(KnownTranslationFactory::commands_generic_num_tooBig($input, (string) $max)->prefix(TextFormat::RED)); return null; } if($v < $min){ $sender->sendMessage(KnownTranslationFactory::commands_generic_num_tooSmall($input, (string) $min)->prefix(TextFormat::RED)); return null; } return $v; } }