Вверх ↑
Ответов: 117
#1: 2012-08-22 17:01:47 ЛС | профиль | цитата
Давно наблюдаю в сети однообразные статьи, которые просто копируют все кому не лень. Решил поделится с вами своими открытиями в коде minecraft'а, определенно новыми и полезными.


Для моддинга нам понадобиться MCP, JDK, Notepad++, подробнее здесь. Так же необходимо знать программирование на минимальном уровне.


Урок 1. Изменение генерации мира на сервере.

После того как вы настроили все инструменты, проверили наличие исходников в папке src можно приступить к первому уроку.
За генерацию чанков плоского мира отвечает файл ChunkProviderFlat.java . Открыв его, можно найти там следующие строки:

Код

private void generate(byte[] par1ArrayOfByte)
{
int var2 = par1ArrayOfByte.length / 256;

for (int var3 = 0; var3 ‹ 16; ++var3)
{
for (int var4 = 0; var4 ‹ 16; ++var4)
{
for (int var5 = 0; var5 ‹ var2; ++var5)
{
int var6 = 0;

if (var5 == 0)
{
var6 = Block.bedrock.blockID;
}
else if (var5 ‹= 2)
{
var6 = Block.dirt.blockID;
}
else if (var5 == 3)
{

var6 = Block.grass.blockID;

}

par1ArrayOfByte[var3 ‹‹ 11 | var4 ‹‹ 7 | var5] = (byte)var6;
}
}
}
}



var3,var4,var5 это координаты xzy, var6 указывает на id блока, который должен быть добавлен по координатам.
Давайте добавим в мир дорожки по краям чанков, для этого нам необходимо будет добавить следующие строки:


Код
private void generate(byte[] par1ArrayOfByte)
{
int var2 = par1ArrayOfByte.length / 256;

for (int var3 = 0; var3 ‹ 16; ++var3)
{
for (int var4 = 0; var4 ‹ 16; ++var4)
{
for (int var5 = 0; var5 ‹ var2; ++var5)
{
int var6 = 0;

if (var5 == 0)
{
var6 = Block.bedrock.blockID;
}
else if (var5 ‹= 2)
{
var6 = Block.dirt.blockID;
}
else if (var5 == 3)
{
if (var3 == 15 || var3 == 0 || var4 == 0 || var4 == 15)
{
var6 = Block.whiteStone.blockID;
}
else {
var6 = Block.grass.blockID; }

}

par1ArrayOfByte[var3 ‹‹ 11 | var4 ‹‹ 7 | var5] = (byte)var6;
}
}
}
}


эти строки добавляют проверку, и если координаты x,z будут крайними(т.е. 0 и 15), то вместо травы будет генерироваться камень края.
Компилируем, устанавливаем в параметрах сервера level-type=FLAT и запускаем. Подключаемся. Результат должен быть примерно таким:

Результат

В следующем уроке расскажу о том, как запретить игрокам ломать эти дорожки.

карма: -3
Вас на корм...вас на корм....вас на корм..ить?вы голодны?
3
Голосовали:MonkeyMini, wthout_brain, Extezi