- 102
- 3
- 77
Предисловие
Основное назначение данной программы - более быстрый и эффективный способ анализа и разбора различных генераторов биомов в Minecraft, включая как стандартный, так и какие-либо другие.Эмулятор не доведен до ума, но он все равно прекрасно справляется со своими задачами: все картинки и массивы из руководств Генерация биомов (часть 1) и Генерация биомов (часть 2) были получены именно благодаря данной программе. Если вы не хотите ограничиваться парочкой биомов в своей модификации, то данный эмулятор очень поможет в разработке собственного алгоритма генерации биомов.
Оглавление
- Левая система координат
- Установка эмулятора
- Классы эмулятора
- Работа с эмулятором
1 Левая система координат
Если данные слова вам ни о чем не говорят, советую обратиться к Википедии или почитать о Векторной алгебре. Если же вам лень делать и то, и другое, то вот объяснение в двух словах: ось X - красная, ось Y - зеленая, ось Z - синяя. Направление всех осей определяется вдоль этих прямых от пересечения ко втором концу, соответственно.Если посмотреть на этот же чанк в генераторе биомов (да-да, это ТОТ ЖЕ чанк), то нижний левый угол будет иметь наименьшие координаты по осям X и Z. Причем ось X направлена снизу вверх, а ось Z - слева направо.
Координаты генерируемых биомов в Minecraft совпадают с координатами пикселей на картинках в генераторе биомов (подробнее - в руководствах), поэтому создав определенный алгоритм в эмуляторе и перенеся его в Minecraft, он будет работать точно также.
2 Установка эмулятора
- Скачать архив с эмулятором (кликабельно).
- Добавить исходники в своей проект.
- Добавить библиотеку guava-23.0.jar, которую я также приложил в архиве.
3 Классы эмулятора
3.1 Main
Класс с основным методом, в котором и вызывается эмуляция генератора по заданным параметрам.3.1 Main
- Main.EnumWorld- перечисления (по умолчанию там также указаны перечисления, которые я использовал для руководств), в которых указана основная информация по миру, то есть:
seed
- сид мираchunkX
,chunkZ
- координаты начального чанкаchunks
- размер генерируемой области. Если установить 1, то сгенерируется 1x1 чанков, 2 - 2x2 чанков и т.д. При желании можно модифицировать код, чтобы генерировать, например, прямоугольную область.
agenlayer
- это рабочий слой, которому присваивается требуемый алгоритм генерации.- Стандартный алгоритм генерации биомов вызывается с помощью кода
GenLayer.initializeAllBiomeGenerators(EWORLD.worldGenSeed);
- Произвольный АГО вызывается аналогично, например
Generators.standartIsland(EWORLD.worldGenSeed);
3.2 MapCreator
Класс, который создает картинки в папке map (если она уже существует, то сначала ее удаляет).size
- определяет размер самой картинки. Если установить 1, то каждая координата будет соответствовать одному 1x1 пикселям, 2 - 2x2 пикселям и т.д.- Работает в двух режимах:
- Генерирует картинку на основании цветов биомов (если идентификатор в массиве равен -1, то заменяет цвет на красный)
- Генерирует черно-белые картинки. Используется только для слой-масок (по ним руководства я еще не делал)
3.3 Debug
Класс, который отвечает за, собственно, вывод информации о процесс генерации.PNG
- определяет создание картинок в папке mapPNG_MASK
- техническая переменная для создания картинок слой-масокCHAT
- очень полезно, когда что-то сломалось или работает не так. Будет выводить в консоль массивы слоев со смещениями и их длинами. Сильно тормозит скорость работу эмулятора, поэтому без сильной надобности можно отключать.
3.4 Generators
Класс, в котором я указал все собственные алгоритмы генерации биомов из руководств.4 Работа с эмулятором
Во-первых, все классы, взятые из Minecraft, находятся по такому же пути, поэтому при переносе классов из эмулятора в свою модификацию достаточно сделать копипаст. Все импорты, все методы рабочие.Во-вторых, в методе
getInts(...)
в каждом слое перед оператором return
вставлен код для вывода этого слоя в виде картинки или текста. Поэтому когда будете создавать свои собственные слои, не забудьте туда добавить эту строку. И да, при переносе слоя в модификацию Minecraft эту строку надо будет удалять, т.к. в Minecraft такого вывода нет. Но если вывод слоя вам не нужен, то необходимости в этой строке также нет.
Java:
Debug.output(this, aint1, areaX, areaY, areaWidth, areaHeight);
В-третьих, как я упоминал, эмулятор не доведен до ума. Он не генерирует редкие версии биомов (исключение - слой GenLayerRareBiomes). Такие биомы имеют в названии переменной слово
MUTATED_
и в эмуляторе будут отображаться черным цветом.Пример работы программы в виде картинок и текста (это -
MESA
):
Последнее редактирование: