33    public const NAME = 
"PocketMine-MP";
 
   34    public const BASE_VERSION = 
"5.37.1";
 
   35    public const IS_DEVELOPMENT_BUILD = 
true;
 
   36    public const BUILD_CHANNEL = 
"stable";
 
   37    public const GITHUB_URL = 
"https://github.com/pmmp/PocketMine-MP";
 
   48    public const WORLD_DATA_VERSION = 1;
 
   52    public const TAG_WORLD_DATA_VERSION = 
"PMMPDataVersion"; 
 
   54    private function __construct(){
 
   58    private static ?
string $gitHash = 
null;
 
   60    public static function GIT_HASH() : string{
 
   61        if(self::$gitHash === null){
 
   62            $gitHash = str_repeat(
"00", 20);
 
   64            if(\Phar::running(
true) === 
""){
 
   65                $gitHash = Git::getRepositoryStatePretty(\
pocketmine\PATH);
 
   67                $pharPath = \Phar::running(
false);
 
   68                $phar = \Phar::isValidPharFilename($pharPath) ? new \Phar($pharPath) : new \PharData($pharPath);
 
   69                $meta = $phar->getMetadata();
 
   70                if(isset($meta[
"git"])){
 
   71                    $gitHash = $meta[
"git"];
 
   75            self::$gitHash = $gitHash;
 
   78        return self::$gitHash;
 
   81    private static ?
int $buildNumber = 
null;
 
   83    public static function BUILD_NUMBER() : int{
 
   84        if(self::$buildNumber === null){
 
   85            self::$buildNumber = 0;
 
   86            if(\Phar::running(
true) !== 
""){
 
   87                $pharPath = \Phar::running(
false);
 
   88                $phar = \Phar::isValidPharFilename($pharPath) ? new \Phar($pharPath) : new \PharData($pharPath);
 
   89                $meta = $phar->getMetadata();
 
   90                if(is_array($meta) && isset($meta[
"build"]) && is_int($meta[
"build"])){
 
   91                    self::$buildNumber = $meta[
"build"];
 
   96        return self::$buildNumber;
 
   99    private static ?VersionString $fullVersion = 
null;
 
  101    public static function VERSION() : VersionString{
 
  102        if(self::$fullVersion === null){
 
  103            self::$fullVersion = 
new VersionString(self::BASE_VERSION, self::IS_DEVELOPMENT_BUILD, self::BUILD_NUMBER());
 
  105        return self::$fullVersion;