Possible fix for #2046, removed embedded class names

This commit is contained in:
Shoghi Cervantes 2014-09-19 09:44:58 +02:00
parent 8c627bd0af
commit d312d2a143
13 changed files with 35 additions and 28 deletions

View File

@ -22,6 +22,7 @@
namespace pocketmine;
use pocketmine\network\protocol\Info;
use pocketmine\plugin\PluginBase;
use pocketmine\plugin\PluginLoadOrder;
use pocketmine\utils\Utils;
use pocketmine\utils\VersionString;
@ -179,7 +180,7 @@ class CrashDump{
$this->addLine("THIS CRASH WAS CAUSED BY A PLUGIN");
$this->data["plugin"] = true;
$reflection = new \ReflectionClass("pocketmine\\plugin\\PluginBase");
$reflection = new \ReflectionClass(PluginBase::class);
$file = $reflection->getProperty("file");
$file->setAccessible(true);
foreach($this->server->getPluginManager()->getPlugins() as $plugin){

View File

@ -42,9 +42,13 @@ use pocketmine\inventory\CraftingManager;
use pocketmine\inventory\InventoryType;
use pocketmine\inventory\Recipe;
use pocketmine\item\Item;
use pocketmine\level\format\anvil\Anvil;
use pocketmine\level\format\LevelProviderManager;
use pocketmine\level\format\mcregion\McRegion;
use pocketmine\level\generator\Flat;
use pocketmine\level\generator\GenerationRequestManager;
use pocketmine\level\generator\Generator;
use pocketmine\level\generator\Normal;
use pocketmine\level\Level;
use pocketmine\metadata\EntityMetadataStore;
use pocketmine\metadata\LevelMetadataStore;
@ -77,6 +81,7 @@ use pocketmine\scheduler\ServerScheduler;
use pocketmine\tile\Tile;
use pocketmine\updater\AutoUpdater;
use pocketmine\utils\Binary;
use pocketmine\utils\Cache;
use pocketmine\utils\Config;
use pocketmine\utils\MainLogger;
use pocketmine\utils\TextFormat;
@ -1057,7 +1062,7 @@ class Server{
$seed = $seed === null ? Binary::readInt(Utils::getRandomBytes(4, false)) : (int) $seed;
if($generator !== null and class_exists($generator) and is_subclass_of($generator, "pocketmine\\level\\generator\\Generator")){
if($generator !== null and class_exists($generator) and is_subclass_of($generator, Generator::class)){
$generator = new $generator($options);
}else{
$options["preset"] = $this->getConfigString("generator-settings", "");
@ -1524,7 +1529,7 @@ class Server{
$this->pluginManager = new PluginManager($this, $this->commandMap);
$this->pluginManager->subscribeToPermission(Server::BROADCAST_CHANNEL_ADMINISTRATIVE, $this->consoleSender);
$this->pluginManager->setUseTimings($this->getProperty("settings.enable-profiling", false));
$this->pluginManager->registerInterface("pocketmine\\plugin\\PharPluginLoader");
$this->pluginManager->registerInterface(PharPluginLoader::class);
set_exception_handler([$this, "exceptionHandler"]);
register_shutdown_function([$this, "crashDump"]);
@ -1538,13 +1543,13 @@ class Server{
$this->generationManager = new GenerationRequestManager($this);
LevelProviderManager::addProvider($this, "pocketmine\\level\\format\\anvil\\Anvil");
LevelProviderManager::addProvider($this, "pocketmine\\level\\format\\mcregion\\McRegion");
LevelProviderManager::addProvider($this, Anvil::class);
LevelProviderManager::addProvider($this, McRegion::class);
Generator::addGenerator("pocketmine\\level\\generator\\Flat", "flat");
Generator::addGenerator("pocketmine\\level\\generator\\Normal", "normal");
Generator::addGenerator("pocketmine\\level\\generator\\Normal", "default");
Generator::addGenerator(Flat::class, "flat");
Generator::addGenerator(Normal::class, "normal");
Generator::addGenerator(Normal::class, "default");
//Temporal workaround, pthreads static property nullification test
if(PluginManager::$pluginParentTimer === null){
@ -1595,7 +1600,7 @@ class Server{
return;
}
$this->scheduler->scheduleDelayedRepeatingTask(new CallbackTask("pocketmine\\utils\\Cache::cleanup"), $this->getProperty("ticks-per.cache-cleanup", 900), $this->getProperty("ticks-per.cache-cleanup", 900));
$this->scheduler->scheduleDelayedRepeatingTask(new CallbackTask([Cache::class, "cleanup"]), $this->getProperty("ticks-per.cache-cleanup", 900), $this->getProperty("ticks-per.cache-cleanup", 900));
if($this->getConfigBoolean("auto-save", true) === true and $this->getProperty("ticks-per.autosave", 6000) > 0){
$this->scheduler->scheduleDelayedRepeatingTask(new CallbackTask([$this, "doAutoSave"]), $this->getProperty("ticks-per.autosave", 6000), $this->getProperty("ticks-per.autosave", 6000));
}
@ -1760,7 +1765,7 @@ class Server{
$this->operators->reload();
$this->pluginManager->registerInterface("pocketmine\\plugin\\PharPluginLoader");
$this->pluginManager->registerInterface(PharPluginLoader::class);
$this->pluginManager->loadPlugins($this->pluginPath);
$this->enablePlugins(PluginLoadOrder::STARTUP);
$this->enablePlugins(PluginLoadOrder::POSTWORLD);

View File

@ -485,8 +485,8 @@ class Item{
$meta = ((int) $b[1]) & 0xFFFF;
}
if(defined("pocketmine\\item\\Item::" . strtoupper($b[0]))){
$item = self::get(constant("pocketmine\\item\\Item::" . strtoupper($b[0])), $meta);
if(defined(Item::class . T_DOUBLE_COLON . strtoupper($b[0]))){
$item = self::get(constant(Item::class . T_DOUBLE_COLON . strtoupper($b[0])), $meta);
if($item->getID() === self::AIR and strtoupper($b[0]) !== "AIR"){
$item = self::get(((int) $b[0]) & 0xFFFF, $meta);
}

View File

@ -236,7 +236,7 @@ class Level implements ChunkManager, Metadatable{
/** @var LevelProvider $provider */
if(is_subclass_of($provider, "pocketmine\\level\\format\\LevelProvider", true)){
if(is_subclass_of($provider, LevelProvider::class, true)){
$this->provider = new $provider($this, $path);
}else{
throw new \Exception("Provider is not a subclass of LevelProvider");

View File

@ -33,7 +33,7 @@ abstract class LevelProviderManager{
* @throws \Exception
*/
public static function addProvider(Server $server, $class){
if(!is_subclass_of($class, "pocketmine\\level\\format\\LevelProvider")){
if(!is_subclass_of($class, LevelProvider::class)){
throw new \Exception("Class is not a subclass of LevelProvider");
}
self::$providers[strtolower($class::getProviderName())] = $class;

View File

@ -140,7 +140,7 @@ class Chunk extends BaseChunk{
return null;
}
return new Chunk($provider instanceof LevelProvider ? $provider : "pocketmine\\level\\format\\anvil\\Anvil", $chunk->Level);
return new Chunk($provider instanceof LevelProvider ? $provider : Anvil::class, $chunk->Level);
}
public function toBinary(){

View File

@ -254,7 +254,7 @@ class Chunk extends BaseFullChunk{
return null;
}
return new Chunk($provider instanceof LevelProvider ? $provider : "pocketmine\\level\\format\\mcregion\\McRegion", $chunk->Level);
return new Chunk($provider instanceof LevelProvider ? $provider : McRegion::class, $chunk->Level);
}
public function toBinary(){

View File

@ -44,7 +44,7 @@ class GenerationChunkManager implements ChunkManager{
protected $changes = [];
public function __construct(GenerationManager $manager, $levelID, $seed, $class, array $options){
if(!class_exists($class, true) or !is_subclass_of($class, "pocketmine\\level\\generator\\Generator")){
if(!class_exists($class, true) or !is_subclass_of($class, Generator::class)){
throw new \Exception("Class $class does not exists or is not a subclass of Generator");
}

View File

@ -130,7 +130,6 @@ class GenerationRequestManager{
public function shutdown(){
$buffer = chr(GenerationManager::PACKET_SHUTDOWN);
$this->generationThread->pushMainToThreadPacket($buffer);
$this->generationThread->join();
}

View File

@ -30,7 +30,7 @@ abstract class Generator{
private static $list = [];
public static function addGenerator($object, $name){
if(is_subclass_of($object, "pocketmine\\level\\generator\\Generator") and !isset(Generator::$list[$name = strtolower($name)])){
if(is_subclass_of($object, Generator::class) and !isset(Generator::$list[$name = strtolower($name)])){
Generator::$list[$name] = $object;
return true;
@ -44,7 +44,7 @@ abstract class Generator{
return Generator::$list[$name];
}
return "pocketmine\\level\\generator\\Normal";
return Normal::class;
}
public static function getGeneratorName($class){

View File

@ -95,12 +95,12 @@ class PluginDescription{
}
if(isset($plugin["load"])){
$order = strtoupper($plugin["load"]);
if(!defined("pocketmine\\plugin\\PluginLoadOrder::" . $order)){
if(!defined(PluginLoadOrder::class . T_DOUBLE_COLON . $order)){
trigger_error("Invalid PluginDescription load", E_USER_ERROR);
return;
}else{
$this->order = constant("pocketmine\\plugin\\PluginLoadOrder::" . $order);
$this->order = constant(PluginLoadOrder::class . T_DOUBLE_COLON . $order);
}
}
$this->authors = [];

View File

@ -118,7 +118,7 @@ class PluginManager{
* @return boolean
*/
public function registerInterface($loaderName){
if(is_subclass_of($loaderName, "pocketmine\\plugin\\PluginLoader")){
if(is_subclass_of($loaderName, PluginLoader::class)){
$loader = new $loaderName($this->server);
}else{
return false;
@ -676,8 +676,8 @@ class PluginManager{
$ignoreCancelled = false;
if(preg_match("/^[\t ]*\\* @priority[\t ]{1,}([a-zA-Z]{1,})$/m", (string) $method->getDocComment(), $matches) > 0){
$matches[1] = strtoupper($matches[1]);
if(defined("pocketmine\\event\\EventPriority::" . $matches[1])){
$priority = constant("pocketmine\\event\\EventPriority::" . $matches[1]);
if(defined(EventPriority::class . T_DOUBLE_COLON . $matches[1])){
$priority = constant(EventPriority::class . T_DOUBLE_COLON . $matches[1]);
}
}
if(preg_match("/^[\t ]*\\* @ignoreCancelled[\t ]{1,}([a-zA-Z]{1,})$/m", (string) $method->getDocComment(), $matches) > 0){
@ -690,7 +690,7 @@ class PluginManager{
}
$parameters = $method->getParameters();
if(count($parameters) === 1 and $parameters[0]->getClass() instanceof \ReflectionClass and is_subclass_of($parameters[0]->getClass()->getName(), "pocketmine\\event\\Event")){
if(count($parameters) === 1 and $parameters[0]->getClass() instanceof \ReflectionClass and is_subclass_of($parameters[0]->getClass()->getName(), Event::class)){
$class = $parameters[0]->getClass()->getName();
$reflection = new \ReflectionClass($class);
if(preg_match("/^[\t ]*\\* @deprecated[\t ]{1,}$/m", (string) $reflection->getDocComment(), $matches) > 0 and $this->server->getProperty("settings.deprecated-verbose", true)){
@ -713,7 +713,7 @@ class PluginManager{
* @throws \Exception
*/
public function registerEvent($event, Listener $listener, $priority, EventExecutor $executor, Plugin $plugin, $ignoreCancelled = false){
if(!is_subclass_of($event, "pocketmine\\event\\Event") or (new \ReflectionClass($event))->isAbstract()){
if(!is_subclass_of($event, Event::class) or (new \ReflectionClass($event))->isAbstract()){
throw new \Exception($event . " is not a valid Event");
}

View File

@ -56,7 +56,7 @@ class ServerScheduler{
public function __construct(){
$this->queue = new ReversePriorityQueue();
$this->asyncPool = new \Pool(self::$WORKERS, "pocketmine\\scheduler\\AsyncWorker");
$this->asyncPool = new \Pool(self::$WORKERS, AsyncWorker::class);
}
/**
@ -145,6 +145,8 @@ class ServerScheduler{
$this->tasks = [];
$this->asyncPool->shutdown();
$this->asyncTasks = 0;
$this->queue = new ReversePriorityQueue();
$this->asyncPool = new \Pool(self::$WORKERS, AsyncWorker::class);
}
/**