Генерация структур

Версия Minecraft
1.12.2
1,031
19
87
Подскажите пожалуйста гайды на тему создания собственной генерируемой в мире структуры.
 
Решение
Так то гайда не подскажу, но могу подкинуть кусочки кода с которых я собирал свой.

Прежде всего надо создать .nbt файл который будет хранить нашу структуру - гайдик.

Дальше, регаем свой генератор:
Java:
GameRegistry.registerWorldGenerator((random, chunkX, chunkZ, world, chunkGenerator, chunkProvider) -> genStruct(world, random, chunkX, chunkZ), 1);
В методе genStruct(у меня он статический если что):
Java:
//получаем х и z + добавляем смещение да бы избежать каскадной генерации
int x = (chunkX << 4) + 8;
int z = (chunkZ << 4) + 8;

//берем рандомный у
int y = random.nextInt(world.getActualHeight());

//тут все ясно
BlockPos position = new BlockPos(x, y, z);

//загружаем nbt файл с нашей структурой(я его положил в...

Eifel

Модератор
1,623
78
608
Так то гайда не подскажу, но могу подкинуть кусочки кода с которых я собирал свой.

Прежде всего надо создать .nbt файл который будет хранить нашу структуру - гайдик.

Дальше, регаем свой генератор:
Java:
GameRegistry.registerWorldGenerator((random, chunkX, chunkZ, world, chunkGenerator, chunkProvider) -> genStruct(world, random, chunkX, chunkZ), 1);
В методе genStruct(у меня он статический если что):
Java:
//получаем х и z + добавляем смещение да бы избежать каскадной генерации
int x = (chunkX << 4) + 8;
int z = (chunkZ << 4) + 8;

//берем рандомный у
int y = random.nextInt(world.getActualHeight());

//тут все ясно
BlockPos position = new BlockPos(x, y, z);

//загружаем nbt файл с нашей структурой(я его положил в main/resources/assets/modid/structures/laboratory.nbt)
WorldServer worldServer = (WorldServer)world;
MinecraftServer minecraftServer = world.getMinecraftServer();
TemplateManager templateManager = worldServer.getStructureTemplateManager();
Template template = templateManager.get(minecraftServer, new ResourceLocation(Information.MOD_ID + ":laboratory"));

//создаем обьект с настройками размещения(тут можно вертеть нашу постройку и т.д.)
PlacementSettings settings = new PlacementSettings();

//генерим на позиции из position используя настройки settings
template.addBlocksToWorld(world, position, settings);

Тут вроде оно должно генерить твою структуру в каждом чанке на рандомной высоте, но ты сам уже можешь подобавлять там всякие проверки, рандомы и т.д.
П.с. вот еще мой код к примеру, но там запутанно
 
Последнее редактирование:
1,031
19
87
Я бы сейчас и сам последние сообщения отправил бы в оффтоп... @Thunder, хватит уже пропитывать меня своим духом чистоты и порядка модератора. :LOL::sneaky:
*я бы его вместо ивасика поставил бы админом, только тсс, лишь бы ивасик не увидел*
Наш модер вообще молодец, надо бы придумать трофей "Модератор года" за оценку его работы. ;)
Ну вот, обиделся на себя и сам себе варн бы выписал за оффтоп :cry:
 
5,018
47
783
а ты, что ли схематики так грузишь?
да никакие не схематики. Просто структура. В ванили все структуры через них.
Никакой гибкости...
Великолепная. Ты сам строишь то что хочешь, а не сидишь кодом подгоняешь. Да кодом и неудобно.
 

Eifel

Модератор
1,623
78
608
Оч. сомнительно... Какая же тут гибкость, если построил и всё... Никак её не изменишь во время генерации... Не подстроишь под ландшафт.
Не надо забывать что мы имеем доступ к любому блоку в нашей структуре, с учетом поворотов и т.д. Можно подстраивать под ландшафт. Я сам пока еще не сильно разобрался, но мне этот способ явно больше нрав чем добавлять блоки кодом...
 
5,018
47
783
Сверху