Добавлен Lazdakon,
опубликован
Модифицирование Minecraft?
Содержание:
Начнём, пожалуй, с редактирования ChunkProviderGenerate.
Откроем файл ChunkProviderGenerate.java. Находится он в
Откроем файл ChunkProviderGenerate.java. Находится он в
\MCP\sources\minecraft\net\minecraft\src
Прокрутим файл до строк:
for(int j2 = 0; j2 < 20; j2++)
{
int i1 = k + rand.nextInt(16) + 8;
int k4 = rand.nextInt(128);
int k7 = l + rand.nextInt(16) + 8;
(new WorldGenLakes(Block.waterMoving.blockID)).generate(worldObj, rand, i1, k4, k7);
}
В этом участке кода мы видим генератор озёр.
Прокрутим чуть ниже:
Прокрутим чуть ниже:
for(int j2 = 0; j2 < 20; j2++)
{
int k5 = k + rand.nextInt(16);
int k8 = rand.nextInt(128);
int l10 = l + rand.nextInt(16);
(new WorldGenMinable(Block.dirt.blockID, 32)).generate(worldObj, rand, k5, k8, l10);
}
Скопируем код генерации земли (второй участок кода).
Выделяем, [Ctrl+C], перейдём в окно с ChunkProviderGenerate, [Ctrl+V]
Выделяем, [Ctrl+C], перейдём в окно с ChunkProviderGenerate, [Ctrl+V]
У вас должно получится примерно вот так (Подразумевается, что читатель сам успел написать имя генерируемого блока и его параметры, в нашем случае oreEmerald):
Как можно увидеть на изображении, мы добавили блок oreEmerald.
Конечно, вместо oreEmerald можете вписать любой другой блок.
Конечно, вместо oreEmerald можете вписать любой другой блок.
Вы заметили, что на изображении следующие строчки имеют несколько иные цифры, по сравнению с другими кусками?
int k35
int k65
int l95
Это потому, что они должны обязательно НЕ совпадать с другими из остальных кусков, иначе либо компилятор, либо игра при создании мира выдаст ошибку.
Всё, мы добавили в генератор новый блок.
Всё, мы добавили в генератор новый блок.
Запускайте recompile.bat а затем test_game и проверяйте.
Важная информация
Рассмотрим, за что отвечает каждая строка:
for(int j2 = 0; j2 < 20; j2++)
Число 20 отвечает за редкость блока в мире. Можно поставить значение 40, тогда блок будет "Вездесущим".
Следующая строка - высоты, на которых будет генерироваться блок:
Следующая строка - высоты, на которых будет генерироваться блок:
int k8 = rand.nextInt(128);
Это максимальная высота от админиума (самый твёрдый блок, используется как кора земли, за ним уже пустота) для генерации блока.
(new WorldGenMinable(Block.dirt.blockID, 32)).generate(worldObj, rand, k5, k8, l10);
32 в этой строке отвечает за размер месторождения, т.е. за количество блоков, которые будут генерироваться в одном месторождении.
Экспериментируйте! Но, будьте осторожны. Лучше всего иметь резервную копию папки src, на всякий случай. И не забывайте согласовать значения k5, k8, l10 с теми, которые написаны в файле ChunkProviderGenerate. Иначе вы просто не сможете скомпилировать игру. Кстати, WorldGenMinable отвечает за тип генератора. Вы можете даже создать свой тип генератора, но это будет непросто.
Содержание
Комментарии пока отсутcтвуют.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.