Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Генератор мира и как его изменить?

Mik1313

Старожил
Девелопер
Пользователь
Баллы
153
del.
 
Последнее редактирование:
Вообщем, есть у меня одно желание, и в пути его выполнения я наткнулся на небольшую проблему...а заключается она в том что я не знаю как настроить генератор мира под себя.
Например не нужно что бы иногда генерировались рандомные построения и т.д.
Если вы знаете, как написать такой мод, да именно мод для клиента, то прошу, поделитесь информацией об этом. (ссылки на гайды приветствуються).
И у меня так же несколько вопросов:

Я полагаю что это именно мод, должен будет в следствии изменить генератор?
Возможно\нужно ли портировать данный мод на буккит для того что бы чанки на сервере генерировались так, как задано в моде?
Нужны ли будут MCForge\ModLoader?
Насколько это всё сложно?

Просьба отвечать только по теме.
И так же, не надо рассуждений, только факты и ссылки.
Можно написать и плагин. Покопайся в исходниках плагинов-генераторов.
 
Генератор можно сделать через плагин:
Главный класс:
Java:
public class test extends JavaPlugin
{
    public ChunkGenerator getDefaultWorldGenerator(String worldName, String id)
    {
        return new testGenerator(id);
    }
}
Класс генератора:
Код:
public class testGenerator extends ChunkGenerator
{
    private final string data;
    testGenerator(Strind s)
    {
        this.data = s;
        //s - параметры, которые передаются при вызове генератора
    }
    @Override
    public byte[][] generateBlockSections (World world, Random random, int Chunkx, int Chunkz, BiomeGrid biomes)
    {
        byte[][] chunk = new byte[(int)Math.floor(world.getMaxHeight() / 16)][4096];
        //тут мы производим операции над чанком с позициями Chunkx, Chunkz и возвращаем получившееся
        //обратиться к определённой позиции в чанке можно так:
        //chunk[y >> 4][(Math.abs(y & 15)) << 8 | (Math.abs(z & 15)) << 4 | (Math.abs(x & 15))] = (byte) (id & 255);
        //где x, y, z - координаты, id - id блока
        return chunk;
    }
    @Override
    public Location getFixedSpawnLocation(World world, Random random)
    {
        //Тут мы возвращаем позицию спавна
        return new Location(world, 0, world.getHighestBlockYAt(0, 0), 0);
    }
}
Название генератора = названию плагина, параметры передаются в генератор так: название_плагина_генератора:параметры_генератора
 

Поделиться этой страницей

Назад
Верх