PageRenderTime 63ms CodeModel.GetById 36ms RepoModel.GetById 0ms app.codeStats 0ms

/SkyWar MCG76 v2/SkyWars-old-mg76--master/src/mcg76/skywars/SkyWarsConfiguration.php

https://gitlab.com/Skull3x/WorkingInProgress-Plugins-Sourcecode-For-Dev
PHP | 239 lines | 158 code | 34 blank | 47 comment | 23 complexity | 1a0db747c0dd0df3b989335156f0311c MD5 | raw file
  1. <?php
  2. namespace mcg76\skywars;
  3. use mcg76\skywars\ArenaPlayerLocation;
  4. use mcg76\skywars\ArenaChestLocation;
  5. use mcg76\skywars\ArenaKit;
  6. use mcg76\skywars\Arena;
  7. use pocketmine\Player;
  8. use pocketmine\Server;
  9. use pocketmine\utils\Config;
  10. use pocketmine\level\Position;
  11. use pocketmine\level\Level;
  12. use pocketmine\math\Vector3 as Vector3;
  13. /**
  14. * MCG76 SkyWarsConfiguration
  15. *
  16. * Copyright (C) 2014 minecraftgenius76
  17. * YouTube Channel: http://www.youtube.com/user/minecraftgenius76
  18. *
  19. * @author minecraftgenius76@gmail.com
  20. *
  21. */
  22. class SkyWarsConfiguration {
  23. private $pgin;
  24. public function __construct(SkyWarsPlugIn $pg) {
  25. $this->pgin = $pg;
  26. }
  27. public function loadConfiguration() {
  28. //$this->pgin->saveDefaultConfig ();
  29. //$this->pgin->reloadConfig ();
  30. $path = $this->pgin->getDataFolder();
  31. if (! file_exists ( $path )) {
  32. @mkdir ($this->pgin->getDataFolder());
  33. }
  34. //@mkdir ( $this->pgin->getDataFolder() );
  35. $this->pgin->config = (new Config ( $this->pgin->getDataFolder () . "config.yml", Config::YAML, array (
  36. "districtborder" => "off",
  37. "message" => "This is end of the skywars district",
  38. "game_play_countdown_wait_time" => "5",
  39. "spawnmods" => "yes",
  40. "skywars_base_world" => "skywarsbase1",
  41. "skywars_play_world" => "skywarsbase1_play",
  42. "skywars_lobby_world" => "skywarshome",
  43. "skywars_lobby_x" => "153",
  44. "skywars_lobby_y" => "58",
  45. "skywars_lobby_z" => "151",
  46. "skywars_shop_sales1_x" => "144",
  47. "skywars_shop_sales1_y" => "57",
  48. "skywars_shop_sales1_z" => "138",
  49. "skywars_shop_sales2_x" => "171",
  50. "skywars_shop_sales2_y" => "63",
  51. "skywars_shop_sales2_z" => "164",
  52. "blocks" => "3000"
  53. ) ))->getAll ();
  54. //$this->createTestData();
  55. // load arena profile
  56. // $this->loadArenaProfile();
  57. // load spawn location
  58. // $this->loadArenaSpawnLocations ();
  59. $this->loadArenaConfigurations();
  60. }
  61. public function loadArenaConfigurations() {
  62. $this->pgin->arenas = Arena::loadArenas($this->pgin);
  63. $this->pgin->arenaPlayerSpawnLocations = ArenaPlayerLocation::loadPlayerLocation($this->pgin);
  64. $this->pgin->arenaPlayerSpawnLocationsSingle = $this->pgin->arenaPlayerSpawnLocations;
  65. $this->pgin->arenaPlayerSpawnLocationsTeam = $this->pgin->arenaPlayerSpawnLocations;
  66. //$this->pgin->arenaChestSpawnLocations = ArenaChestLocation::loadChestLocation($this->pgin);
  67. //$this->pgin->singleClickButtons = ArenaSingleClickButton::loadSingleClickButton($this->pgin);
  68. //$this->pgin->teamClickButtons = ArenaTeamClickButton::loadTeamClickButton($this->pgin);
  69. //create one to one mapping of click button and spawn location
  70. foreach ($this->pgin->arenaPlayerSpawnLocations as $clickbtn) {
  71. //$pos = array_pop($this->pgin->arenaPlayerSpawnLocations);
  72. $pos = $clickbtn->spawnLocation;
  73. $key = $clickbtn->buttonLocation->x . "_" . $clickbtn->buttonLocation->y . "_" . $clickbtn->buttonLocation->z;
  74. $this->pgin->mappingClickButtonsToSpawnLocations[$key] = $clickbtn;
  75. $this->log("map btn:".$key." to -> ". $pos->x." ".$pos->y." ".$pos->z);
  76. }
  77. $this->log("mapping total =".count($this->pgin->mappingClickButtonsToSpawnLocations));
  78. }
  79. public function createTestData() {
  80. // $this->log("sample arena");
  81. // $sampleArena = new Arena ( $this->pgin, "skywar1" );
  82. // $sampleArena->testSave();
  83. // $this->log("sample player");
  84. // $samplePlayerLocation = new ArenaPlayerLocation ( $this->pgin, "player1", new Vector3 ( 128, 128, 128 ), "skywar1" );
  85. // $samplePlayerLocation->testSave();
  86. // $this->log("sample chest");
  87. // $sampleChestLocation = new ArenaChestLocation($this->pgin, "chest1", new Vector3 ( 128, 128, 128 ), "skywar1" );
  88. // $sampleChestLocation->testSave();
  89. // Arena::loadArenas($this->pgin);
  90. // ArenaPlayerLocation::loadPlayerLocation($this->pgin);
  91. // ArenaChestLocation::loadChestLocation($this->pgin);
  92. // $teamButton = new ArenaTeamClickButton($this->pgin, "team1_join_button", new Vector3 ( 128, 128, 128 ), "skywar1");
  93. // $teamButton->testSave();
  94. // $singleButton = new ArenaSingleClickButton($this->pgin, "player1_join_button", new Vector3 ( 128, 128, 128 ), "skywar1");
  95. // $singleButton->testSave();
  96. }
  97. public function loadArenaProfile() {
  98. $path = $this->pgin->getDataFolder() . "arena/";
  99. if (! file_exists ( $path )) {
  100. @mkdir ( $this->pgin->getDataFolder() );
  101. @mkdir ( $path );
  102. return;
  103. }
  104. $this->log ( "loading arena profiles on " . $path );
  105. $handler = opendir ( $path );
  106. while ( ($filename = readdir ( $handler )) !== false ) {
  107. $this->log ( "file - " . $filename );
  108. if ($filename != "." && $filename != "..") {
  109. $data = new Config ( $path . $filename, Config::YAML );
  110. $xname = $data->get ( "arenaName" );
  111. // load levels
  112. Server::getInstance ()->loadLevel ( $xname );
  113. if (($pLevel = Server::getInstance ()->getLevelByName ( $xname )) === null)
  114. continue;
  115. $name = str_replace ( ".yml", "", $filename );
  116. $spawnLocation = null;
  117. if ($data->get ( "levelSpawnLocationX" ) != null) {
  118. $spawnLocation = new Position ( $data->get ( "levelSpawnLocationX" ), $data->get ( "levelSpawnLocationY" ), $data->get ( "levelSpawnLocationZ" ), $pLevel );
  119. }
  120. $pos1 = null;
  121. if ($data->get ( "pos1X" ) != null) {
  122. $pos1 = new Position ( $data->get ( "pos1X" ), $data->get ( "pos1Y" ), $data->get ( "pos1Z" ), $pLevel );
  123. }
  124. $pos2 = null;
  125. if ($data->get ( "pos2X" ) != null) {
  126. $pos2 = new Position ( $data->get ( "pos2X" ), $data->get ( "pos2Y" ), $data->get ( "pos2Z" ), $pLevel );
  127. }
  128. if ($data->get ( "chestX" ) != null) {
  129. $chestLocation = new Position ( $data->get ( "chestX" ), $data->get ( "chestY" ), $data->get ( "chestZ" ), $pLevel );
  130. }
  131. $status = $data->get ( "status" );
  132. $name = $data->get ( "arenaName" );
  133. $levelName = $data->get ( "levelName" );
  134. $templateWorldName = $data->get ( "templateWorldName" );
  135. $maxPlayers = $data->get ( "maxPlayers" );
  136. $maxplayerSpawnLocations = $data->get ( "maxplayerSpawnLocations" );
  137. $arena = new Arena ( $this->pgin, $name );
  138. $arena->levelName = $levelName;
  139. $arena->templateWorldName = $templateWorldName;
  140. $arena->maxPlayers = $maxPlayers;
  141. $arena->maxplayerSpawnLocations = $maxplayerSpawnLocations;
  142. $arena->pos1 = $pos1;
  143. $arena->pos2 = $pos2;
  144. $arena->status = $status;
  145. $this->pgin->maps [$xname] = $map;
  146. $this->log ( "playworld count: " . count ( $this->pgin->maps ) );
  147. }
  148. }
  149. closedir ( $handler );
  150. }
  151. public function loadArenaSpawnLocations() {
  152. $path = $this->pgin->getDataFolder () . "arena/playerlocation/";
  153. if (! file_exists ( $path )) {
  154. @mkdir ( $this->pgin->getDataFolder () );
  155. @mkdir ( $path );
  156. return;
  157. }
  158. $this->log ( "load arena player spawn location " . $path );
  159. $handler = opendir ( $path );
  160. while ( ($filename = readdir ( $handler )) !== false ) {
  161. $this->log ( "file - " . $filename );
  162. if ($filename != "." && $filename != "..") {
  163. $data = new Config ( $path . $filename, Config::YAML );
  164. // $this->log ( "loading : " . $data->get ( "name" ) );
  165. $xname = $data->get ( "name" );
  166. $levelname = $data->get ( "levelname" );
  167. // load levels
  168. Server::getInstance ()->loadLevel ( $levelname );
  169. if (($pLevel = Server::getInstance ()->getLevelByName ( $levelname )) === null)
  170. continue;
  171. $name = str_replace ( ".yml", "", $filename );
  172. $spawnLocation = new Position ( $data->get ( "spawnX" ), $data->get ( "spawnY" ), $data->get ( "spawnZ" ), $pLevel );
  173. $chestLocation = new Position ( $data->get ( "chestX" ), $data->get ( "chestY" ), $data->get ( "chestZ" ), $pLevel );
  174. // $xname = $data->get ( "name" );
  175. $status = $data->get ( "status" );
  176. $chestFilled = $data->get ( "chestFilled" );
  177. $levelname = $data->get ( "levelname" );
  178. $ownerName = $data->get ( "ownername" );
  179. $shared = $data->set ( "shared" );
  180. $this->ownerName = $ownerName;
  181. $this->log ( "loading player profile : " . $name );
  182. $map = new SkyBlockPlayer ( $this->pgin, $name );
  183. $map->spawnLocation = $spawnLocation;
  184. $map->chestLocation = $chestLocation;
  185. $map->chestFilled = $chestFilled;
  186. $map->status = $status;
  187. $map->levelname = $levelname;
  188. $map->ownerName = $ownerName;
  189. $map->shared = $shared;
  190. $this->log ( "$levelname: " . $levelname . " shared:" . $shared . " owner " . $ownerName );
  191. $this->skyplayers [$xname] = $map;
  192. $this->log ( "playworld count: " . count ( $this->skyplayers ) );
  193. }
  194. }
  195. closedir ( $handler );
  196. }
  197. /**
  198. * Logging util function
  199. *
  200. * @param unknown $msg
  201. */
  202. private function log($msg) {
  203. $this->pgin->getLogger ()->info ( $msg );
  204. }
  205. }