64 $this->server = $server;
67 if(!file_exists($this->path)){
68 $this->server->getLogger()->debug($this->server->getLanguage()->translateString(
"pocketmine.resourcepacks.createFolder", [$path]));
70 }elseif(!is_dir($this->path)){
71 throw new \InvalidArgumentException($this->server->getLanguage()->translateString(
"pocketmine.resourcepacks.notFolder", [$path]));
74 if(!file_exists($this->path .
"resource_packs.yml")){
75 $lang = $this->server->getProperty(
"settings.language");
76 if(file_exists($this->server->getFilePath() .
"src/pocketmine/resources/resource_packs_$lang.yml")){
77 $content = file_get_contents($file = $this->server->getFilePath() .
"src/pocketmine/resources/resource_packs_$lang.yml");
79 $content = file_get_contents($file = $this->server->getFilePath() .
"src/pocketmine/resources/resource_packs_eng.yml");
81 file_put_contents($this->path .
"resource_packs.yml", $content);
84 $this->resourcePacksConfig =
new Config($this->path .
"resource_packs.yml",
Config::YAML, []);
86 $this->serverForceResources = (bool) $this->resourcePacksConfig->get(
"force_resources",
false);
88 $this->server->getLogger()->info($this->server->getLanguage()->translateString(
"pocketmine.resourcepacks.load"));
90 foreach($this->resourcePacksConfig->get(
"resource_stack", []) as $pos => $pack){
92 $packPath = $this->path . DIRECTORY_SEPARATOR . $pack;
93 if(file_exists($packPath)){
96 if(is_dir($packPath)){
97 $this->server->getLogger()->warning($this->server->getLanguage()->translateString(
"pocketmine.resourcepacks.folderNotSupported", [$path]));
99 $info = new \SplFileInfo($packPath);
100 switch($info->getExtension()){
102 $newPack =
new ZippedResourcePack($packPath);
105 $newPack =
new ZippedResourcePack($packPath);
108 $this->server->getLogger()->warning($this->server->getLanguage()->translateString(
"pocketmine.resourcepacks.unsupportedType", [$path]));
113 if($newPack instanceof ResourcePack){
114 $this->resourcePacks[] = $newPack;
115 $this->uuidList[$newPack->getPackId()] = $newPack;
118 $this->server->getLogger()->warning($this->server->getLanguage()->translateString(
"pocketmine.resourcepacks.packNotFound", [$path]));
120 }
catch(\Throwable $e){
121 $this->server->getLogger()->logException($e);
125 $this->server->getLogger()->debug($this->server->getLanguage()->translateString(
"pocketmine.resourcepacks.loadFinished", [count($this->resourcePacks)]));