GenisysPro  for Minecraft PE/Windows 10 v1.1.x
Feature-rich server software for Minecraft PE and Windows 10 Edition
ResourcePackManager Class Reference

Public Member Functions

 __construct (Server $server, string $path)
 
 resourcePacksRequired ()
 
 getResourceStack ()
 
 getPackById (string $id)
 
 getPackIdList ()
 

Constructor & Destructor Documentation

◆ __construct()

__construct ( Server  $server,
string  $path 
)

ResourcePackManager constructor.

Parameters
Server$server
string$path
63  {
64  $this->server = $server;
65  $this->path = $path;
66 
67  if(!file_exists($this->path)){
68  $this->server->getLogger()->debug($this->server->getLanguage()->translateString("pocketmine.resourcepacks.createFolder", [$path]));
69  mkdir($this->path);
70  }elseif(!is_dir($this->path)){
71  throw new \InvalidArgumentException($this->server->getLanguage()->translateString("pocketmine.resourcepacks.notFolder", [$path]));
72  }
73 
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");
78  }else{
79  $content = file_get_contents($file = $this->server->getFilePath() . "src/pocketmine/resources/resource_packs_eng.yml");
80  }
81  file_put_contents($this->path . "resource_packs.yml", $content);
82  }
83 
84  $this->resourcePacksConfig = new Config($this->path . "resource_packs.yml", Config::YAML, []);
85 
86  $this->serverForceResources = (bool) $this->resourcePacksConfig->get("force_resources", false);
87 
88  $this->server->getLogger()->info($this->server->getLanguage()->translateString("pocketmine.resourcepacks.load"));
89 
90  foreach($this->resourcePacksConfig->get("resource_stack", []) as $pos => $pack){
91  try{
92  $packPath = $this->path . DIRECTORY_SEPARATOR . $pack;
93  if(file_exists($packPath)){
94  $newPack = null;
95  //Detect the type of resource pack.
96  if(is_dir($packPath)){
97  $this->server->getLogger()->warning($this->server->getLanguage()->translateString("pocketmine.resourcepacks.folderNotSupported", [$path]));
98  }else{
99  $info = new \SplFileInfo($packPath);
100  switch($info->getExtension()){
101  case "zip":
102  $newPack = new ZippedResourcePack($packPath);
103  break;
104  case "mcpack":
105  $newPack = new ZippedResourcePack($packPath);
106  break;
107  default:
108  $this->server->getLogger()->warning($this->server->getLanguage()->translateString("pocketmine.resourcepacks.unsupportedType", [$path]));
109  break;
110  }
111  }
112 
113  if($newPack instanceof ResourcePack){
114  $this->resourcePacks[] = $newPack;
115  $this->uuidList[$newPack->getPackId()] = $newPack;
116  }
117  }else{
118  $this->server->getLogger()->warning($this->server->getLanguage()->translateString("pocketmine.resourcepacks.packNotFound", [$path]));
119  }
120  }catch(\Throwable $e){
121  $this->server->getLogger()->logException($e);
122  }
123  }
124 
125  $this->server->getLogger()->debug($this->server->getLanguage()->translateString("pocketmine.resourcepacks.loadFinished", [count($this->resourcePacks)]));
126  }

Member Function Documentation

◆ getPackById()

getPackById ( string  $id)
Parameters
string$id
Returns
ResourcePack|null
147  {
148  return $this->uuidList[$id] ?? null;
149  }

◆ getPackIdList()

getPackIdList ( )
Returns
string[]
154  : array{
155  return array_keys($this->uuidList);
156  }

◆ getResourceStack()

getResourceStack ( )
Returns
ResourcePack[]
138  : array{
139  return $this->resourcePacks;
140  }

◆ resourcePacksRequired()

resourcePacksRequired ( )
Returns
bool
131  : bool{
132  return $this->serverForceResources;
133  }

The documentation for this class was generated from the following file: