Для этого нам понадобятся:
1. (1.7.2-Recommended, скачивать SRC);
4.
Туториалы:
Глава 0 - Установка Eclipse, FML, Gradlew
Скрытый текст
Давайте сначала скачаем и установим Eclipse - среду программированию для Java. Переходя по ссылке мы скачиваем Eclipse Standard 4.3.2 под разрядность вашей системы 64-bit или 32-bit.
После скачивания распаковываем куда нибудь, но пока не запускаем.
==============
С новой версии в установке исходников FML всё поменялось, поэтому разберём их установку поподробнее.
Архив с исходниками FML распаковываем в любую удобную для вас папку, все текстовые файлы можно удалить.
Теперь самое трудное. Нажимаем Пуск -> Выполнить -> В строку вписываем "cmd", у нас открывается командная строка, далее пишем cd и путь до нашей папки с исходниками FML. Например: У меня на рабочем столе находится папка с названием MCModding, значит мне нужно написать в командную строку "cd C:\Documents and Settings\User\Desktop\MinecraftingRU". Если всё пройдет хорошо, то в командной строке напишет путь до вашей папки. Далее надо написать в командную строку вот такой код:
Запускаем Eclipse и указываем путь до папки eclipse в папке и исходниками, нажимаем ОК. Далее для того что бы проверить всё ли корректно работает можно запустить Minecraft нажав вверху на зелёную стрелочку, у Вас запуститься Minecraft версии 1.7.2 с установленным FML в котором мы и будем писать моды.
После скачивания распаковываем куда нибудь, но пока не запускаем.
==============
С новой версии в установке исходников FML всё поменялось, поэтому разберём их установку поподробнее.
Архив с исходниками FML распаковываем в любую удобную для вас папку, все текстовые файлы можно удалить.
Теперь самое трудное. Нажимаем Пуск -> Выполнить -> В строку вписываем "cmd", у нас открывается командная строка, далее пишем cd и путь до нашей папки с исходниками FML. Например: У меня на рабочем столе находится папка с названием MCModding, значит мне нужно написать в командную строку "cd C:\Documents and Settings\User\Desktop\MinecraftingRU". Если всё пройдет хорошо, то в командной строке напишет путь до вашей папки. Далее надо написать в командную строку вот такой код:
gradlew setupDecompWorkspaceДанный код запустит процесс скачивания и установки исходников FML и Gradlew. На слабых компьютерах (как у меня) данный процесс может занять около 15 минут. Затем снова пишем в консоль вот такой код:
gradlew eclipseТеперь он скачает все нужные библиотеки для эклипса, и можно будет закрывать командную строку.
Запускаем Eclipse и указываем путь до папки eclipse в папке и исходниками, нажимаем ОК. Далее для того что бы проверить всё ли корректно работает можно запустить Minecraft нажав вверху на зелёную стрелочку, у Вас запуститься Minecraft версии 1.7.2 с установленным FML в котором мы и будем писать моды.
Глава 1 - Наш первый блок
Скрытый текст
Ну вот, когда мы удостоверились что всё работает - давайте приступим к моддингу! Для начала, мы видим что у нас в левом столбце выдаёт ошибку, для того что бы её исправить нажимаем Minecraft -> src/java/main -> com.example.examplemod -> И открываем класс ExampleMod.java. В нём удаляем всё что написано в скобках public void init(FMLInitializationEvent event), у вас должно получиться так:
Первым делом нажимаем на Minecraft правой кнопкой мыши и выбираем New -> Source Folder, и называем src/и тут название вашего мода, например src/testmod. Теперь нажимаем на наш Source Folder src/testmod ПКМ и выбираем New -> Package и называем его net.testmod.stuff, затем нажимаем на наш пакет и так же выбираем New -> Class и называем его как нибудь, я предпочитаю называть главный класс файла ModCore, ну а вы как хотите.
Затем удаляем из этого класса всё и вставляем вот такой код:
Давайте разберём что и что обозначает:
Когда мы настроили наш главный класс, можно приступать к добавлению блока.
Первым делом отступаем две строчки от того где мы указывали версию мода и пишем:
Далее в
После того как вы добавили этот код Вы видите что у Вас подчёркивает красным цветом надпись RubyOre, поэтому наводим на неё стрелку и выбираем Create Class "RubyOre" и в данный класс пишем вот такой код:
Ну вот и всё, сохраняем наш прогресс нажатием дискеты вверху, и можно запускать Minecraft и искать наш блок во вкладке Block креатива. В следующих частях я расскажу как добавить нормальное название и текстуру блоку.
package com[paste][/paste]example[paste][/paste]examplemod;import net[paste][/paste]minecraft[paste][/paste]init[paste][/paste]Blocks;import cpw[paste][/paste]mods[paste][/paste]fml[paste][/paste]common[paste][/paste]Mod;import cpw[paste][/paste]mods[paste][/paste]fml[paste][/paste]common[paste][/paste]Mod[paste][/paste]EventHandler;import cpw[paste][/paste]mods[paste][/paste]fml[paste][/paste]common[paste][/paste]event[paste][/paste]FMLInitializationEvent;@Mod(modid = ExampleMod[paste][/paste]MODID, version = ExampleMod[paste][/paste]VERSION)public class ExampleMod{ public static final String MODID = "examplemod"; public static final String VERSION = "1[paste][/paste]0"; @EventHandler public void init(FMLInitializationEvent event) { }}Теперь можно приступать к созданию нашего мода.
Первым делом нажимаем на Minecraft правой кнопкой мыши и выбираем New -> Source Folder, и называем src/и тут название вашего мода, например src/testmod. Теперь нажимаем на наш Source Folder src/testmod ПКМ и выбираем New -> Package и называем его net.testmod.stuff, затем нажимаем на наш пакет и так же выбираем New -> Class и называем его как нибудь, я предпочитаю называть главный класс файла ModCore, ну а вы как хотите.
Затем удаляем из этого класса всё и вставляем вот такой код:
package net[paste][/paste]testmod[paste][/paste]stuff;import net[paste][/paste]minecraft[paste][/paste]block[paste][/paste]Block;import net[paste][/paste]minecraft[paste][/paste]creativetab[paste][/paste]CreativeTabs;import net[paste][/paste]minecraft[paste][/paste]init[paste][/paste]Blocks;import net[paste][/paste]minecraft[paste][/paste]init[paste][/paste]Items;import net[paste][/paste]minecraft[paste][/paste]item[paste][/paste]Item;import net[paste][/paste]minecraft[paste][/paste]item[paste][/paste]ItemStack;import cpw[paste][/paste]mods[paste][/paste]fml[paste][/paste]common[paste][/paste]Mod;import cpw[paste][/paste]mods[paste][/paste]fml[paste][/paste]common[paste][/paste]Mod[paste][/paste]EventHandler;import cpw[paste][/paste]mods[paste][/paste]fml[paste][/paste]common[paste][/paste]event[paste][/paste]FMLInitializationEvent;import cpw[paste][/paste]mods[paste][/paste]fml[paste][/paste]common[paste][/paste]event[paste][/paste]FMLPreInitializationEvent;import cpw[paste][/paste]mods[paste][/paste]fml[paste][/paste]common[paste][/paste]registry[paste][/paste]GameRegistry;@Mod(modid = ModCore[paste][/paste]MODID, version = ModCore[paste][/paste]VERSION, name = ModCore[paste][/paste]NAME)public class ModCore{ public static final String MODID = "testmod"; public static final String NAME = "Test Mod"; public static final String VERSION = "1[paste][/paste]0"; }; @EventHandler public void preinit(FMLPreInitializationEvent event) { } @EventHandler public void init(FMLInitializationEvent event) { }}
Давайте разберём что и что обозначает:
package net[paste][/paste]testmod[paste][/paste]stuffЭто название нашего пакета.
public class ModCoreЭто название нашего главного класса, в моём случае ModCore.
@Mod(modid = ModCore[paste][/paste]MODID, version = ModCore[paste][/paste]VERSION, name = ModCore[paste][/paste]NAME)public class ModCore{ public static final String MODID = "testmod"; public static final String NAME = "Test Mod"; public static final String VERSION = "1[paste][/paste]0"; };Тут мы указываем ID нашего мода, его название и версию соответственно.
Когда мы настроили наш главный класс, можно приступать к добавлению блока.
Первым делом отступаем две строчки от того где мы указывали версию мода и пишем:
public static Block blockRubyOre;Мы добавили public static для нашего блока, blockRubyOre (Моя прекрасная фантазия).
Далее в
@EventHandler public void preinit(FMLPreInitializationEvent event) { }Пишем такой код:
blockRubyOre = new RubyOre()[paste][/paste]setBlockName("blockRubyOre")[paste][/paste]setCreativeTab(CreativeTabs[paste][/paste]tabBlock)[paste][/paste]setBlockTextureName(MODID + ":" + "blockRubyOre");GameRegistry[paste][/paste]registerBlock(blockRubyOre, "blockRubyOre");blockRubyOre - указывает на то что это наш блок который мы регистрировали выше, RubyOre - указывает к какому классу относится наш блок.
[paste][/paste]setCreativeTab(CreativeTabs[paste][/paste]tabBlock)Указывает в какой вкладке креатива будет он располагаться, в нашем случае во вкладке Block.
[paste][/paste]setBlockTextureName(MODID + ":" + "blockRubyOre")Тут указанна наше текстура для блока, но добавление текстур мы разберём чуть позже.
После того как вы добавили этот код Вы видите что у Вас подчёркивает красным цветом надпись RubyOre, поэтому наводим на неё стрелку и выбираем Create Class "RubyOre" и в данный класс пишем вот такой код:
package net[paste][/paste]testmod[paste][/paste]stuff;import net[paste][/paste]minecraft[paste][/paste]block[paste][/paste]Block;import net[paste][/paste]minecraft[paste][/paste]block[paste][/paste]material[paste][/paste]Material;public class RubyOre extends Block { public RubyOre() { super(Material[paste][/paste]stone); this[paste][/paste]setHardness(2F); }}
super(Material[paste][/paste]stone);Обозначает что наш блок будет как камень, и будет ломаться киркой.
this[paste][/paste]setHardness(2F);Обозначает его прочность, !!!но не взрывоустойчивость!!!, 2F это чуть больше чем у обычного камня.
Ну вот и всё, сохраняем наш прогресс нажатием дискеты вверху, и можно запускать Minecraft и искать наш блок во вкладке Block креатива. В следующих частях я расскажу как добавить нормальное название и текстуру блоку.
Глава 2 - Предмет
Скрытый текст
В этой главе я покажу как создать свой предмет. Приступим.
Отступаем две строки от того где мы регистрировали public static для блока и регистрируем такой же для предмета:
В
Отступаем две строки от того где мы регистрировали public static для блока и регистрируем такой же для предмета:
public static Item itemRuby;Думаю тут всё понятно.
В
@EventHandler public void preinit(FMLPreInitializationEvent event) { }Пишем такой код для предмета:
itemRuby = new Item()[paste][/paste]setUnlocalizedName("itemRuby")[paste][/paste]setCreativeTab(CreativeTabs[paste][/paste]tabMisc)[paste][/paste]setTextureName(MODID + ":" + "itemRuby");GameRegistry[paste][/paste]registerItem(itemRuby, "itemRuby");Тут всё так же как и у блока, только не требуется создание отдельного класса для итема, ну вот и всё, мы добавили предмет, в следующей части я покажу как добавить текстуры и нормальные названия.
Глава 3 - Текстуры
Скрытый текст
В этой главе я покажу как добавить текстуры для блока и предмета. Приступим.
Заходим в нашу папку с исходниками заходим в src -> testmod -> создаём папочку assets -> создаём папку testmod -> далее создаём папку textures, а в ней создаём две папки - blocks и items.
В папку items мы будем закидывать текстуры для предметов, а blocks собственно для блоков. Например для нашего предмета название текстуры должно быть itemRuby в формате png, а для блока blockRubyOre тоже в формате png. Размеры текстур могут быть 16*16, 32*32, 64*64, 128*128 и так далее. Ну вот и всё, в следующем уроке я покажу как добавить файл локализации.
Заходим в нашу папку с исходниками заходим в src -> testmod -> создаём папочку assets -> создаём папку testmod -> далее создаём папку textures, а в ней создаём две папки - blocks и items.
В папку items мы будем закидывать текстуры для предметов, а blocks собственно для блоков. Например для нашего предмета название текстуры должно быть itemRuby в формате png, а для блока blockRubyOre тоже в формате png. Размеры текстур могут быть 16*16, 32*32, 64*64, 128*128 и так далее. Ну вот и всё, в следующем уроке я покажу как добавить файл локализации.
Глава 4 - Локализация
Скрытый текст
В этой главе я покажу как добавить файлы локализации. Приступим.
Заходим в нашу папку с исходниками заходим в src -> testmod -> assets -> testmod -> далее создаём папку lang, а в ней создаём три текстовых документа в разрешении .lang, en_UK.lang, en_US.lang и ru_RU.lang.
Сразу оговорюсь что в en_UK и en_US должно быть всё абсолютно одинаково, так как они оба отвечают за английский язык, ну а ru_RU как вы уже поняли за русский. Вот примеры этих файлов для локализации наших предметов и блоков, другие предметы и блоки добавлять так же как и эти:
en_UK.lang/en_US.lang
Заходим в нашу папку с исходниками заходим в src -> testmod -> assets -> testmod -> далее создаём папку lang, а в ней создаём три текстовых документа в разрешении .lang, en_UK.lang, en_US.lang и ru_RU.lang.
Сразу оговорюсь что в en_UK и en_US должно быть всё абсолютно одинаково, так как они оба отвечают за английский язык, ну а ru_RU как вы уже поняли за русский. Вот примеры этих файлов для локализации наших предметов и блоков, другие предметы и блоки добавлять так же как и эти:
en_UK.lang/en_US.lang
//Blocktile[paste][/paste]blockRubyOre[paste][/paste]name=Ruby Ore//Itemsitem[paste][/paste]itemRuby[paste][/paste]name=RubyА вот пример для русского файла локализации ru_RU.lang:
//Blocktile[paste][/paste]blockRubyOre[paste][/paste]name=Рубиновая Руда//Itemsitem[paste][/paste]itemRuby[paste][/paste]name=РубинНу вот и всё, в следующей части я расскажу как добавить вкладку в креативе.
Глава 5 - Вкладка в креативе
Скрытый текст
В этой главе я покажу как добавить свою вкладку в креативе. Приступим.
Добавить вкладку очень легко, нужно всего лишь отступить 2 строки вниз от того места где мы регистрировали public static нашего предмета, и написать вот такой код:
Заходим в наши .lang файлы и дописываем вот такой код для en_US.lang и eu_UK.lang:
Добавить вкладку очень легко, нужно всего лишь отступить 2 строки вниз от того места где мы регистрировали public static нашего предмета, и написать вот такой код:
public static CreativeTabs RubyTab = new CreativeTabs("RubyTab"){ public Item getTabIconItem() { return ModCore[paste][/paste]itemRuby; } };Давайте разберём:
public static CreativeTabs RubyTab = new CreativeTabs("RubyTab"){Тут мы создаём новую вкладку, и указываем её название в коде, но не в игре, как добавить название в игре, я напишу чуть ниже.
public Item getTabIconItem() { return ModCore[paste][/paste]itemRuby;Тут мы указываем что иконкой нашей вкладки будет наш предмет itemRuby, это всё что нужно для создания вкладки, а теперь как добавить ей название в игре.
Заходим в наши .lang файлы и дописываем вот такой код для en_US.lang и eu_UK.lang:
//CreativeitemGroup[paste][/paste]RubyTab=Ruby TabНу а для нашего русского .lang файла вот такой код:
//CreativeitemGroup[paste][/paste]RubyTab=Рубиновая вкладкаНу вот и всё, мы создали нашу вкладку и добавили ей нормальное имя. В следующем уроке я покажу Вам как добавить рецепт крафта и печи.
Видеоуроки:
Скрытый текст
Глава 0 - Установка Eclipse, FML, Gradlew