$max){ $i = $max; } return $i; } /** * @param float $original * @param CommandSender $sender * @param string $input * @param float $min * @param float $max * * @return float */ 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 CommandSender $sender * @param mixed $value * @param float $min * @param float $max * * @return float */ 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(new TranslationContainer(TextFormat::RED . "%commands.generic.num.tooBig", [$input, (string) $max])); return null; } if($v < $min){ $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.num.tooSmall", [$input, (string) $min])); return null; } return $v; } }