world deletion

This commit is contained in:
Cheese 2015-07-07 12:36:32 +10:00
parent 769d50f1c7
commit 02c5dd0dfa
1 changed files with 28 additions and 9 deletions

View File

@ -13,6 +13,7 @@ use mineplex\plugin\gameengine\game\components\world\event\WorldLoadFailEvent;
use mineplex\plugin\gameengine\game\components\world\event\WorldLoadSuccessEvent;
use mineplex\plugin\util\UtilArray;
use mineplex\plugin\util\UtilString;
use mineplex\plugin\util\UtilFile;
use pocketmine\event\Listener;
use pocketmine\level\Position;
use pocketmine\math\Vector3;
@ -26,8 +27,9 @@ class WorldComponent implements Listener
private $arena;
private $gameId;
private $gameFolder;
private $worldNameFolder;
/** @var \pocketmine\level\Level */
private $world;
private $mapName;
@ -71,6 +73,23 @@ class WorldComponent implements Listener
// }
// }
private function unloadWorld()
{
if (is_null($this->world) || !$this->arena->getPlugin()->getServer()->isLevelLoaded($this->worldNameFolder))
return;
foreach ($this->world->getPlayers() as $player)
{
$player->kick("Dead World");
}
$this->arena->getPlugin()->getServer()->unloadLevel($this->world);
UtilFile::deleteDir('worlds/' . $this->worldNameFolder);
print("Successfully Deleted: " . $this->worldNameFolder . "\n");
}
private function loadWorld($gameName)
{
$files = scandir('../update/maps/' . $gameName . '/');
@ -92,20 +111,20 @@ class WorldComponent implements Listener
print_r($worldName . "\n");
$this->gameFolder = "Game" . $this->gameId . "_" . $gameName . "_" . $worldName;
$this->worldNameFolder = "Game" . $this->gameId . "_" . $gameName . "_" . $worldName;
//Unzip World
$zip = new ZipArchive;
$res = $zip->open('../update/maps/' . $gameName . '/' . $worldName . '.zip');
if ($res === TRUE)
{
$zip->extractTo('worlds/' . $this->gameFolder . '/');
$zip->extractTo('worlds/' . $this->worldNameFolder . '/');
$zip->close();
print("Successfully Extracted: " . $this->gameFolder . "\n");
print("Successfully Extracted: " . $this->worldNameFolder . "\n");
}
else
{
print("Error Extracting: " . $this->gameFolder . "\n");
print("Error Extracting: " . $this->worldNameFolder . "\n");
Server::getInstance()->getPluginManager()->callEvent(new WorldLoadFailEvent($this->arena));
@ -113,9 +132,9 @@ class WorldComponent implements Listener
}
//Load World
if ($this->arena->getPlugin()->getServer()->loadLevel($this->gameFolder))
if ($this->arena->getPlugin()->getServer()->loadLevel($this->worldNameFolder))
{
$this->world = $this->arena->getPlugin()->getServer()->getLevelByName($this->gameFolder);
$this->world = $this->arena->getPlugin()->getServer()->getLevelByName($this->worldNameFolder);
$this->world->setSpawnLocation(new Vector3(0,200,0));
@ -123,13 +142,13 @@ class WorldComponent implements Listener
$this->ready = true;
print("Successfully Loaded World: " . $this->gameFolder . "\n");
print("Successfully Loaded World: " . $this->worldNameFolder . "\n");
Server::getInstance()->getPluginManager()->callEvent(new WorldLoadSuccessEvent($this->arena, $this->world));
}
else
{
print("Error Loading World: " . $this->gameFolder . "\n");
print("Error Loading World: " . $this->worldNameFolder . "\n");
Server::getInstance()->getPluginManager()->callEvent(new WorldLoadFailEvent($this->arena));