И так почитав пару статей решила поделиться с вами, и будем по шагам обучаться вместе писать моды, создавать предметы, ивэнты, нпс и тп... Если что то не так то поправьте, камнями не кидайте.
Глава 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. Почему именно ваш предмет или блок должны добавить на сервер.
Ответов: 123
Eternity
Inactive |
|||
карма: 18 |
| ||
Голосовали: | admin, HolloW_w, Analcunt, harder_faster, Quazar, Marts, Nikolthor, GAJIOGEN4, player$21304, Prolbo, Loshadin, yakov518, player$40177, disbelief, -SoNNeikO-, TeeMage15, Dior |