- 1,031
- 19
- 87
Подскажите пожалуйста гайды на тему создания собственной генерируемой в мире структуры.
GameRegistry.registerWorldGenerator((random, chunkX, chunkZ, world, chunkGenerator, chunkProvider) -> genStruct(world, random, chunkX, chunkZ), 1);
//получаем х и 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 файл с нашей структурой(я его положил в...
GameRegistry.registerWorldGenerator((random, chunkX, chunkZ, world, chunkGenerator, chunkProvider) -> genStruct(world, random, chunkX, chunkZ), 1);
//получаем х и 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);
да никакие не схематики. Просто структура. В ванили все структуры через них.а ты, что ли схематики так грузишь?
Великолепная. Ты сам строишь то что хочешь, а не сидишь кодом подгоняешь. Да кодом и неудобно.Никакой гибкости...
Это конечно да, но ничего, разберёмся как нибуть, пока нужно мне хоть это научится делать.Не подстроишь под ландшафт
Не надо забывать что мы имеем доступ к любому блоку в нашей структуре, с учетом поворотов и т.д. Можно подстраивать под ландшафт. Я сам пока еще не сильно разобрался, но мне этот способ явно больше нрав чем добавлять блоки кодом...Оч. сомнительно... Какая же тут гибкость, если построил и всё... Никак её не изменишь во время генерации... Не подстроишь под ландшафт.
А вот про это можно поподробнее плез?мы имеем доступ к любому блоку в нашей структуре