mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-24 20:34:02 +00:00
Undo my -100IQ fuckup with chunk sending precondition
the commit I reverted put the preconditions in the completion handler, which is executed AFTER THE CHUNK IS SENT. Revert "NetworkSession: allow Player to handle its own business in chunk sending" This reverts commit a223d1cbf3e8a9143383b6497f4d2d5d7ab3202a.
This commit is contained in:
parent
35a3522b4e
commit
6d38922af0
@ -914,10 +914,15 @@ class NetworkSession{
|
|||||||
ChunkCache::getInstance($world, $this->compressor)->request($chunkX, $chunkZ)->onResolve(
|
ChunkCache::getInstance($world, $this->compressor)->request($chunkX, $chunkZ)->onResolve(
|
||||||
|
|
||||||
//this callback may be called synchronously or asynchronously, depending on whether the promise is resolved yet
|
//this callback may be called synchronously or asynchronously, depending on whether the promise is resolved yet
|
||||||
function(CompressBatchPromise $promise) use ($world, $onCompletion) : void{
|
function(CompressBatchPromise $promise) use ($world, $onCompletion, $chunkX, $chunkZ) : void{
|
||||||
if(!$this->isConnected()){
|
if(!$this->isConnected()){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
$currentWorld = $this->player->getLocation()->getWorld();
|
||||||
|
if($world !== $currentWorld or !$this->player->isUsingChunk($chunkX, $chunkZ)){
|
||||||
|
$this->logger->debug("Tried to send no-longer-active chunk $chunkX $chunkZ in world " . $world->getFolderName());
|
||||||
|
return;
|
||||||
|
}
|
||||||
$world->timings->syncChunkSend->startTiming();
|
$world->timings->syncChunkSend->startTiming();
|
||||||
try{
|
try{
|
||||||
$this->queueCompressed($promise);
|
$this->queueCompressed($promise);
|
||||||
|
@ -743,11 +743,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
|
|||||||
unset($this->loadQueue[$index]);
|
unset($this->loadQueue[$index]);
|
||||||
$this->usedChunks[$index] = UsedChunkStatus::REQUESTED();
|
$this->usedChunks[$index] = UsedChunkStatus::REQUESTED();
|
||||||
|
|
||||||
$this->getNetworkSession()->startUsingChunk($X, $Z, function() use ($X, $Z, $index, $world) : void{
|
$this->getNetworkSession()->startUsingChunk($X, $Z, function() use ($X, $Z, $index) : void{
|
||||||
if(!isset($this->usedChunks[$index]) || $world !== $this->getWorld()){
|
|
||||||
$this->logger->debug("Tried to send no-longer-active chunk $X $Z in world " . $world->getFolderName());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(!$this->usedChunks[$index]->equals(UsedChunkStatus::REQUESTED())){
|
if(!$this->usedChunks[$index]->equals(UsedChunkStatus::REQUESTED())){
|
||||||
//TODO: make this an error
|
//TODO: make this an error
|
||||||
//this could be triggered due to the shitty way that chunk resends are handled
|
//this could be triggered due to the shitty way that chunk resends are handled
|
||||||
|
Loading…
x
Reference in New Issue
Block a user