Вверх ↑
Этот топик читают: Гость
Ответов: 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
Ответов: 4072
St. Xenogen
I hate globes
#2: 2012-08-22 17:04:08 ЛС | профиль | цитата
Space_man, Лучше бы научил людей код писать для блоков
Спасибо. Буду пользоваться
карма: -71
Связаться со мной можно через ВК (См. профиль)
0
Ответов: 117
#3: 2012-08-22 17:06:15 ЛС | профиль | цитата
Я сейчас больше заинтересован в привате, уже удалось запретить юзерам ломать дорожки, от этого отталкиваюсь.
карма: -3
Вас на корм...вас на корм....вас на корм..ить?вы голодны?
0
Ответов: 3595
Eternity
Observers
#4: 2012-08-22 17:06:43 ЛС | профиль | цитата
Код вставляй в теги code
Кнопочка слева от url
Иначе получается тихий ужас
карма: 73
0
Ответов: 117
#5: 2012-08-22 17:07:12 ЛС | профиль | цитата
sabotajnik7 писал(а):

Не могу выделить тогда цветом.
карма: -3
Вас на корм...вас на корм....вас на корм..ить?вы голодны?
0
Ответов: 3595
Eternity
Observers
#6: 2012-08-22 17:07:51 ЛС | профиль | цитата
Space_man, цвет и не нужен. Также есть вариант со скрином страницы.
карма: 73
0
Ответов: 9308
Monte Carlo
Неактивен
#7: 2012-08-22 17:08:23 ЛС | профиль | цитата
Space_man писал(а):
В следующем уроке расскажу о том, как запретить игрокам ломать эти дорожки.

Город с человеческим лицом начал строиться)
карма: 3
Правила, bbCode, Антигробы | Сломай бедрок и выпадет яйцо админа (с) FoxyStar
0
Ответов: 117
#8: 2012-08-22 17:09:09 ЛС | профиль | цитата
MonkeyMini писал(а):

да, когда сделал тоже об этом подумал, на самом деле маловато места будет для привата на чанк.
карма: -3
Вас на корм...вас на корм....вас на корм..ить?вы голодны?
0
Ответов: 5281
NeverClan
Assistants
#9: 2012-08-22 17:12:51 ЛС | профиль | цитата
Только вот одна проблема: на форуме где бы то ни было, заменяются нормальные ‹, › на им подобные, а не как это должно быть, на их html entities. Учитывайте при копировании.
карма: 147
0
Ответов: 117
#10: 2012-08-22 17:14:28 ЛС | профиль | цитата
petrocan писал(а):

Сори, догнал только на половину, с html не дружу. внешних изменений не видно?
карма: -3
Вас на корм...вас на корм....вас на корм..ить?вы голодны?
0
Ответов: 4398
NeverClan
Assistants
#11: 2012-08-22 17:15:13 ЛС | профиль | цитата
Space_man писал(а):
ChunkProviderFlat.java

а где он?
карма: 38
RIP cities
0
Ответов: 117
#12: 2012-08-22 17:15:41 ЛС | профиль | цитата
Ser_Glushko писал(а):

mcp\mcp72\src\minecraft_server\net\minecraft\src
карма: -3
Вас на корм...вас на корм....вас на корм..ить?вы голодны?
0
Ответов: 5281
NeverClan
Assistants
#13: 2012-08-22 17:16:32 ЛС | профиль | цитата
Space_man писал(а):
Сори, догнал только на половину, с html не дружу. внешних изменений не видно?
Проблема не ваша, а форума. Пока это не будет исправлено — так и будет.
И цитировать - выделить и нажать "цитата"
карма: 147
1
Голосовали:Space_man
Ответов: 1205
Lono
Рекрут
#14: 2012-08-22 17:52:11 ЛС | профиль | цитата
Space_man, если напишешь на форуме вот так:
[spoiler=My code]
public static void do_srakofag() {
System.out.println("sraken schwaineen");
}
[/spoiler]
...то получишь вот такую неразбериху:
My code

public static void do_srakofag() {
System.out.println("sraken schwaineen");
}

Но если использовать bb-тег code:
[spoiler=My code]
‹code›
public static void do_srakofag() {
System.out.println("sraken schwaineen");
}
‹/code›
[/spoiler]
...получится намного лучше:
My code

public static void do_srakofag() {
System.out.println("sraken schwaineen");
}

Только code надо писать не с ‹ › а внутри [ ], т.к. в этом посте если напишу с [ ], ты его не увидишь)
карма: 14
semplar2007@gmail.com
0
Ответов: 318
#15: 2012-08-22 21:47:15 ЛС | профиль | цитата
Я буду пользоваться
карма: -16
0
15
Сообщение
...