Перейти к содержимому


Фотография

[Без ModLoader] Основы программирования для Minecraft


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 382

#1 WDkun

WDkun

    Зачарователь

  • Пользователи
  • Сообщений: 1939

Написал 18.01.2011 - 22:27

"Рас мы такие профи", то и тема должна быть.
Здесь мы с Помидоркой будем рассказывать, как модифицировать Майнкрафт.
MCP - главный инструмент моддинга. С его помощью вы сможете декомпилировать майнкрафт, компилировать, тестировать и внедрять моды прямо в чистую игру.
Ссылка на релизы: http://mcp.ocean-lab...hp/MCP_Releases
Тема на официальном форуме: http://www.minecraft... ... oder-pack/

Надо будет скачать свежайший стабильный релиз и распаковать в любую угодную вам папку. Bin и resources надо будет кинуть в папку jars. Затем запускайте файл decompile.bat. Если вы все сделали правильно, то все декомпилится без ошибок. Если у вас возникли проблемы - обращайтесь к нам в конфочку.
Сырцы появятся здесь: MCP\sources\minecraft\net\minecraft\src
После обновления MCP под новую версию вам надо будет лишь скопировать измененные сырцы и вставить в новую версию.


Скоро переведу и кину в тему мануалы по добавлению нового блока в игру, Помидорка напишет мануал по добавлению блока в генератор и по добавлению своего итема.
По всем возникшим проблемам отписываться сюда или идти в нашу джаббер-конференцию.
viewtopic.php?f=16&t=1032 - Здесь подробно описано, как туда войти.

Прочитайте, пожалуйста, внимательно всё, что написано ниже. Задавайте вопрос ТОЛЬКО ЕСЛИ вы уверены, что все требования соблюдены и на ваш вопрос нет ответа. Если же вы не последуете этому, то в конфочке вам скорее всего либо ответят в грубой форме (с матами и унижениями), либо не ответят вовсе.

Итак, требования:

1. Java Development Kit 6 (JDK6). Обязательно. http://www.oracle.co... ... 46242.html
2. Minecraft Coder Pack (последняя версия)
3. EditPlus/Notepad++ (Текстовый редактор с подсветкой синтаксиса)
4. Голова на плечах.
5. И желательно, но не обязательно - минимальное знание английского языка.

Установка и использование MCP:

1. Создаём где угодно папку, называем её как хотим.
2. Копируем туда файлы из архива, который скачали Вопросы и ответы:

Вопрос: Куда установить MCP?
Ответ: В любую папку.

Вопрос: Запускаю recompile.bat, выдает что-то про PATH... Не могу понять, что ему нужно.
Ответ: Начиная от версии 2.9, нужно добавить переменную PATH в ваш Windows. Выше мы уже написали про это, читайте внимательнее.

Вопрос: Я так и не понял, куда нужно добавить bin и resources... Объясните, что к чему.
Ответ: В папку jars, которая, в свою очередь, находится в папке MCP.
Вопрос: А где находятся файлы уже декомпиленного майнкрафта?
Ответ: В папке sources.
Вопрос: Я хочу декомпилить сервер. Куда мне скопировать minecraft_server.jar?
Ответ: В папку jars.
  • Поблагодарил: ClintonNus

#2 WDkun

WDkun

    Зачарователь

  • Пользователи
  • Сообщений: 1939

Написал 18.01.2011 - 22:47

Добавление своего блока в игру

Оригинал: http://www.minecraft... ... try1502412

В этом туториале я объясню вам, как добавить свой блок в Майнкрафт и как добавить возможность его крафта. В итоге у нас выйдет блок, похожий на камень.

Создание нового блока

1. Вам нужно создать новый файл под именем BlockExample.java в папке src.
2. Вот базовая структура этого файла:
package net[paste][/paste]minecraft[paste][/paste]src;import java[paste][/paste]util[paste][/paste]Random;public class BlockExample extends Block{    public BlockExample(int i, int j)    {        super(i, j, Material[paste][/paste]rock);//j - текстура, i - ID блока, от материала зависят различные свойства блока    }}
3. Теперь вам надо добавить этот блок конкретно в игру. Чтобы это сделать, откройте файл Block.java
4. Вы увидите объявления переменных в конце файла. Добавьте туда новую строчку:
public static final Block example;
5. После объявлений переменных, вы должны увидеть определения этих переменных. Добавьте туда эту строчку:
example = (new BlockExample(98, 1))[paste][/paste]setHardness(1[paste][/paste]5F)[paste][/paste]setResistance(10F)[paste][/paste]setStepSound(soundStoneFootstep);
Как упоминалось ранее, этот код создает блок, похожий на камень.
new BlockExample(98, 1) создает новый блок, первая цифра - ID блока. ID блока должен быть уникален! Вторая цифра присваивает блоку текстуру камня - 1.
setHardness(1.5F) - Твердость. 1.5 - такая же твердость, как и у камня.
setResistance(10F) - устойчивость к взрывам.
setStepSound(soundStoneFootstep) - звук шага по блоку.
Поздравляю! Вы только что создали новый блок. Чтобы использовать этот блок, вам нужно его сначала получить. Это может быть сделано с помощью мода Single Player Commands: "/give 98".
Совет: посмотрите на файлы других блоков и итемов, это поможет вам добавить вашему блоку уникальные характеристики.

Следующий туториал посвящен добавлению нового рецепта крафта, чтобы вы смогли протестировать ваш новый блок не прибегая к использованию сторонних программ или модов.

#3 WDkun

WDkun

    Зачарователь

  • Пользователи
  • Сообщений: 1939

Написал 18.01.2011 - 22:55

Создание нового рецепта крафтинга

1. Откройте CraftingManager.java
2. Вы должны увидеть конструктор для класса. Новые рецепты добавляются посредством функции AddRecipe
3. Промотайте примерно до середины файла и добавьте туда новую строчку:

addRecipe(new ItemStack(Block[paste][/paste]example, 1), new Object[] {"##", "##", Character[paste][/paste]valueOf('#'), Block[paste][/paste]dirt});
Итак, вы добавили новый рецепт. Примерно так он выглядит:
[soil] [soil]
[soil] [soil]
В итоге вы получите BlockExample.
addRecipe - это функция добавления нового рецепта.
new ItemStack(Block.example, 1) - Вместо Block.example вы можете подставить любой нужный вам блок или итем. Для того, чтобы добавить итем (вещь) напишите там:
new ItemStack(Item[paste][/paste]нужный вам итем, 1)
Цифра 1 здесь означает количество этих блоков или итемов после окончания крафтинга.
Вместо # здесь может быть любой символ, эти символы расшифровываются в Character.valueOf('введенный вами символ') Для крафта в верстаке вам надо лишь указать три таких символа, например:
addRecipe(new ItemStack(Block[paste][/paste]example, 1), new Object[] {            "###", "###", "###", Character[paste][/paste]valueOf('#'), Block[paste][/paste]dirt        });


#4 Agent Pomidorka

Agent Pomidorka

    Добытчик железа

  • Пользователи
  • Сообщений: 436
  • Ник в Minecraft:
    agentpomidor
  • Откуда: отовсюду

Написал 18.01.2011 - 23:40

В этом уроке я расскажу, как добавить вашу руду или просто блок в генератор карты.



Важная информация: Сложность этого урока небольшая. Если вы не Начинаем: Редактирование ChunkProviderGenerate.

Давайте откроем файл ChunkProviderGenerate.java (Советую в редактировании использовать Notepad++ , т.к. в нём есть подсветка синтаксиса и много других вкусностей).

Этот файл находится в X:\MCP\sources\minecraft\net\minecraft\src

Открыв файл, вы увидите много всяких строчек, буков, цифр и прочих символов. Оставим их, прокрутим файл немножко ниже, до вот этих строк:
for(int j2 = 0; j2 < 20; j2++){int i1 = k + rand[paste][/paste]nextInt(16) + 8;int k4 = rand[paste][/paste]nextInt(128);int k7 = l + rand[paste][/paste]nextInt(16) + 8;(new WorldGenLakes(Block[paste][/paste]waterMoving[paste][/paste]blockID))[paste][/paste]generate(worldObj, rand, i1, k4, k7);}
Это - генерация озёр.

Теперь прокрутим чуть ниже, прямо к:

for(int j2 = 0; j2 < 20; j2++){int k5 = k + rand[paste][/paste]nextInt(16);int k8 = rand[paste][/paste]nextInt(128);int l10 = l + rand[paste][/paste]nextInt(16);(new WorldGenMinable(Block[paste][/paste]dirt[paste][/paste]blockID, 32))[paste][/paste]generate(worldObj, rand, k5, k8, l10);}
Далее возьмем код генерации земли в буфер обмена (он чуть выше).
Выделили, ctrl+c, перешли в окошко с ChunkProviderGenerate, ctrl+v

У вас должно получится примерно вот так (Подразумевается, что читатель сам успел написать имя генерируемого блока и его параметры, в нашем случае oreEmerald) :
Скрытый текст


Как видно на скриншоте, я добавил новый блок oreEmerald.

Естественно, вместо oreEmerald можете вписать любой другой блок.

Итак, мы добавили в генератор новый блок. Поздравляю, ага.

Теперь скорее запускайте recompile.bat а затем test_game и вперед, проверять то, что сделали.



ВАЖНО:


Для тех, кто хочет настроить свой блок как следует, без этого никак:

Скрытый текст


Скоро я напишу урок по добавлению своего предмета в игру, и, если хватит времени, то подробно опишу как ПРАВИЛЬНО запилить свою руду (именно руду) в игру.
Если у вас буду идеи по улучшению урока - говорите, не стесняйтесь! Для меня очень важно ваше мнение.

Всегда готовый помочь, ваш Агент Помидорка.
Ждите еще новых уроков от меня, заглядывайте в тему почаще :-)

Look like th' innocent flower,
But be the serpent under 't.


#5 DaveDee

DaveDee

    Странник

  • Пользователи
  • Сообщений: 66

Написал 19.01.2011 - 15:55

Господа, спасибо вам огромное.Только собрался полезть в дебри забугорного форума, а тут уже все разжевали.

#6 Agent Pomidorka

Agent Pomidorka

    Добытчик железа

  • Пользователи
  • Сообщений: 436
  • Ник в Minecraft:
    agentpomidor
  • Откуда: отовсюду

Написал 19.01.2011 - 18:38

В этом уроке я подробно объясню, как добавить ваш предмет в игру.



Важная информация: Сложность этого урока низкая. Вам необязательно знать язык java, но хорошее знание последнего увеличит ваши шансы на успешное добавление предмета в игру.

Для начала нам понадобится декомпиленная версия нашей любимой игры - кубокрафта. Подразумевается, что читатель уже имеет декомпилированный клиент.

Начинаем: Редактирование Item.java

Давайте откроем файл item.java (Советую в редактировании использовать Notepad++ , т.к. в нём есть подсветка синтаксиса и много других вкусностей).

Этот файл находится в X:\MCP\sources\minecraft\net\minecraft\src

Открыв файл, вы увидите много всяких строчек, буков, цифр и прочих символов. Оставим их, прокрутим файл немножко ниже, до вот этой строки:
public static Item recordCat = (new ItemRecord(2001, "cat"))[paste][/paste]func_20010_a(1, 15)[paste][/paste]func_20011_a("record");
В этой строке находятся данные о предмете с идентификатором 2001. Получить его в игре можно прописав /give 2257. Т.е. ID предмета, который вы добавите, будет 101 + 256 = 357. Вместо 101 берите ID вашего предмета, который вы добавите в этом уроке.

Перейдем непосредственно к добавлению нового предмета:
public static Item example = (new Item(101))[paste][/paste]func_20010_a(13, 0)[paste][/paste]func_20011_a("example");
Возьмите этот код и вставьте его в файл, чтобы у вас получилось примерно вот так:

Скрытый текст

Если вы сделали все правильно, то можете немедленно запускать компилятор и проверять, нет ли ошибок.

И не забывайте: предмет появился в игре, но вам еще нужно его как-нибудь добыть\скрафтить!
Поэтому смотрите урок по добавлению нового рецепта в игру от WD-куна. Думаю, разберетесь, что к чему.


ВАЖНО:


Если вы хотите настроить свой предмет как следует, без этого никак, то гляньте-ка сюда:
Скрытый текст


теги:minecraft моддинг,minecraft уроки,minecraft туториалы

Look like th' innocent flower,
But be the serpent under 't.


#7 WDkun

WDkun

    Зачарователь

  • Пользователи
  • Сообщений: 1939

Написал 19.01.2011 - 18:57

Обновил туториал по добавлению рецепта. :3

#8 Tarne

Tarne

    Добытчик алмазов

  • Пользователи
  • Сообщений: 519

Написал 19.01.2011 - 19:06

Полезная тема, прилепил.
ИзображениеИзображениеИзображениеИзображение

#9 lian13

lian13

    Добытчик светокамня

  • Пользователи
  • Сообщений: 3351
  • Откуда: Няшколэнд

Написал 20.01.2011 - 02:24

Мне кажется или пахнет копипастом? ;/
Да, раковый у вас форум. (с) Crioman

#10 WDkun

WDkun

    Зачарователь

  • Пользователи
  • Сообщений: 1939

Написал 20.01.2011 - 08:49

Нет, я беру за основу буржуйский туториал, перевожу и адаптирую его, а Помидорка пишет туториалы сам, ибо буржуйские безнадежно устарели.

#11 lian13

lian13

    Добытчик светокамня

  • Пользователи
  • Сообщений: 3351
  • Откуда: Няшколэнд

Написал 20.01.2011 - 19:06

Хм... Тогда понятно, почему они такие чопорные у тебя ...

На что ты намекаешь?

Я утверждаю что туторы очень скучные и без шуток.Если кто смотрел Фейри Тейл в озвучке Анкорда тот поймет.

Тутор и не должен быть смешным.

Кому как.Я просто засыпаю от большого количества букв, если там все очень серьезно или нету сюжета.
Да, раковый у вас форум. (с) Crioman

#12 WDkun

WDkun

    Зачарователь

  • Пользователи
  • Сообщений: 1939

Написал 20.01.2011 - 19:11

Обиделся@Поливай говномАлсо, сейчас запилю туториал по добавлению своего моба, только сам проэкспериментирую. :3

#13 lian13

lian13

    Добытчик светокамня

  • Пользователи
  • Сообщений: 3351
  • Откуда: Няшколэнд

Написал 20.01.2011 - 22:57

А вот это уже интересно!
Да, раковый у вас форум. (с) Crioman

#14 DaveDee

DaveDee

    Странник

  • Пользователи
  • Сообщений: 66

Написал 23.01.2011 - 15:24

Интересный вопрос, при добавлении собственной текстуры уникального блока, без изменения terrain.png не обойтись без лишней головной боли?

#15 WDkun

WDkun

    Зачарователь

  • Пользователи
  • Сообщений: 1939

Написал 23.01.2011 - 15:55

Хм. Добавлять свой собственный terrain.png? Мы с помидоркой пытались вчера такое сделать, но не получилось.

#16 DaveDee

DaveDee

    Странник

  • Пользователи
  • Сообщений: 66

Написал 23.01.2011 - 15:59

Знаю можно в обход, но с кучей дополнительных модов...Не айс короче...

#17 Agent Pomidorka

Agent Pomidorka

    Добытчик железа

  • Пользователи
  • Сообщений: 436
  • Ник в Minecraft:
    agentpomidor
  • Откуда: отовсюду

Написал 23.01.2011 - 16:41

Интересный вопрос, при добавлении собственной текстуры уникального блока, без изменения terrain.png не обойтись без лишней головной боли?

Да я вчера пробовал это все сделать. И пробовал не один. Но ничего у нас не вышло, к сожалению.

Look like th' innocent flower,
But be the serpent under 't.


#18 DaveDee

DaveDee

    Странник

  • Пользователи
  • Сообщений: 66

Написал 23.01.2011 - 19:21

Печально, ладно подожду до лучших времен.

#19 WDkun

WDkun

    Зачарователь

  • Пользователи
  • Сообщений: 1939

Написал 24.01.2011 - 19:51

Ах ты ж <censored>ый ты на######, MCP наконец обновился до новой версии! Качаем@Модифицируем

#20 lian13

lian13

    Добытчик светокамня

  • Пользователи
  • Сообщений: 3351
  • Откуда: Няшколэнд

Написал 24.01.2011 - 20:05

Запилите тутор по изменению музыки в игре, а то свой с418 слушает только Нотч
Да, раковый у вас форум. (с) Crioman


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных