world component for MCPE
This commit is contained in:
parent
514fe4a18a
commit
8d2b1650af
@ -31,7 +31,7 @@ public class BenefitManager extends MiniDbClientPlugin<BenefitData>
|
||||
|
||||
//_benefits.add(new Christmas2014(plugin, _repository, inventoryManager));
|
||||
//_benefits.add(new Thanksgiving2014(plugin, _repository, inventoryManager));
|
||||
_benefits.add(new Players40k(this, _repository, inventoryManager));
|
||||
//_benefits.add(new Players40k(this, _repository, inventoryManager));
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
|
@ -0,0 +1,210 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: C
|
||||
* Date: 5/07/2015
|
||||
* Time: 12:27 PM
|
||||
*/
|
||||
|
||||
namespace mineplex\plugin\bench\game\components\world;
|
||||
|
||||
use mineplex\plugin\bench\arenas\Arena;
|
||||
use pocketmine\event\Listener;
|
||||
use pocketmine\level\Position;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\Server;
|
||||
|
||||
//require_once __DIR__ . '\GameState.php';
|
||||
|
||||
class WorldComponent implements Listener
|
||||
{
|
||||
private $arena;
|
||||
|
||||
private $gameId;
|
||||
private $gameFolder;
|
||||
|
||||
private $world;
|
||||
private $worldName;
|
||||
|
||||
|
||||
private $mapName;
|
||||
private $mapAuthor;
|
||||
|
||||
private $mapTeams = array();
|
||||
private $mapData = array();
|
||||
|
||||
private $minX = -256;
|
||||
private $maxX = 256;
|
||||
private $minY = -256;
|
||||
private $maxY = 256;
|
||||
private $minZ = -256;
|
||||
private $maxZ = 256;
|
||||
|
||||
public function __construct(Arena $arena)
|
||||
{
|
||||
$this->arena = $arena;
|
||||
|
||||
$this->gameId = getNewGameId();
|
||||
$this->gameFolder = "Game" . $this->gameId . "_" . $this->worldName;
|
||||
|
||||
Server::getInstance()->getPluginManager()->registerEvents($this, $arena->getPlugin());
|
||||
}
|
||||
|
||||
private function loadWorld($worldName)
|
||||
{
|
||||
$this-$worldName = $worldName;
|
||||
|
||||
//Do this Async?
|
||||
if ($this->arena->getPlugin()->getServer()->loadLevel($worldName))
|
||||
{
|
||||
$this->world = $this->arena->getPlugin()->getServer()->getLevelByName($worldName);
|
||||
|
||||
loadWorldData();
|
||||
}
|
||||
else
|
||||
{
|
||||
print("ERROR LOADING WORLD: " + $worldName);
|
||||
}
|
||||
}
|
||||
|
||||
public function loadWorldData($world)
|
||||
{
|
||||
$handle = fopen("WorldConfig.dat", "r");
|
||||
if ($handle)
|
||||
{
|
||||
//These store the array that data should be inserted into
|
||||
|
||||
$currentTeamName = null;
|
||||
$currentDataName = null;
|
||||
|
||||
while (($line = fgets($handle)) !== false)
|
||||
{
|
||||
$tokens = explode(":", $line);
|
||||
|
||||
if (count($tokens) < 2 || strlen($tokens[0]) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
//Name & Author
|
||||
if (strcmp($tokens[0], "MAP_NAME") === 0)
|
||||
{
|
||||
$this->mapName = $tokens[1];
|
||||
}
|
||||
else if (strcmp($tokens[0], "MAP_AUTHOR") === 0)
|
||||
{
|
||||
$this->mapAuthor = $tokens[1];
|
||||
}
|
||||
|
||||
//Map Boundaries
|
||||
else if (strcmp($tokens[0], "MIN_X") === 0)
|
||||
{
|
||||
$this->minX = $tokens[1];
|
||||
}
|
||||
else if (strcmp($tokens[0], "MAX_X") === 0)
|
||||
{
|
||||
$this->maxX = $tokens[1];
|
||||
}
|
||||
else if (strcmp($tokens[0], "MIN_Y") === 0)
|
||||
{
|
||||
$this->minY = $tokens[1];
|
||||
}
|
||||
else if (strcmp($tokens[0], "MAX_Y") === 0)
|
||||
{
|
||||
$this->maxY = $tokens[1];
|
||||
}
|
||||
else if (strcmp($tokens[0], "MIN_Z") === 0)
|
||||
{
|
||||
$this->minZ = $tokens[1];
|
||||
}
|
||||
else if (strcmp($tokens[0], "MAX_Z") === 0)
|
||||
{
|
||||
$this->maxZ = $tokens[1];
|
||||
}
|
||||
|
||||
//Team Spawns
|
||||
else if (strcmp($tokens[0], "TEAM_NAME") === 0)
|
||||
{
|
||||
$currentTeamName = $tokens[1];
|
||||
}
|
||||
else if (strcmp($tokens[0], "TEAM_SPAWNS") === 0)
|
||||
{
|
||||
$positions = array();
|
||||
|
||||
foreach ($tokens as $token)
|
||||
{
|
||||
$position = strToPos($token);
|
||||
|
||||
if (is_null($position))
|
||||
continue;
|
||||
|
||||
array_push($positions, $position);
|
||||
}
|
||||
|
||||
$this->mapTeams[$currentTeamName] = $positions;
|
||||
}
|
||||
|
||||
//Data
|
||||
else if (strcmp($tokens[0], "DATA_NAME") === 0)
|
||||
{
|
||||
$currentDataName = $tokens[1];
|
||||
}
|
||||
else if (strcmp($tokens[0], "DATA_LOCS") === 0)
|
||||
{
|
||||
$positions = array();
|
||||
|
||||
foreach ($tokens as $token)
|
||||
{
|
||||
$position = strToPos($token);
|
||||
|
||||
if (is_null($position))
|
||||
continue;
|
||||
|
||||
array_push($positions, $position);
|
||||
}
|
||||
|
||||
$this->mapData[$currentDataName] = $positions;
|
||||
}
|
||||
}
|
||||
|
||||
fclose($handle);
|
||||
}
|
||||
else
|
||||
{
|
||||
print("Error Opening File");
|
||||
}
|
||||
}
|
||||
|
||||
public function getTeams()
|
||||
{
|
||||
return $this->mapTeams;
|
||||
}
|
||||
|
||||
public function getData($key)
|
||||
{
|
||||
return $this->worldData[$key];
|
||||
}
|
||||
|
||||
protected function strToLoc($str)
|
||||
{
|
||||
$tokens = explode(",", $str);
|
||||
|
||||
try
|
||||
{
|
||||
return new Position($tokens[0], $tokens[1], $tokens[2], $this->world);
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
print("World Data Read Error: Invalid Position String [" . $str . "]");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
//This will return a UID for the game
|
||||
public function getNewGameId()
|
||||
{
|
||||
return rand(0, 999999); //Make this acutally unique
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user