mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-25 12:54:03 +00:00
Level: populate missing type information
This commit is contained in:
parent
aa7d55e21d
commit
cd36af46bf
@ -435,6 +435,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
/**
|
/**
|
||||||
* @deprecated does nothing
|
* @deprecated does nothing
|
||||||
* @param int $tickRate
|
* @param int $tickRate
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setTickRate(int $tickRate){
|
public function setTickRate(int $tickRate){
|
||||||
|
|
||||||
@ -445,6 +447,9 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
$this->server->getAsyncPool()->submitTaskToWorker(new GeneratorRegisterTask($this, $this->generator, $this->provider->getGeneratorOptions()), $worker);
|
$this->server->getAsyncPool()->submitTaskToWorker(new GeneratorRegisterTask($this, $this->generator, $this->provider->getGeneratorOptions()), $worker);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function unregisterGenerator(){
|
public function unregisterGenerator(){
|
||||||
$pool = $this->server->getAsyncPool();
|
$pool = $this->server->getAsyncPool();
|
||||||
foreach($pool->getRunningWorkers() as $i){
|
foreach($pool->getRunningWorkers() as $i){
|
||||||
@ -478,6 +483,9 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
return $this->closed;
|
return $this->closed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function close(){
|
public function close(){
|
||||||
if($this->closed){
|
if($this->closed){
|
||||||
throw new \InvalidStateException("Tried to close a world which is already closed");
|
throw new \InvalidStateException("Tried to close a world which is already closed");
|
||||||
@ -500,6 +508,12 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
$this->closed = true;
|
$this->closed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Sound $sound
|
||||||
|
* @param Player[]|null $players
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function addSound(Sound $sound, array $players = null){
|
public function addSound(Sound $sound, array $players = null){
|
||||||
$pk = $sound->encode();
|
$pk = $sound->encode();
|
||||||
if(!is_array($pk)){
|
if(!is_array($pk)){
|
||||||
@ -516,6 +530,12 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Particle $particle
|
||||||
|
* @param Player[]|null $players
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function addParticle(Particle $particle, array $players = null){
|
public function addParticle(Particle $particle, array $players = null){
|
||||||
$pk = $particle->encode();
|
$pk = $particle->encode();
|
||||||
if(!is_array($pk)){
|
if(!is_array($pk)){
|
||||||
@ -538,6 +558,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* @param Vector3|null $pos If null, broadcasts to every player in the Level
|
* @param Vector3|null $pos If null, broadcasts to every player in the Level
|
||||||
* @param int $evid
|
* @param int $evid
|
||||||
* @param int $data
|
* @param int $data
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function broadcastLevelEvent(?Vector3 $pos, int $evid, int $data = 0){
|
public function broadcastLevelEvent(?Vector3 $pos, int $evid, int $data = 0){
|
||||||
$pk = new LevelEventPacket();
|
$pk = new LevelEventPacket();
|
||||||
@ -561,6 +583,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* @param int $entityTypeId
|
* @param int $entityTypeId
|
||||||
* @param bool $isBabyMob
|
* @param bool $isBabyMob
|
||||||
* @param bool $disableRelativeVolume If true, all players receiving this sound-event will hear the sound at full volume regardless of distance
|
* @param bool $disableRelativeVolume If true, all players receiving this sound-event will hear the sound at full volume regardless of distance
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function broadcastLevelSoundEvent(Vector3 $pos, int $soundId, int $extraData = -1, int $entityTypeId = -1, bool $isBabyMob = false, bool $disableRelativeVolume = false){
|
public function broadcastLevelSoundEvent(Vector3 $pos, int $soundId, int $extraData = -1, int $entityTypeId = -1, bool $isBabyMob = false, bool $disableRelativeVolume = false){
|
||||||
$pk = new LevelSoundEventPacket();
|
$pk = new LevelSoundEventPacket();
|
||||||
@ -577,6 +601,11 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
return $this->autoSave;
|
return $this->autoSave;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param bool $value
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function setAutoSave(bool $value){
|
public function setAutoSave(bool $value){
|
||||||
$this->autoSave = $value;
|
$this->autoSave = $value;
|
||||||
}
|
}
|
||||||
@ -674,6 +703,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* @param int $chunkX
|
* @param int $chunkX
|
||||||
* @param int $chunkZ
|
* @param int $chunkZ
|
||||||
* @param DataPacket $packet
|
* @param DataPacket $packet
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function addChunkPacket(int $chunkX, int $chunkZ, DataPacket $packet){
|
public function addChunkPacket(int $chunkX, int $chunkZ, DataPacket $packet){
|
||||||
if(!isset($this->chunkPackets[$index = Level::chunkHash($chunkX, $chunkZ)])){
|
if(!isset($this->chunkPackets[$index = Level::chunkHash($chunkX, $chunkZ)])){
|
||||||
@ -712,6 +743,14 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
$this->globalPackets[] = $packet;
|
$this->globalPackets[] = $packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ChunkLoader $loader
|
||||||
|
* @param int $chunkX
|
||||||
|
* @param int $chunkZ
|
||||||
|
* @param bool $autoLoad
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function registerChunkLoader(ChunkLoader $loader, int $chunkX, int $chunkZ, bool $autoLoad = true){
|
public function registerChunkLoader(ChunkLoader $loader, int $chunkX, int $chunkZ, bool $autoLoad = true){
|
||||||
$loaderId = $loader->getLoaderId();
|
$loaderId = $loader->getLoaderId();
|
||||||
|
|
||||||
@ -741,6 +780,13 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ChunkLoader $loader
|
||||||
|
* @param int $chunkX
|
||||||
|
* @param int $chunkZ
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function unregisterChunkLoader(ChunkLoader $loader, int $chunkX, int $chunkZ){
|
public function unregisterChunkLoader(ChunkLoader $loader, int $chunkX, int $chunkZ){
|
||||||
$chunkHash = Level::chunkHash($chunkX, $chunkZ);
|
$chunkHash = Level::chunkHash($chunkX, $chunkZ);
|
||||||
$loaderId = $loader->getLoaderId();
|
$loaderId = $loader->getLoaderId();
|
||||||
@ -764,6 +810,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* @internal
|
* @internal
|
||||||
*
|
*
|
||||||
* @param Player ...$targets If empty, will send to all players in the level.
|
* @param Player ...$targets If empty, will send to all players in the level.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function sendTime(Player ...$targets){
|
public function sendTime(Player ...$targets){
|
||||||
$pk = new SetTimePacket();
|
$pk = new SetTimePacket();
|
||||||
@ -777,6 +825,7 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
*
|
*
|
||||||
* @param int $currentTick
|
* @param int $currentTick
|
||||||
*
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function doTick(int $currentTick){
|
public function doTick(int $currentTick){
|
||||||
if($this->closed){
|
if($this->closed){
|
||||||
@ -929,6 +978,9 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
$this->chunkPackets = [];
|
$this->chunkPackets = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function checkSleep(){
|
public function checkSleep(){
|
||||||
if(count($this->players) === 0){
|
if(count($this->players) === 0){
|
||||||
return;
|
return;
|
||||||
@ -964,6 +1016,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* @param Vector3[] $blocks
|
* @param Vector3[] $blocks
|
||||||
* @param int $flags
|
* @param int $flags
|
||||||
* @param bool $optimizeRebuilds
|
* @param bool $optimizeRebuilds
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function sendBlocks(array $target, array $blocks, int $flags = UpdateBlockPacket::FLAG_NONE, bool $optimizeRebuilds = false){
|
public function sendBlocks(array $target, array $blocks, int $flags = UpdateBlockPacket::FLAG_NONE, bool $optimizeRebuilds = false){
|
||||||
$packets = [];
|
$packets = [];
|
||||||
@ -1023,6 +1077,11 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
$this->server->batchPackets($target, $packets, false, false);
|
$this->server->batchPackets($target, $packets, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param bool $force
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function clearCache(bool $force = false){
|
public function clearCache(bool $force = false){
|
||||||
if($force){
|
if($force){
|
||||||
$this->chunkCache = [];
|
$this->chunkCache = [];
|
||||||
@ -1039,6 +1098,12 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $chunkX
|
||||||
|
* @param int $chunkZ
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function clearChunkCache(int $chunkX, int $chunkZ){
|
public function clearChunkCache(int $chunkX, int $chunkZ){
|
||||||
unset($this->chunkCache[Level::chunkHash($chunkX, $chunkZ)]);
|
unset($this->chunkCache[Level::chunkHash($chunkX, $chunkZ)]);
|
||||||
}
|
}
|
||||||
@ -1047,15 +1112,25 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
return $this->randomTickBlocks;
|
return $this->randomTickBlocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $id
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function addRandomTickedBlock(int $id){
|
public function addRandomTickedBlock(int $id){
|
||||||
$this->randomTickBlocks[$id] = BlockFactory::get($id);
|
$this->randomTickBlocks[$id] = BlockFactory::get($id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $id
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function removeRandomTickedBlock(int $id){
|
public function removeRandomTickedBlock(int $id){
|
||||||
$this->randomTickBlocks[$id] = null;
|
$this->randomTickBlocks[$id] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function tickChunks(){
|
private function tickChunks() : void{
|
||||||
if($this->chunksPerTick <= 0 or count($this->loaders) === 0){
|
if($this->chunksPerTick <= 0 or count($this->loaders) === 0){
|
||||||
$this->chunkTickList = [];
|
$this->chunkTickList = [];
|
||||||
return;
|
return;
|
||||||
@ -1163,6 +1238,9 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function saveChunks(){
|
public function saveChunks(){
|
||||||
$this->timings->syncChunkSaveTimer->startTiming();
|
$this->timings->syncChunkSaveTimer->startTiming();
|
||||||
try{
|
try{
|
||||||
@ -1183,6 +1261,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
*
|
*
|
||||||
* @param Vector3 $pos
|
* @param Vector3 $pos
|
||||||
* @param int $delay
|
* @param int $delay
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function scheduleDelayedBlockUpdate(Vector3 $pos, int $delay){
|
public function scheduleDelayedBlockUpdate(Vector3 $pos, int $delay){
|
||||||
if(
|
if(
|
||||||
@ -1200,6 +1280,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* Blocks will be updated with the normal update type.
|
* Blocks will be updated with the normal update type.
|
||||||
*
|
*
|
||||||
* @param Vector3 $pos
|
* @param Vector3 $pos
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function scheduleNeighbourBlockUpdates(Vector3 $pos){
|
public function scheduleNeighbourBlockUpdates(Vector3 $pos){
|
||||||
$pos = $pos->floor();
|
$pos = $pos->floor();
|
||||||
@ -1491,6 +1573,11 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
return $block;
|
return $block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Vector3 $pos
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function updateAllLight(Vector3 $pos){
|
public function updateAllLight(Vector3 $pos){
|
||||||
$this->updateBlockSkyLight($pos->x, $pos->y, $pos->z);
|
$this->updateBlockSkyLight($pos->x, $pos->y, $pos->z);
|
||||||
$this->updateBlockLight($pos->x, $pos->y, $pos->z);
|
$this->updateBlockLight($pos->x, $pos->y, $pos->z);
|
||||||
@ -1516,6 +1603,13 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $x
|
||||||
|
* @param int $y
|
||||||
|
* @param int $z
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function updateBlockSkyLight(int $x, int $y, int $z){
|
public function updateBlockSkyLight(int $x, int $y, int $z){
|
||||||
$this->timings->doBlockSkyLightUpdates->startTiming();
|
$this->timings->doBlockSkyLightUpdates->startTiming();
|
||||||
|
|
||||||
@ -1576,6 +1670,13 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $x
|
||||||
|
* @param int $y
|
||||||
|
* @param int $z
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function updateBlockLight(int $x, int $y, int $z){
|
public function updateBlockLight(int $x, int $y, int $z){
|
||||||
$this->timings->doBlockLightUpdates->startTiming();
|
$this->timings->doBlockLightUpdates->startTiming();
|
||||||
|
|
||||||
@ -2242,6 +2343,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* @param int $y
|
* @param int $y
|
||||||
* @param int $z
|
* @param int $z
|
||||||
* @param int $id 0-255
|
* @param int $id 0-255
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setBlockIdAt(int $x, int $y, int $z, int $id){
|
public function setBlockIdAt(int $x, int $y, int $z, int $id){
|
||||||
if(!$this->isInWorld($x, $y, $z)){ //TODO: bad hack but fixing this requires BC breaks to do properly :(
|
if(!$this->isInWorld($x, $y, $z)){ //TODO: bad hack but fixing this requires BC breaks to do properly :(
|
||||||
@ -2281,6 +2384,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* @param int $y
|
* @param int $y
|
||||||
* @param int $z
|
* @param int $z
|
||||||
* @param int $data 0-15
|
* @param int $data 0-15
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setBlockDataAt(int $x, int $y, int $z, int $data){
|
public function setBlockDataAt(int $x, int $y, int $z, int $data){
|
||||||
if(!$this->isInWorld($x, $y, $z)){ //TODO: bad hack but fixing this requires BC breaks to do properly :(
|
if(!$this->isInWorld($x, $y, $z)){ //TODO: bad hack but fixing this requires BC breaks to do properly :(
|
||||||
@ -2321,6 +2426,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* @param int $y
|
* @param int $y
|
||||||
* @param int $z
|
* @param int $z
|
||||||
* @param int $level 0-15
|
* @param int $level 0-15
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setBlockSkyLightAt(int $x, int $y, int $z, int $level){
|
public function setBlockSkyLightAt(int $x, int $y, int $z, int $level){
|
||||||
$this->getChunk($x >> 4, $z >> 4, true)->setBlockSkyLight($x & 0x0f, $y, $z & 0x0f, $level & 0x0f);
|
$this->getChunk($x >> 4, $z >> 4, true)->setBlockSkyLight($x & 0x0f, $y, $z & 0x0f, $level & 0x0f);
|
||||||
@ -2346,6 +2453,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* @param int $y
|
* @param int $y
|
||||||
* @param int $z
|
* @param int $z
|
||||||
* @param int $level 0-15
|
* @param int $level 0-15
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setBlockLightAt(int $x, int $y, int $z, int $level){
|
public function setBlockLightAt(int $x, int $y, int $z, int $level){
|
||||||
$this->getChunk($x >> 4, $z >> 4, true)->setBlockLight($x & 0x0f, $y, $z & 0x0f, $level & 0x0f);
|
$this->getChunk($x >> 4, $z >> 4, true)->setBlockLight($x & 0x0f, $y, $z & 0x0f, $level & 0x0f);
|
||||||
@ -2375,6 +2484,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* @param int $x
|
* @param int $x
|
||||||
* @param int $z
|
* @param int $z
|
||||||
* @param int $biomeId
|
* @param int $biomeId
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setBiomeId(int $x, int $z, int $biomeId){
|
public function setBiomeId(int $x, int $z, int $biomeId){
|
||||||
$this->getChunk($x >> 4, $z >> 4, true)->setBiomeId($x & 0x0f, $z & 0x0f, $biomeId);
|
$this->getChunk($x >> 4, $z >> 4, true)->setBiomeId($x & 0x0f, $z & 0x0f, $biomeId);
|
||||||
@ -2394,6 +2505,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* @param int $x
|
* @param int $x
|
||||||
* @param int $z
|
* @param int $z
|
||||||
* @param int $value
|
* @param int $value
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setHeightMap(int $x, int $z, int $value){
|
public function setHeightMap(int $x, int $z, int $value){
|
||||||
$this->getChunk($x >> 4, $z >> 4, true)->setHeightMap($x & 0x0f, $z & 0x0f, $value);
|
$this->getChunk($x >> 4, $z >> 4, true)->setHeightMap($x & 0x0f, $z & 0x0f, $value);
|
||||||
@ -2461,6 +2574,13 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $x
|
||||||
|
* @param int $z
|
||||||
|
* @param Chunk|null $chunk
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function generateChunkCallback(int $x, int $z, ?Chunk $chunk){
|
public function generateChunkCallback(int $x, int $z, ?Chunk $chunk){
|
||||||
Timings::$generationCallbackTimer->startTiming();
|
Timings::$generationCallbackTimer->startTiming();
|
||||||
if(isset($this->chunkPopulationQueue[$index = Level::chunkHash($x, $z)])){
|
if(isset($this->chunkPopulationQueue[$index = Level::chunkHash($x, $z)])){
|
||||||
@ -2498,6 +2618,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* @param int $chunkZ
|
* @param int $chunkZ
|
||||||
* @param Chunk|null $chunk
|
* @param Chunk|null $chunk
|
||||||
* @param bool $deleteEntitiesAndTiles Whether to delete entities and tiles on the old chunk, or transfer them to the new one
|
* @param bool $deleteEntitiesAndTiles Whether to delete entities and tiles on the old chunk, or transfer them to the new one
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setChunk(int $chunkX, int $chunkZ, Chunk $chunk = null, bool $deleteEntitiesAndTiles = true){
|
public function setChunk(int $chunkX, int $chunkZ, Chunk $chunk = null, bool $deleteEntitiesAndTiles = true){
|
||||||
if($chunk === null){
|
if($chunk === null){
|
||||||
@ -2623,6 +2745,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* Sets the level spawn location
|
* Sets the level spawn location
|
||||||
*
|
*
|
||||||
* @param Vector3 $pos
|
* @param Vector3 $pos
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setSpawnLocation(Vector3 $pos){
|
public function setSpawnLocation(Vector3 $pos){
|
||||||
$previousSpawn = $this->getSpawnLocation();
|
$previousSpawn = $this->getSpawnLocation();
|
||||||
@ -2630,6 +2754,13 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
(new SpawnChangeEvent($this, $previousSpawn))->call();
|
(new SpawnChangeEvent($this, $previousSpawn))->call();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $x
|
||||||
|
* @param int $z
|
||||||
|
* @param Player $player
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function requestChunk(int $x, int $z, Player $player){
|
public function requestChunk(int $x, int $z, Player $player){
|
||||||
$index = Level::chunkHash($x, $z);
|
$index = Level::chunkHash($x, $z);
|
||||||
if(!isset($this->chunkSendQueue[$index])){
|
if(!isset($this->chunkSendQueue[$index])){
|
||||||
@ -2639,7 +2770,7 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
$this->chunkSendQueue[$index][$player->getLoaderId()] = $player;
|
$this->chunkSendQueue[$index][$player->getLoaderId()] = $player;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function sendChunkFromCache(int $x, int $z){
|
private function sendChunkFromCache(int $x, int $z) : void{
|
||||||
if(isset($this->chunkSendQueue[$index = Level::chunkHash($x, $z)])){
|
if(isset($this->chunkSendQueue[$index = Level::chunkHash($x, $z)])){
|
||||||
foreach($this->chunkSendQueue[$index] as $player){
|
foreach($this->chunkSendQueue[$index] as $player){
|
||||||
/** @var Player $player */
|
/** @var Player $player */
|
||||||
@ -2651,7 +2782,7 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function processChunkRequest(){
|
private function processChunkRequest() : void{
|
||||||
if(count($this->chunkSendQueue) > 0){
|
if(count($this->chunkSendQueue) > 0){
|
||||||
$this->timings->syncChunkSendTimer->startTiming();
|
$this->timings->syncChunkSendTimer->startTiming();
|
||||||
|
|
||||||
@ -2689,6 +2820,13 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $x
|
||||||
|
* @param int $z
|
||||||
|
* @param BatchPacket $payload
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function chunkRequestCallback(int $x, int $z, BatchPacket $payload){
|
public function chunkRequestCallback(int $x, int $z, BatchPacket $payload){
|
||||||
$this->timings->syncChunkSendTimer->startTiming();
|
$this->timings->syncChunkSendTimer->startTiming();
|
||||||
|
|
||||||
@ -2707,6 +2845,7 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
/**
|
/**
|
||||||
* @param Entity $entity
|
* @param Entity $entity
|
||||||
*
|
*
|
||||||
|
* @return void
|
||||||
* @throws LevelException
|
* @throws LevelException
|
||||||
*/
|
*/
|
||||||
public function addEntity(Entity $entity){
|
public function addEntity(Entity $entity){
|
||||||
@ -2728,6 +2867,7 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
*
|
*
|
||||||
* @param Entity $entity
|
* @param Entity $entity
|
||||||
*
|
*
|
||||||
|
* @return void
|
||||||
* @throws LevelException
|
* @throws LevelException
|
||||||
*/
|
*/
|
||||||
public function removeEntity(Entity $entity){
|
public function removeEntity(Entity $entity){
|
||||||
@ -2747,6 +2887,7 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
/**
|
/**
|
||||||
* @param Tile $tile
|
* @param Tile $tile
|
||||||
*
|
*
|
||||||
|
* @return void
|
||||||
* @throws LevelException
|
* @throws LevelException
|
||||||
*/
|
*/
|
||||||
public function addTile(Tile $tile){
|
public function addTile(Tile $tile){
|
||||||
@ -2773,6 +2914,7 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
/**
|
/**
|
||||||
* @param Tile $tile
|
* @param Tile $tile
|
||||||
*
|
*
|
||||||
|
* @return void
|
||||||
* @throws LevelException
|
* @throws LevelException
|
||||||
*/
|
*/
|
||||||
public function removeTile(Tile $tile){
|
public function removeTile(Tile $tile){
|
||||||
@ -2868,11 +3010,18 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function queueUnloadChunk(int $x, int $z){
|
private function queueUnloadChunk(int $x, int $z) : void{
|
||||||
$this->unloadQueue[$index = Level::chunkHash($x, $z)] = microtime(true);
|
$this->unloadQueue[$index = Level::chunkHash($x, $z)] = microtime(true);
|
||||||
unset($this->chunkTickList[$index]);
|
unset($this->chunkTickList[$index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $x
|
||||||
|
* @param int $z
|
||||||
|
* @param bool $safe
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
public function unloadChunkRequest(int $x, int $z, bool $safe = true){
|
public function unloadChunkRequest(int $x, int $z, bool $safe = true){
|
||||||
if(($safe and $this->isChunkInUse($x, $z)) or $this->isSpawnChunk($x, $z)){
|
if(($safe and $this->isChunkInUse($x, $z)) or $this->isSpawnChunk($x, $z)){
|
||||||
return false;
|
return false;
|
||||||
@ -2883,6 +3032,12 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $x
|
||||||
|
* @param int $z
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function cancelUnloadChunkRequest(int $x, int $z){
|
public function cancelUnloadChunkRequest(int $x, int $z){
|
||||||
unset($this->unloadQueue[Level::chunkHash($x, $z)]);
|
unset($this->unloadQueue[Level::chunkHash($x, $z)]);
|
||||||
}
|
}
|
||||||
@ -3034,6 +3189,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* Sets the current time on the level
|
* Sets the current time on the level
|
||||||
*
|
*
|
||||||
* @param int $time
|
* @param int $time
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setTime(int $time){
|
public function setTime(int $time){
|
||||||
$this->time = $time;
|
$this->time = $time;
|
||||||
@ -3042,6 +3199,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Stops the time for the level, will not save the lock state to disk
|
* Stops the time for the level, will not save the lock state to disk
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function stopTime(){
|
public function stopTime(){
|
||||||
$this->stopTime = true;
|
$this->stopTime = true;
|
||||||
@ -3050,6 +3209,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Start the time again, if it was stopped
|
* Start the time again, if it was stopped
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function startTime(){
|
public function startTime(){
|
||||||
$this->stopTime = false;
|
$this->stopTime = false;
|
||||||
@ -3069,6 +3230,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* Sets the seed for the level
|
* Sets the seed for the level
|
||||||
*
|
*
|
||||||
* @param int $seed
|
* @param int $seed
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setSeed(int $seed){
|
public function setSeed(int $seed){
|
||||||
$this->provider->setSeed($seed);
|
$this->provider->setSeed($seed);
|
||||||
@ -3087,6 +3250,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $difficulty
|
* @param int $difficulty
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setDifficulty(int $difficulty){
|
public function setDifficulty(int $difficulty){
|
||||||
if($difficulty < 0 or $difficulty > 3){
|
if($difficulty < 0 or $difficulty > 3){
|
||||||
@ -3099,6 +3264,8 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Player ...$targets
|
* @param Player ...$targets
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function sendDifficulty(Player ...$targets){
|
public function sendDifficulty(Player ...$targets){
|
||||||
if(count($targets) === 0){
|
if(count($targets) === 0){
|
||||||
@ -3147,6 +3314,9 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function doChunkGarbageCollection(){
|
public function doChunkGarbageCollection(){
|
||||||
$this->timings->doChunkGC->startTiming();
|
$this->timings->doChunkGC->startTiming();
|
||||||
|
|
||||||
@ -3165,6 +3335,11 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
$this->timings->doChunkGC->stopTiming();
|
$this->timings->doChunkGC->stopTiming();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param bool $force
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function unloadChunks(bool $force = false){
|
public function unloadChunks(bool $force = false){
|
||||||
if(count($this->unloadQueue) > 0){
|
if(count($this->unloadQueue) > 0){
|
||||||
$maxUnload = 96;
|
$maxUnload = 96;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user