Добавляем блок/руду в генератор карты

Добавлен , опубликован

Модифицирование Minecraft?

Содержание:
Начнём, пожалуй, с редактирования ChunkProviderGenerate.
Откроем файл 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]
У вас должно получится примерно вот так (Подразумевается, что читатель сам успел написать имя генерируемого блока и его параметры, в нашем случае 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 отвечает за тип генератора. Вы можете даже создать свой тип генератора, но это будет непросто.

Содержание