Merge branch 'release/3.1'

This commit is contained in:
Dylan K. Taylor 2018-07-17 14:53:03 +01:00
commit 73afa22f50
3 changed files with 36 additions and 21 deletions

View File

@ -1025,14 +1025,7 @@ class Server{
return false;
}
try{
$level = new Level($this, $name, new $providerClass($path));
}catch(\Throwable $e){
$this->logger->error($this->getLanguage()->translateString("pocketmine.level.loadError", [$name, $e->getMessage()]));
$this->logger->logException($e);
return false;
}
$level = new Level($this, $name, new $providerClass($path));
$this->levels[$level->getId()] = $level;
@ -1070,22 +1063,19 @@ class Server{
if(($providerClass = LevelProviderManager::getProviderByName($this->getProperty("level-settings.default-format", "pmanvil"))) === null){
$providerClass = LevelProviderManager::getProviderByName("pmanvil");
if($providerClass === null){
throw new \InvalidStateException("Default level provider has not been registered");
}
}
try{
$path = $this->getDataPath() . "worlds/" . $name . "/";
/** @var LevelProvider $providerClass */
$providerClass::generate($path, $name, $seed, $generator, $options);
$path = $this->getDataPath() . "worlds/" . $name . "/";
/** @var LevelProvider $providerClass */
$providerClass::generate($path, $name, $seed, $generator, $options);
$level = new Level($this, $name, new $providerClass($path));
$this->levels[$level->getId()] = $level;
$level = new Level($this, $name, new $providerClass($path));
$this->levels[$level->getId()] = $level;
$level->setTickRate($this->baseTickRate);
}catch(\Throwable $e){
$this->logger->error($this->getLanguage()->translateString("pocketmine.level.generationError", [$name, $e->getMessage()]));
$this->logger->logException($e);
return false;
}
$level->setTickRate($this->baseTickRate);
$this->getPluginManager()->callEvent(new LevelInitEvent($level));

View File

@ -353,7 +353,7 @@ class ItemFactory{
if(!isset($b[1])){
$meta = 0;
}elseif(is_numeric($b[1])){
$meta = $b[1];
$meta = (int) $b[1];
}else{
throw new \InvalidArgumentException("Unable to parse \"" . $b[1] . "\" from \"" . $str . "\" as a valid meta value");
}

View File

@ -51,4 +51,29 @@ class ItemTest extends TestCase{
self::assertEquals(BlockFactory::isRegistered($id), ItemFactory::isRegistered($id));
}
}
public function itemFromStringProvider() : array{
return [
["dye:4", ItemIds::DYE, 4],
["351", ItemIds::DYE, 0],
["351:4", ItemIds::DYE, 4],
["stone:3", ItemIds::STONE, 3],
["minecraft:string", ItemIds::STRING, 0],
["diamond_pickaxe", ItemIds::DIAMOND_PICKAXE, 0],
["diamond_pickaxe:5", ItemIds::DIAMOND_PICKAXE, 5]
];
}
/**
* @dataProvider itemFromStringProvider
* @param string $string
* @param int $id
* @param int $meta
*/
public function testFromStringSingle(string $string, int $id, int $meta) : void{
$item = ItemFactory::fromString($string);
self::assertEquals($id, $item->getId());
self::assertEquals($meta, $item->getDamage());
}
}