Глава 1. Подготовка рабочего места и настройка MCP.
Выкидываем все постороние вещи в окно, все кто может нам помешать закрываем в туалете, тазик берем с собой.
А теперь серьезно.
Инструменты которые нам понадобятся (качаем):
1. Java Development Kit 6 (JDK 6).
2. Minecraft Coder Pack (MCP 4.3, качаем под нашу версию сервера Minecraft Server Beta 1.7.3).
3. Notepad++ Это будет один из главных наших редакторов.
4. ModLoader + Клиент (качать обязательно).
Установка:
1. Создаем папку в любом удобном для вас месте.
2. Копируем файлы архива MCP в эту папку.
3. Прописываем путь к javac.exe (JDK) в системной переменной PATH.
Щелкните правой кнопкой мыши по ярлыку Мой компьютер и выберите категорию Дополнительно. Там же ниже будет кнопка Переменные среды.
В системных переменных найдите переменную Path (PATH) и допишите в ней строки:
;C:\Program Files (x86)\Java\jdk1.6.0_26\bin
Win 7
Без пробела и с символом "точка с запятой". Путь укажите, конечно же, по вашему усмотрению системы.
4. Кладем из спец. сборки (Cleaned Minecraft + ML (Cleaned Minecraft + ML\.minecraft)) папки bin и resources в папку jars ((mcp43) mcp43\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 находится весь декомпилированный код игры.
Для начала давайте создадим новый файлик посредством нотепада. Называться он будет mod_gcc.java.
Он служит для складывания всей информации о блоках, рецептах, etc.
Впишем такую строчку (используйте Notepad++)
package net.minecraft.src;
Она включает магию которая даст возможность данному файлику работать с Кубокрафтом.
После чего добавим еще две строчечки, но сначала делаем пробел.
public class mod_gcc extends BaseMod
{
Здесь мы создаем класс.
Пишем в 5 строке вот такие словечки про наш кубик, тут мы его регистрируем.
public static Block newblock = new BlockNew(101, 0).setHardness(0.5F).setResistance(1.0F).setBlockName("newblock");
Давайте попробуем разобрать данную неразбериху:
public static Block newblock - newblock - это название, точнее регистр блока (не путайте с обычным названием, или консоль ошибок покарает вас!).
new BlockNew(101, 0) - Ну а вот тут у нас как раз и обычное название. Будет использоваться для обозначения в отдельном файлике для блока (доп. характеристики).
Число 101 - айди блока. Используйте с 101 по 250.
Число 0 - не трогайте, это индексация текстуры по terrain.png, оно вообще не понадобится. Пусть стоит в фазе нуля.
setHardness(0.5F) - Тут у нас крепкость указана. На сколько силен блок, так сказать Нотч Вполне реально хватит и 0.5F если это блок похожий на землю (по скорости разрушения).
setResistance(0.3F) - Устойчивость от взрыва. 0.3F отлично вписывается.
setLightValue(1.0F) - Если хотите чтобы ваш блок был светящимся (для дополнительных команд вызова я выведу чуть позже целый спойлер Нотч ), просто укажите это через точку.
1.0F - светится как австралий.
setBlockName("newblock") - Сделан специально чтобы полностью до конца объявить регистр.
Проверим что у нас вышло
Теперь давайте создадим специальный файлик BlockNew.java (по названию блока) который определит наш кубик в игре.
Вписываем в первую строчку магические буковки, опять.
package net.minecraft.src;
Затем импортируем еще одну магию которая даст нам возможность использовать переменную Random.
import java.util.Random;
Потом создаем публичный класс (не забудьте название).
public class BlockNew extends Block
{
После чего копипастим вот это. Тут у нас получается что мы объявляем блок, делаем его настоящим (материальным) и задаем свойство (каждое свойство имеет ряд своих особенностей, типа звуков и т.п).
public BlockNew(int i, int j)
{
super(i, j, Material.rock);
}
Дальше объявляем выбрасывание и его ID.
public int idDropped(int i, int j)
{
return mod_gcc.newblock.blockID;
}
public int quantityDropped(Random random)
{
return 1;
}
}
Проверяем...
Если все так же - переходим к следующей главе.
Глава 2.1. Рецепт для блока или как добыть кубик.
Добавим четыре строчки для определения версии вашего мода в файл mod_gcc.java.
public String Version()
{
return "1.7_03";
}
Ну а теперь перейдем непосредственно к написанию рецепта.
Запишем вот это:
public mod_gcc()
{
И начнем творить.
Регистрируем блок строкой:
ModLoader.RegisterBlock(newblock);
Добавляем название блока в игре.
ModLoader.AddName(newblock, "GCC");
И делаем сам рецептик.
ModLoader.AddRecipe(new ItemStack(newblock, 1), new Object[]{ "##", "##", Character.valueOf('#'), Block.dirt});
Разберем?
(new ItemStack(newblock, 1) - При крафте появляется newblock в количестве 1 (изменяйте как душе угодно до 64).
new Object[]{ "##", "##", Character.valueOf('#'), Block.dirt - Тут очень сложно объяснить для детей, взрослые может быть и поймут, но я все же попробую. Одна решетка обозначает одну ячейку сверху вниз (это может быть и верстак, если решеток более 3 в одной строке). Т.е. в нашем случае мы заполняем обычной землей (Block.dirt) все крафт-ячейки в инвентаре (их 4).
Для примера, если например ваш объект крафтится не только из земли, да еще и в верстаке, поступать нужно так.
new Object[]{ "#X#", "#Z#", "#X#", Character.valueOf('X'), Block.dirt, Character.valueOf('Z'), Block.sand
В данном примере мы ставим землю по середине в верхней строке, ставим песок по середке в средней строке, и опять землю по середине, но только в третьей строке.
Если какой-то символ (в нашем случае решетка) не указана в Character.valueOf - то значит дефолтно ячейки должны быть пусты.
Проверяем.
Вот и все. Теперь ваш блок можно спокойно скрафтить.
Но мы забыли добавить текстуру, о нет! Об этом читайте в следующей главе.
Глава 2.2. Присваиваем текстуру.
Эта глава очень короткая и легкая, но все же я выделила ей особое место.
Берем вот такую текстуру:
(размеры не изменять!)
И временно кидаем ее в папку jars/bin.
Заходим в папку bin, находим minecraft.jar, открываем ее посредством WinRar или 7-zip и создаем там папочку textures.
И в эту папочку кидаем нашу текстуру java.png.
Теперь открываем mod_gcc.java и добавляем строчки рядом с рецептом.
newblock.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/textures/java.png");
Разбираем:
newblock.blockIndexInTexture - Сразу предупреждаю, не забывайте изменять название регистра здесь (у меня частенько бывает такое).
ModLoader.addOverride("/terrain.png" - Не знаю зачем оно, но вроде индексирует размеры блоков внутри terrain.png. Оставляем как есть.
"/textures/java.png" - Ну а тут, непосредственно, указывается путь к текстуре. В нашем случае это java.png в папке textures.
Вот и все!
Проверяем.
Если вы уверены что все сделали правильно, запускайте recompile.bat, проверяйте на наличие ошибок, после чего включайте startclient.bat и наслаждайтесь вашим творением!
Глава 3. Создание предмета.
Для начала добавим одну строчку в mod_gcc.java после строки нашего блока: public static Block newblock = new BlockNew(101, 0).setHardness(0.5F).setResistance(1.0F).setBlockName("newblock");
public static final Item smileItem = new Smile(2000).setItemName("smileItem");
Разберем код предмета:
Item smileItem - Вызываем предмет по тех. названию.
new Smile - Название для будущего Smile.java
(2000) - ID предмета.
setItemName("smileItem") - Объявляем предмет, даем ему тех. название для идентификации.
Делаем отступ на одну строку от строки: newblock.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/textures/java.png");
И записываем следующее.
ModLoader.AddName(smileItem, "Smile");
Разбор:
(smileItem, "Smile") - Даем название в самой игре.
И последняя строка рецепта.
ModLoader.AddRecipe(new ItemStack(smileItem, 5), new Object[]{ "X#", "#X", Character.valueOf('X'), Block.dirt});
Разбераем:
(smileItem, 5) - Число получаемых "смайлов" после крафтинга.
"X#", "#X" Character.valueOf('X'), Block.dirt - Сам рецепт. По диагонали ставим грязь - получаем смайл.
Теперь нам нужно создать файлик Smile.java.
В первой строке как обычно:
package net.minecraft.src;
В третьей и четвертой:
public class Smile extends Item
{
А далее:
public Smile(int i) {
super(i);
maxStackSize = 64;
}
}
maxStackSize = 64; - Максимальное количество предмета в одном стаке (нап. 64).
Проверяем.
Глава 3.1. Присвоение текстуры.
Возьмем текстуру смайлика
(размеры не изменять!)
И поместим ее в minecraft.jar/textures как обычно.
Пишем выше ModLoader.AddName(smileItem, "Smile"); в файле mod_gcc.java
smileItem.iconIndex = ModLoader.addOverride("/gui/items.png", "/textures/smile.png");
Разбераем:
smileItem.iconIndex - Определяет, чья иконка (текстура).
ModLoader.addOverride("/gui/items.png", "/textures/smile.png") - Это вам уже знакомо. Тут промолчу.
Проверяем.
Теперь вам осталось просто запустить recompile.bat и опробовать смайлы
З.Ы. Можете уже начинать создавать красивые вещи и кубики... а так же выкладывать их с кодом скрином и тп. по типу.
1. Скрин
2. Название блока или предмета
3. Рецепт крафта
4. Исходные коды вашего чуда
5. Почему именно ваш предмет или блок должны добавить на сервер.
Достижения
Биржа 



Поиск
Твинки
Друзья
Администрация