-=Легко=-
Глава 1.Подготовка рабочего места и настройка MCP. Программы: -
Java Development Kit 6 (JDK 6). -
Minecraft Coder Pack (MCP 4.3, самая верхняя). -
Notepad++ - для облегчения работы. -
ModLoader + Клиент (качать обязательно). Установка: 1. Создаем папку в любом удобном для вас месте.
2. Копируем файлы архива
MCP(Minecraft Coder Pack) в эту папку.
3. Прописываем путь к
javac.exe (JDK(Java Development Kit 6)) в системной переменной PATH.
Щелкните правой кнопкой мыши по ярлыку
Мой компьютер и выберите категорию
Дополнительно. Там же ниже будет кнопка
Переменные среды.
В системных переменных найдите переменную
Path (PATH) и допишите в ней строки:
Code
;C:\Program Files\Java\jdk1.6.0_25\bin
Code
;C:\Program Files\Java\jdk1.6.0_26\bin
или
Code
;Диск на который вы установили JDK:\Полный\путь\к папке bin JDK\bin
В зависимости от версии и путя к папке.
Без пробела и с символом "точка с запятой". Путь укажите, конечно же, по вашему усмотрению системы.
4. Кладем из специальной сборки папки bin и resources в папку jars, которая непосредственно находится в вашей папке которую вы подготовили ранее.
5. Откройте папку bin и найдите minecraft.jar. Откройте (не разархивируйте), и удалите папку META-INF.
6. Запускаем decompile.bat.
7. Как только вы пройдете уроки ниже, просто напросто запускайте recompile.bat, а после чего startclient.bat и тестируйте.
8. Ну а когда вы точно решили что мод готов - запускайте reobf.bat, проходите в папочку reobf и все содержимое кидайте в файл minecraft.jar специально подготовленной для этого игры.
Глава 2. Создание блока Запоминайте сразу, в пути \src\minecraft\net\minecraft\src находится весь декомпилированный код игры.
Для начала давайте создадим новый файл посредством программы Notepad++ или стандартным текстовым редактором. Называться он будет
mod_block.java.
Он служит для складывания всей информации о блоках, рецептах, etc.
Впишем такую строчку (Желательно используйте
Notepad++ для более удобной работы при создании мода).
Code
package net.minecraft.src;
Она даст возможность данному файлу работать с
Minecraft-ом.
После чего добавим ещё две строчки.
Code
public class mod_block extends BaseMod
{
Здесь мы создаем класс.
Добавим ещё одну строчку.
Code
public static Block newblock = new BlockNew(110, 0).setHardness(0.5F).setResistance(1.0F).setBlockName("newblock");
тут мы регистрируем наш блок.
Давайте разберём.
Code
public static Block newblock
newblock - это кодовое(в коде) название (не путайте с обычным названием).
Здесь у нас название файла самого блока. Будет использоваться для блока (доп. характеристики).
Число 110 - айди блока. Используйте с 110 по 250.
Число 0 - не трогайте, это индексация текстуры по terrain.png(Айди блока или предмета у которого мы будем брать текстуру(0 - это значит что текстура будет наша, а не другого блока или предмета)). Оставим в фазе нуля.
Тут у нас крепкость указана. На сколько силен блок, так сказать. Вполне хватит и 0.5F если это блок похожий на землю (по скорости разрушения).
Устойчивость от взрыва. 0.3F отлично вписывается к блоку похожему на землю.
Если хотите чтобы ваш блок был светящимся, просто укажите это через точку.
1.0F - светится как австралий(Светащийся камень(Из ада)).
Code
setBlockName("newblock")
Где
newblock это имя нашего блока в игре.
Теперь давайте создадим файл
BlockNew.java (по названию блока) который определит наш кубик в игре.
Давайте напишем первую строчку.
Code
package net.minecraft.src;
Теперь давайте напишем строку которая нам позволит использовать переменную Random.
Code
import java.util.Random;
Создадим открытый класс двумя строчками.
Code
public class BlockNew extends Block
{
Обявим блок тем самым делаем его настоящим (материальным) и задаем свойство (каждое свойство имеет ряд своих особенностей, типа звуков и т.п).
Code
public BlockNew(int i, int j)
{
super(i, j, Material.ground);
}
Немного понятий о материалах: В
minecraft существует куча материалов которые указывают программе на что похож этот блок.
Самый распространённые материалы для блоков это groun(Земля) и rock(Камень).
Дальше объявляем выбрасывание и его ID.
Code
public int idDropped(int i, int j)
{
return mod_block.newblock.blockID;
}
public int quantityDropped(Random random)
{
return 1;
}
}
Добавим четыре строчки для определения версии вашего мода (или названия).
Code
public String Version()
{
return "1.8.1 Tutorial";
}
2.1. Крафт блока Ну а теперь перейдем к написанию рецепта нашего кубика.
Запишем вот это: Регистрируем блок строкой: Code
ModLoader.RegisterBlock(newblock);
Добавляем название блока в игре.
Code
ModLoader.AddName(newblock, "New Block");
Рецепт блока: Code
ModLoader.AddRecipe(new ItemStack(newblock, 1), new Object[]{ "##", "##", Character.valueOf('#'), Block.dirt});
Давайте разебрём.
Code
(new ItemStack(newblock, 1)
При крафте появляется наш блок в количестве 1 (изменяйте как душе угодно до 64).
Code
new Object[]{ "##", "##", Character.valueOf('#'), Block.dirt
Одна решетка обозначает одну ячейку сверху вниз.
Т.е. в нашем случае мы заполняем обычной землей (Block.dirt(Обязательно нужно указывать что это Item или Block(или название мода(класс) в котором есть этот блок), только если этот блок или предмет не находиться на прямую в файле где указан рецепт)) все крафт-ячейки в инвентаре (их 4).
Для примера, если например ваш объект крафтится не только из земли, да еще и в верстаке, поступать нужно так.
Code
new Object[]{ "#X#", "#Z#", "#X#", Character.valueOf('X'), Block.dirt, Character.valueOf('Z'), Item.stick
В данном примере мы ставим землю по середине в верхней строке, ставим палку по середине в средней строке, и опять землю по середине, но только в третьей строке.
Если какой-то символ (в нашем случае решетка) не указана в
Character.valueOf - то значит дефолтно ячейки должны быть пусты (указаны, например символом
#).
Вот и все. Теперь ваш блок можно скрафтить.
Но если вы хотите чтоб ваш блок можно было выпечь в печке замените код с: Code
ModLoader.AddRecipe(new ItemStack(newblock, 1), new Object[]{ "##", "##", Character.valueOf('#'), Block.dirt});
на: Code
ModLoader.AddSmelting(Block.dirt.blockID, new ItemStack(newblock, 1));
}
2.2. Присвоение текстуры Берем вот такую текстуру: (Размеры не изменять!) Заходим в папку
bin, находим
minecraft.jar, открываем ее программой-архиватором
WinRar или
7-zip и создаем там папку
textures.
И в эту папочку кидаем нашу текстуру
java.png.
Теперь открываем
mod_block.java и добавляем строчки рядом с рецептом.
Code
newblock.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/textures/java.png");
Разбираем.
Code
newblock.blockIndexInTexture
Сразу предупреждаю, не забывайте изменять название регистра здесь.
Code
ModLoader.addOverride("/terrain.png"
Индексирует размер /terrain.png по соотношению с нашим файлов.
Ну а тут, непосредственно, указывается путь к текстуре. В нашем случае это
java.png в папке
textures.
Вот и все!
Если вы уверены что все сделали правильно, запускайте
recompile.bat, проверяйте на наличие ошибок (если есть, отписывайте с вопросами сюда), после чего включайте
startclient.bat и наслаждайтесь вашим творением!
3. Создание предмета После строки(В файле мода): Code
public static Block newblock = new BlockNew(110, 0).setHardness(0.5F).setResistance(1.0F).setBlockName("newblock");
Добавим строку с кодом: Code
public static final Item GJavaItem = new GJava(3000).setItemName("GJava");
Разберем.
Вызываем предмет по техническому названию.
Название для будущего GJava.java.
ID предмета.
Объявляем предмет и даем ему полу-игровое имя.
После строки(в файле мода): Code
newblock.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/textures/java.png");
Записываем следующее: Code
ModLoader.AddName(GJava, "GJava");
Разберём(немного).
Задаем название в предмета игре.
Ждём продолжения!