added ChunkListenerNoOpTrait to reduce chunklistener boilerplate

This commit is contained in:
Dylan K. Taylor 2019-06-25 16:23:43 +01:00
parent d85a27c5b2
commit edccce1419
3 changed files with 67 additions and 32 deletions

View File

@ -25,6 +25,7 @@ namespace pocketmine\network\mcpe;
use pocketmine\math\Vector3;
use pocketmine\world\ChunkListener;
use pocketmine\world\ChunkListenerNoOpTrait;
use pocketmine\world\format\Chunk;
use pocketmine\world\World;
use function spl_object_id;
@ -159,6 +160,13 @@ class ChunkCache implements ChunkListener{
}
}
use ChunkListenerNoOpTrait {
//force overriding of these
onChunkChanged as private;
onBlockChanged as private;
onChunkUnloaded as private;
}
/**
* @see ChunkListener::onChunkChanged()
* @param Chunk $chunk
@ -187,22 +195,6 @@ class ChunkCache implements ChunkListener{
$this->world->unregisterChunkListener($this, $chunk->getX(), $chunk->getZ());
}
/**
* @see ChunkListener::onChunkLoaded()
* @param Chunk $chunk
*/
public function onChunkLoaded(Chunk $chunk) : void{
//NOOP
}
/**
* @see ChunkListener::onChunkPopulated()
* @param Chunk $chunk
*/
public function onChunkPopulated(Chunk $chunk) : void{
//NOOP - we also receive this in onChunkChanged, so we don't care here
}
/**
* Returns the number of bytes occupied by the cache data in this cache. This does not include the size of any
* promises referenced by the cache.

View File

@ -104,6 +104,7 @@ use pocketmine\timings\Timings;
use pocketmine\utils\TextFormat;
use pocketmine\utils\UUID;
use pocketmine\world\ChunkListener;
use pocketmine\world\ChunkListenerNoOpTrait;
use pocketmine\world\ChunkLoader;
use pocketmine\world\format\Chunk;
use pocketmine\world\particle\PunchBlockParticle;
@ -2701,26 +2702,14 @@ class Player extends Human implements CommandSender, ChunkLoader, ChunkListener,
$this->server->getPlayerMetadata()->removeMetadata($this, $metadataKey, $owningPlugin);
}
use ChunkListenerNoOpTrait {
onChunkChanged as private;
}
public function onChunkChanged(Chunk $chunk) : void{
if(isset($this->usedChunks[$hash = World::chunkHash($chunk->getX(), $chunk->getZ())])){
$this->usedChunks[$hash] = false;
$this->nextChunkOrderRun = 0;
}
}
public function onChunkLoaded(Chunk $chunk) : void{
}
public function onChunkPopulated(Chunk $chunk) : void{
}
public function onChunkUnloaded(Chunk $chunk) : void{
}
public function onBlockChanged(Vector3 $block) : void{
}
}

View File

@ -0,0 +1,54 @@
<?php
/*
*
* ____ _ _ __ __ _ __ __ ____
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* @author PocketMine Team
* @link http://www.pocketmine.net/
*
*
*/
declare(strict_types=1);
namespace pocketmine\world;
use pocketmine\math\Vector3;
use pocketmine\world\format\Chunk;
/**
* This trait implements no-op default methods for chunk listeners.
* @see ChunkListener
*/
trait ChunkListenerNoOpTrait/* implements ChunkListener*/{
public function onChunkChanged(Chunk $chunk) : void{
//NOOP
}
public function onChunkLoaded(Chunk $chunk) : void{
//NOOP
}
public function onChunkUnloaded(Chunk $chunk) : void{
//NOOP
}
public function onChunkPopulated(Chunk $chunk) : void{
//NOOP
}
public function onBlockChanged(Vector3 $block) : void{
//NOOP
}
}