mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-15 10:19:39 +00:00
Be less dependent on AsyncTask->onCompletion() Server parameter
this is going to get removed soon.
This commit is contained in:
parent
779d92c656
commit
20f3b82d52
@ -133,7 +133,7 @@ class TimingsCommand extends VanillaCommand{
|
|||||||
}
|
}
|
||||||
$result = $this->getResult()[0];
|
$result = $this->getResult()[0];
|
||||||
if($result instanceof \RuntimeException){
|
if($result instanceof \RuntimeException){
|
||||||
$server->getLogger()->logException($result);
|
$sender->getServer()->getLogger()->logException($result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(isset($result[0]) && is_array($response = json_decode($result[0], true)) && isset($response["id"])){
|
if(isset($result[0]) && is_array($response = json_decode($result[0], true)) && isset($response["id"])){
|
||||||
|
@ -53,6 +53,8 @@ class PopulationTask extends AsyncTask{
|
|||||||
foreach($level->getAdjacentChunks($chunk->getX(), $chunk->getZ()) as $i => $c){
|
foreach($level->getAdjacentChunks($chunk->getX(), $chunk->getZ()) as $i => $c){
|
||||||
$this->{"chunk$i"} = $c !== null ? $c->fastSerialize() : null;
|
$this->{"chunk$i"} = $c !== null ? $c->fastSerialize() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->storeLocal($level);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onRun() : void{
|
public function onRun() : void{
|
||||||
@ -136,8 +138,9 @@ class PopulationTask extends AsyncTask{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function onCompletion(Server $server) : void{
|
public function onCompletion(Server $server) : void{
|
||||||
$level = $server->getLevel($this->levelId);
|
/** @var Level $level */
|
||||||
if($level !== null){
|
$level = $this->fetchLocal();
|
||||||
|
if(!$level->isClosed()){
|
||||||
if(!$this->state){
|
if(!$this->state){
|
||||||
$level->registerGeneratorToWorker($this->worker->getAsyncWorkerId());
|
$level->registerGeneratorToWorker($this->worker->getAsyncWorkerId());
|
||||||
}
|
}
|
||||||
|
@ -30,11 +30,10 @@ use pocketmine\Server;
|
|||||||
|
|
||||||
class LightPopulationTask extends AsyncTask{
|
class LightPopulationTask extends AsyncTask{
|
||||||
|
|
||||||
public $levelId;
|
|
||||||
public $chunk;
|
public $chunk;
|
||||||
|
|
||||||
public function __construct(Level $level, Chunk $chunk){
|
public function __construct(Level $level, Chunk $chunk){
|
||||||
$this->levelId = $level->getId();
|
$this->storeLocal($level);
|
||||||
$this->chunk = $chunk->fastSerialize();
|
$this->chunk = $chunk->fastSerialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,8 +49,9 @@ class LightPopulationTask extends AsyncTask{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function onCompletion(Server $server){
|
public function onCompletion(Server $server){
|
||||||
$level = $server->getLevel($this->levelId);
|
/** @var Level $level */
|
||||||
if($level !== null){
|
$level = $this->fetchLocal();
|
||||||
|
if(!$level->isClosed()){
|
||||||
/** @var Chunk $chunk */
|
/** @var Chunk $chunk */
|
||||||
$chunk = Chunk::fastDeserialize($this->chunk);
|
$chunk = Chunk::fastDeserialize($this->chunk);
|
||||||
$level->generateChunkCallback($chunk->getX(), $chunk->getZ(), $chunk);
|
$level->generateChunkCallback($chunk->getX(), $chunk->getZ(), $chunk);
|
||||||
|
@ -31,8 +31,6 @@ use pocketmine\Server;
|
|||||||
use pocketmine\tile\Spawnable;
|
use pocketmine\tile\Spawnable;
|
||||||
|
|
||||||
class ChunkRequestTask extends AsyncTask{
|
class ChunkRequestTask extends AsyncTask{
|
||||||
/** @var int */
|
|
||||||
protected $levelId;
|
|
||||||
/** @var string */
|
/** @var string */
|
||||||
protected $chunk;
|
protected $chunk;
|
||||||
/** @var int */
|
/** @var int */
|
||||||
@ -45,7 +43,7 @@ class ChunkRequestTask extends AsyncTask{
|
|||||||
protected $compressionLevel;
|
protected $compressionLevel;
|
||||||
|
|
||||||
public function __construct(Level $level, int $chunkX, int $chunkZ, Chunk $chunk){
|
public function __construct(Level $level, int $chunkX, int $chunkZ, Chunk $chunk){
|
||||||
$this->levelId = $level->getId();
|
$this->storeLocal($level);
|
||||||
$this->compressionLevel = NetworkCompression::$LEVEL;
|
$this->compressionLevel = NetworkCompression::$LEVEL;
|
||||||
|
|
||||||
$this->chunk = $chunk->fastSerialize();
|
$this->chunk = $chunk->fastSerialize();
|
||||||
@ -78,15 +76,14 @@ class ChunkRequestTask extends AsyncTask{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function onCompletion(Server $server) : void{
|
public function onCompletion(Server $server) : void{
|
||||||
$level = $server->getLevel($this->levelId);
|
/** @var Level $level */
|
||||||
if($level instanceof Level){
|
$level = $this->fetchLocal();
|
||||||
|
if(!$level->isClosed()){
|
||||||
if($this->hasResult()){
|
if($this->hasResult()){
|
||||||
$level->chunkRequestCallback($this->chunkX, $this->chunkZ, $this->getResult());
|
$level->chunkRequestCallback($this->chunkX, $this->chunkZ, $this->getResult());
|
||||||
}else{
|
}else{
|
||||||
$server->getLogger()->error("Chunk request for level #" . $this->levelId . ", x=" . $this->chunkX . ", z=" . $this->chunkZ . " doesn't have any result data");
|
$level->getServer()->getLogger()->error("Chunk request for level " . $level->getName() . ", x=" . $this->chunkX . ", z=" . $this->chunkZ . " doesn't have any result data");
|
||||||
}
|
}
|
||||||
}else{
|
|
||||||
$server->getLogger()->debug("Dropped chunk task due to level not loaded");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,6 +53,10 @@ class AutoUpdater{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function checkUpdateError(string $error) : void{
|
||||||
|
$this->server->getLogger()->debug("[AutoUpdater] Async update check failed due to \"$error\"");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback used at the end of the update checking task
|
* Callback used at the end of the update checking task
|
||||||
*
|
*
|
||||||
@ -146,7 +150,7 @@ class AutoUpdater{
|
|||||||
* Schedules an AsyncTask to check for an update.
|
* Schedules an AsyncTask to check for an update.
|
||||||
*/
|
*/
|
||||||
public function doCheck(){
|
public function doCheck(){
|
||||||
$this->server->getAsyncPool()->submitTask(new UpdateCheckTask($this->endpoint, $this->getChannel()));
|
$this->server->getAsyncPool()->submitTask(new UpdateCheckTask($this, $this->endpoint, $this->getChannel()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -38,7 +38,8 @@ class UpdateCheckTask extends AsyncTask{
|
|||||||
/** @var string */
|
/** @var string */
|
||||||
private $error = "Unknown error";
|
private $error = "Unknown error";
|
||||||
|
|
||||||
public function __construct(string $endpoint, string $channel){
|
public function __construct(AutoUpdater $updater, string $endpoint, string $channel){
|
||||||
|
$this->storeLocal($updater);
|
||||||
$this->endpoint = $endpoint;
|
$this->endpoint = $endpoint;
|
||||||
$this->channel = $channel;
|
$this->channel = $channel;
|
||||||
}
|
}
|
||||||
@ -72,16 +73,12 @@ class UpdateCheckTask extends AsyncTask{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function onCompletion(Server $server){
|
public function onCompletion(Server $server){
|
||||||
if($this->error !== ""){
|
/** @var AutoUpdater $updater */
|
||||||
$server->getLogger()->debug("[AutoUpdater] Async update check failed due to \"$this->error\"");
|
$updater = $this->fetchLocal();
|
||||||
|
if($this->hasResult()){
|
||||||
|
$updater->checkUpdateCallback($this->getResult());
|
||||||
}else{
|
}else{
|
||||||
$updateInfo = $this->getResult();
|
$updater->checkUpdateError($this->error);
|
||||||
if(is_array($updateInfo)){
|
|
||||||
$server->getUpdater()->checkUpdateCallback($updateInfo);
|
|
||||||
}else{
|
|
||||||
$server->getLogger()->debug("[AutoUpdater] Update info error");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user