Генерация острова

Я пытаюсь создать мир скайблока, но когда он создается, то мир не меняется на тот который мне необходим, я уже и в интернете смотрел(ну там пару сайтов), в ядре, я немного не могу понять почему не создаётся остров:

public function generateChunk($chunkX, $chunkZ){
        $chunk = $this->level->getChunk($chunkX, $chunkZ);
        for ($x = 0; $x < 16; $x++) {
            for ($z = 0; $z < 16; $z++) {
                $chunk->setBiomeId($x, $z, 127);
                if ($chunkX == 0 && $chunkZ == 0) $chunk->setBlockId($x, 127, $z, 2);
            }
        }
        $chunk->setGenerated();
    }

    public function populateChunk($chunkX, $chunkZ){
        $this->random->setSeed(0xdeadbeef ^ ($chunkX << 8) ^ $chunkZ ^ $this->level->getSeed());
        $chunk = $this->level->getChunk($chunkX, $chunkZ);
        $centerOfChunk = new Vector3($chunkX * 16 - 8, 128, $chunkZ * 16 - 8);      
    }
static function createIsland(Player $player){
		$islandName = strtolower($player->getName());
		Server::getInstance()->generateLevel($islandName,
            (int)round(rand(0, (int)(round(time() / memory_get_usage(true)) * (int)str_shuffle("127469453645108") / (int)str_shuffle("12746945364"))))
            , IslandGenerator::class);
        Server::getInstance()->loadLevel($islandName);
        $player->teleport(new Position(8, 130, 8, Server::getInstance()->getLevelByName($islandName)));
	}

Мир создается, но с дефолтной генерацией

Ты генератор зарегистрировал?

1 лайк

ну видимо такой генератор выбрал

if(!$this->getServer()->loadLevel("voidWorld")){
 $this->getServer()->generateLevel("voidWorld", 0, Generator::getGenerator("void"));
}
$level = $server->getLevelByName("voidWorld");
$provider = $level->getProvider();
$chunk = //создаешь свой чанк
$chunk->setGenerated(true);
$level->setChunk($chunk->getX(), $chunk->getZ(), $chunk, false); //loadChunk
$provider->saveChunk($chunk);

А зачем если ты далее не используешь переменные? Гкод

код взял из моего плагина на восстановку чанков из пакетов FullChunkDataPacket, в моем коде я далее использовал эти переменные

Хех, сложно наверна выкачивать карты с восстановлением чанков на сервере)) у меня автоматом генерируется мир

Ладно пойдет, я хотел конечно через класс создать генератор

ну эт прикольно, но мне просто в лом дописывать проски что б сразу мир генерировался

Generator::addGenerator(new CustomGenerator(), 'customvoid');

Вот тебе и коассс генератора

1 лайк

Но ты должен наследовать класс Generator

Минус, все ровно дефолт мир

Эта тема была автоматически закрыта через 12 часов после последнего ответа. В ней больше нельзя отвечать.