Сьогодні ми починаємо цикл статей для новачків, покликаний допомогти освоїти моддинг Minecraft, а головне зробити це максимально швидко і корисно. В принципі, кожен з нас може знайти уроки і почати створювати моди, адже методом тику можна зробити практично все, що завгодно, нехай і не правильно і красиво. Даний туторіал убереже вас від наступу на граблі та допоможе стартувати максимально швидко та зручно.
Варто зазначити, що моди Minecraftпишуться Java. Жодних зручненьких редакторів тут не буде. Від вас потрібно хоча б мінімальне знання Java, або досвід роботи з іншими мовами програмування, знання їх основ. На крайній випадок – велике бажання навчитися всього цього. Якщо ви не тупо копіюватимете приклади, а постараєтеся зрозуміти, як воно працює, то напевно чекає успіх.
Практично кожна людина, яка хоч раз встановлювала моди Minecraft, знайома з модифікацією Forge, адже більшість модів вимагають її наявності у вашій грі. У рамках цієї статті ми створюватимемо моди саме під Forge.
Чому Forge? Уявіть, що вам потрібно відремонтувати телевізор/комп'ютер/айфон/великий адронний колайдер (потрібне підкреслити), але під рукою у вас тільки молоток і цвяхи. Звичайно ж ми підемо і дістанемо запилену скриньку з інструментами, в якій є і пасатижі, і пінцет, та й взагалі все, що душа забажає. У нашому випадку, Forge – це і є та бажана скринька з інструментами.
Для початку нам потрібно завантажити JDK (Java Development Kit)
Стаття є ексклюзивною для сайту. Копіювання та передрук інформації можливе лише за письмовою згодою автора.
Не треба видаляти 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 = новий TestBlock(2020).setUnlocalizedName("testBlock");
Розбір:
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 - назва нашої текстури. Ось таке розміщення текстури.
Отже, ми маємо папку з наступними файлами всередині:
Тепер необхідно виконати команду gradlew eclipse. Якщо у вас Windows, то ви можете клацнути правою кнопкою по порожньому простору всерединіцієї папки із затиснутою клавішею Shift. Тоді, в контекстному меню буде пункт "Відкрити вікно команд". Виберіть цей пункт і відкриється консоль.
У консолі введіть gradlew eclipse .
Відкрийте Eclipse. Немає особливої різниці, де розташовується робочий простір. У верхній частині екрана відкрийте меню "File" і виберіть пункт "Import". У списку виберіть "Gradle > Gradle Project".
Пропустіть вступне вікно Gradle, натиснувши кнопку "Next >", якщо воно з'явиться.
У наступному вікні вкажіть папку з розпакованими файлами. Натисніть "Finish".
Відкрийте меню "Window" у верхній частині екрана та виберіть "Show View > Other…".
У вікні виберіть "Gradle > Gradle Tasks".
У вас відкриється вікно із Gradle завданнями. Gradle – популярна система автоматичного збирання, яка з вихідників збирає готові програми та робить ще багато інших необхідних, але рутиннихсправ. Ці справи називаються завданнями/завданнями/тасками - tasks. Ми якраз і відчинили вікно тяган.
Виглядає воно приблизно так:
Для тестового запуску у верхній частині екрана відкрийте меню Run і виберіть Run configurations. У вікні зліва відкрийте вкладку "Java Application" і виберіть клієнт або сервер. Потім натисніть кнопку "Run".