“Cannot get highest block in an ungenerate chunk” => “Не удается получить самый высокий блок в сгенерированном фрагменте”
Как исправить данную ошибку?
Я загружал чанк таким образом: (ChunkLoadEvent) $event->getWorld()->loadChunk($x, $z);
Во-первых, loadChunk($x >> 4, $z >> 4);
.
Во-вторых, чанк загружается не моментально
таск поставить?
Логично
а на сколько секунд?
Каждую секунду проверять загрузился ли чанк, а потом делать дела с ним
как это каждую секунду?
scheaduleRepeatingTask(new CheckChunk(), 20);
Хорошо попробую
строить в классе таска?
Незнаю
- код:
<?php
use pocketmine\scheduler\Task;
class CheckChunk extends Task
{
private $main,$x,$z;
public function __construct($main,$x,$z)
{
$this->main = $main;
$this->x = $x;
$this->z = $z;
}
public function onRun(int $tick)
{
if($main->isDungeonCreated)
{
$this->cancel();
}
else
{
$main->checkChunk($x,$z); //checkChunk() - это проверка того или иного действия.
}
}
}
?>
А, и еще ты не так написал.
use pocketmine\scheduler\TaskScheduler;
use pocketmine\world\WorldManager;
public $isDungeonCreated = false;
public function checkChunk($x,$z)
{
if($this->getWorldManager()->getWorldByName("world")->isChunkLoaded($x,$z))
{
$this->isDungeonCreated = true;
//Делай данж.
}
}
public function onEnable()
{
$x = 16;
$z = 16;
$this->getScheduler()->scheduleRepeatingTask(new CheckChunk($this,$x,$z), 20);
}
Код тебе печатал, чекал импорты.