В этой статье описывается процесс создания модификаций для Minecraft с использованием Forge и Eclipse. Не нужно быть профессионалом, чтобы создавать простые модификации, но хотя бы посредственное понимание принципов работы языка программирования Java желательно. Если во время создания модификаций возникнут вопросы или проблемы, не описанные здесь, опишите их на странице обсуждения.
Таблица готовности | ||
---|---|---|
Урок | 1.6+ | 1.7+ |
Блок | Готов | Готов |
Предмет | Готов | Готов |
Крафт | Готов | Готов |
Компиляция | Готов | Готов |
Генерация | Не планируется | Готов |
Прокси и инстанция | Не планируется | Готов |
Моб | Не планируется | Готов |
Блоки с моделью | Не планируется | Возможно |
Доп. Уроки | Всего: 2 | Всего: 12 |
Первые шаги
Давайте для начала сделаем самое главное: установим Java и Eclipse. Вне зависимости от версии Minecraft, для которой вы хотите создать модификацию, эти шаги одинаковы.
Java JDK
Самое важное для написания на языке Java чего-либо - это, естественно, сами библиотеки Java.
Скачать их можно на сайте Oracle. Переходим на эту страницу и нажимаем слева на иконку Java. Открывшуюся страницу чуть-чуть проматываем вниз, выбираем, что согласны с лицензионным соглашением (Accept License Agreement), и выбираем внизу первого списка пункт, соответствующий вашей операционной системе, и скачиваем. После скачивания просто устанавливаем, нажимая Далее. После установки нужно занести путь установки в переменные среды Windows. Для этого зайдите в меню Свойства компьютера (⊞ Win + PauseBreak или Мой Компьютер -> Свойства -> Дополнительные параметры системы -> Переменные среды). Найдите системную переменную Path, выделите и нажмите Изменить. В самом конце строки Значение через точку с запятой допишите путь к JDK/bin, например, C:\Program Files\Java\jdk1.7.0_45\bin . После чего три раза нажмите ОК.
Не надо удалять META-INF, в minecraft.jar, и minecraft_server.jar
1. Создаем папку (Например: MCP Forge) и распаковываем туда содержание архива с MCP.
2. Копируем в папку../MCP Forge/jars/ , из клиента папку bin и resources, из сервера нам потребуется только minecraft_server.jar.
3. Распаковываем архив с Forge-src в папку MCP Forge
4. Открываем папку../MCP Forge/forge/ и запускаем файл install.cmd. Ждем окончания декомпиляции..
(P.S Если хотите что бы у вас уже был готовый MCP с Forge, например если вы случайно удалили его или ещё что-то, то: Когда декомпиляция пройдёт запустите игру пусть скачает lib, и потом добавьте в архив этот MCP Forge например так (mcp Forge 1.5.1)
5. "Устанавливаем" и запускаем Eclipse, во время запуска у вас "спросят" папку с проектом, указываем путь: ../MCP Forge/eclipse/
6. Итак, мы открыли проект, теперь (Обычно слева, есть Package explorer) смотрим, какую библиотеку он "ест"(В окне Package explorer, "открываем проект Minecraft" и если будет строка "JRE System Library ", то все нормально, но если строка "JRE System Library ", то нажимаем ПКМ(Правой кнопкой мыши), выбираем пункт Properties, далее открылось окно в нем пункт Execution environment, выбираем в нем JavaSE-1.7 и нажимаем Ok.
7. Итак, приготовления готовы.
Как же все таки начать писать мод?
Для начала, нам нужно создать "основу", то есть основную "папку" в которой будет храниться наша "основа" и все остальное.
1.Заходим в Eclipse видим в Package Explorer папку Minecraft, открываем, и нажимаем ПКМ на папку src, выбираем New->Package. Открытом окне в строке Name, мы указываем название папки в которой будет все храниться (Для примера возьмем: mods.testmod.src) и нажимаем Ok.
2. Нажимаем ПКМ по нашей папке (mods.testmod.src), далее New -> Class. В строке Name указываем название нашего файла (Например: TestModBase) и нажимаем Finish.
3. Меняйте путь, но не уберайте mods, вот так например mods.NewItemMod.src.
4. В новых версиях надо импортировать "Очень много" всего, чтобы сделать это быстрее в Эклипсе нажимайте "ctrl + shift + o", и вам быстро он всё импортирует, а если появиться окно тогда выбирайте нужный вам импорт.
5. Если вы работаете не в эклипсе, тогда вам будет намного труднее, так что лучше перейти на него, он укажет где ошибка, и какие импорты надо, и вы не будете задавать глупых вопросов в комментариях.
package mods.testmod.src;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.common.network.NetworkMod.SidedPacketHandler;
import cpw.mods.fml.common.SidedProxy;
@Mod (modid = "TestMod", name = "Test Mod", version = "0.0.1")
@NetworkMod (clientSideRequired = true, serverSideRequired = false, versionBounds = "1.0.0")
public class TestModBase {
@Instance("TestModID")
public static TestModBase instance;
@Init
{
}
@PreInit
public void preLoad(FMLPreInitializationEvent event)
{
}
@PostInit
public void postLoad(FMLPostInitializationEvent event)
{
}
}
В нашем файле TestModBase
После надписи:
public class TestModBase {
Вписываем вот такую строку:
public static final Block testBlock = new TestBlock(2020).setUnlocalizedName("testBlock");
Разбор:
public static final Block "testBlock" - testBlock название нашего блока в коде(не в игре)
new TestBlock(2020) - TestBlock название нашего блока в коде(не в игре), 2020 ID блока
setUnlocalizedName("testBlock") - ("testBlock") название нашего блока в коде(не в игре)
После надписи:
@Init
public void load(FMLInitializationEvent event)
{
Вписываем вот такую строку:
GameRegistry.registerBlock(testBlock);
LanguageRegistry.addName(testBlock, "Test Block");
Разбор:
(testBlock) - название нашего блока в коде(не в игре)
(testBlock, "Test Block") - testBlock название нашего блока в коде(не в игре), "Test Block" название нашего блока в игре.
Создаем файл testBlock и вписываем в него такой код:
package mods.testmod.src;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
public class TestBlock extends Block {
public TestBlock(int par1)
{
super(par1, Material.ground);//Материал
this.setCreativeTab(CreativeTabs.tabTools);//Добавляем в креатив
}
//Регистрируем текстуру
@Override
{
}
}
В нашем файле TestModBase
После надписи:
public class TestModBase {
Вписываем вот такую строку:
public static Item testItem = new TestItem(2021).setUnlocalizedName("testItem");
Разбор:
public static final Item "testItem" - testItem название нашего предмета в коде(не в игре)
new TestItem(2021) - TestItem название нашего предмета в коде(не в игре), 2021 ID предмета
setUnlocalizedName("testItem") - ("testItem") название нашего предмета в коде(не в игре)
После надписи:
@Init
public void load(FMLInitializationEvent event)
{
Вписываем вот такую строку:
LanguageRegistry.addName(testItem, "Test Item");
Разбор:
(testItem, "Test Item") - testItem название нашего предмета в коде(не в игре), "Test Item" название нашего предмета в игре.
Создаем файл testItem и вписываем в него такой код:
package mods.testmod.src;
import net.minecraft.item.Item;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
public class TestItem extends Item
{
public TestItem(int par1)
{
super(par1);
setCreativeTab(CreativeTabs.tabTools);
}
//Регистрация текстуры для итема немного отличается от блока
@Override
public void registerIcons(IconRegister par1IconRegister)
{
}
}
@Override
public void registerIcons(IconRegister par1IconRegister)
{
this.blockIcon = par1IconRegister.registerIcon("testmod:testBlock");
}
("testmod:testBlock"), testmod - это "имя папки", в которой будет "папка с текстурой", testBlock - название нашей текстуры. Вот такое у нас размещение текстуры:
\Tutorial Forge 1.5.1\mcp744\src\minecraft\mods\testmod\textures\blocks\testBlock.png
@Override
public void registerIcons(IconRegister par1IconRegister)
{
this.itemIcon = par1IconRegister.registerIcon("testmod:testItem");
}
("testmod:testItem"), testmod - это "имя папки", в которой будет "папка с текстурой", testItem - название нашей текстуры. Вот такое у нас размещение текстуры.
Сегодня мы начинаем цикл статей для новичков, призванный помочь освоить моддинг Minecraft, а главное, сделать это максимально быстро и полезно. В принципе, каждый из нас может найти уроки и начать создавать моды, ведь методом тыка можно сделать практически все, что угодно, пусть и не совсем правильно и красиво. Данный туториал убережет вас от наступания на грабли и поможет стартовать максимально быстро и удобно.
Введение в моддинг Minecraft
Следует отметить, что моды Minecraft пишутся на Java. Никаких удобненьких редакторов здесь не будет. От вас требуется хотя бы минимальное знание Java, либо опыт работы с другими языками программирования, знание их основ. На крайний случай – большое желание научиться всему этому. Если вы не будете тупо копировать примеры, а постараетесь понять, как оно работает, то вас определенно ждет успех.
Практически каждый человек, хоть раз устанавливавший моды Minecraft знаком с модификацией Forge, ведь большинство модов требуют ее наличия в вашей игре. В рамках данной статьи мы будем создавать моды именно под Forge.
Почему Forge? Представьте, что вам нужно починить телевизор/компьютер/айфон/большой адронный коллайдер (нужное подчеркнуть), но под рукой у вас только молоток и гвозди. Конечно же мы пойдем и достанем пыльный ящичек с инструментами, в котором есть и пассатижи, и пинцет, да и вообще все, что душа пожелает. В нашем случае, Forge – это и есть тот желанный ящик с инструментами.
Приступим к работе
Для начала нам нужно скачать JDK (Java Development Kit)
Статья является эксклюзивной для сайт. Копирование и перепечатка информации возможна только с письменного согласия автора.