Тема: [Forge][Modding] Создание модов для Minecraft  (Прочитано 6682 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн rew

  • Ветеран-элита
  • *****
  • Сообщений: 2320
  • Поблагодарили: 16 раз(а)
  • Уважение: +7/-0
  • AliveSto.ru
    • Просмотр профиля
Уроки будут добавляться постепенно!

Что требуется для моддинга с Forge?
1. JDK 7
2. MCP (Minecraft Coder Pack)
3. Forge-Src
4. Eclipse
5. Чистый клиент (и если нужно сервер)
!Внимание, гайд не рассчитан на сборку Bukkit!

Приступим:
1. Создаем папку (Например: ModdingMC) и распаковываем туда содержание архива с MCP.
2. Копируем в папку ../ModdingMC/jars/ , из клиента папку bin и resources, из сервера нам потребуется только minecraft_server.jar.
3. Распаковываем архив с Forge-src в папку ModdingMC
4. Открываем папку ../ModdingMC/forge/ и запускаем файл install.cmd. Ждем окончания декомпиляции..
5. "Устанавливаем" и запускаем Eclipse, во время запуска у вас "спросят" папку с проектом, указываем путь: ../ModdingMC/eclipse/
6. Итак, мы открыли проект, теперь (Обычно слева, есть Package explorer) смотрим, какую библиотеку он "ест"(В окне Package explorer, "открываем проект Minecraft" и если будет строка "JRE System Library [JavaSE-1.7]", то все нормально, но если строка "JRE System Library [JavaSE-1.6]", то нажимаем ПКМ(Правой кнопкой мыши), выбираем пункт Properties, далее открылось окно в нем пункт Execution environment, выбираем в нем JavaSE-1.7 и нажимаем Ok.
7.Итак, приготовления готовы.

Как же все таки начать писать мод?
Для начала, нам нужно создать "основу", то есть основную "папку" в которой будет храниться наша "основа" и все остальное.
1. В Eclipse, нажимаем ПКМ на папку common, выбираем New->Package. Открытом окне в строке Name, мы указываем название папки в которой будет все храниться (Для примера возьмем: net.testmod.src ) и нажимаем Ok.
2. Нажимаем ПКМ по нашей папке ( net.testmod.src ), далее New -> Class. В строке Name указываем название нашего файла (Например: TestModBase ) и нажимаем Finish.

"Внутренности" файла TestModBase, должны выглядить примерно так.
показать/скрыть
package net.testmod.src;

import net.minecraft.src.*;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
@Mod (modid = "TestMod", name = "Test Mod", version="0.0.1")
public class TestModBase {
@Init
public void load(FMLInitializationEvent event)
{
}

@PreInit
public void init(FMLPreInitializationEvent preEvent){}
}

Итак, раз у нас все подготовлено, можно приступать к "урокам":

Урок 1. Создание блока:
показать/скрыть
Сразу скажу, отличий от Modloader'a почти нет, но все-же.
Сам блок
Цитировать (выделенное)
public static final Block TestBlock = new TestBlock(2020,0).setStepSound(Block.soundStoneFootstep).setBlockName("Test Block");

Так же не забываем "зарегистрировать" наш блок(Пишем после скобки, функции load).
Цитировать (выделенное)
GameRegistry.registerBlock(TestBlock);
LanguageRegistry.addName(TestBlock, "Test Block");

Должно получиться примерно так:
показать/скрыть
package net.testmod.src;
import net.minecraft.src.*;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
@Mod (modid = "TestMod", name = "Test Mod", version="0.0.1")
public class TestModBase {
public static final Block TestBlock = new TestBlock(2020,0).setStepSound(Block.soundStoneFootstep).setBlockName("Test Block");
@Init
public void load(FMLInitializationEvent event)
{
GameRegistry.registerBlock(TestBlock);
LanguageRegistry.addName(TestBloc, "Test Block");
}
@PreInit
public void init(FMLPreInitializationEvent preEvent){}
}

Файл TestBlock.java
Цитировать (выделенное)
package net.testmod.src;
import net.minecraft.src.*;
public class TestBlock extends Block {
public TestBlock(int par1, int par2)
{
super(par1,par2,Material.rock); //par1 - ID блока, par2 - ID его текстуры(Считается от 0), берется из файла ниже.
setCreativeTab(CreativeTabs.tabTools); //Добавляем в панель Creative режима
}

public String getTextureFile()
        {
        return "/test/textures.png"; //Указываем путь к текстурам. Путь данных текстур ../ModdingMC/src/common/test/textures.png
        }

}

Урок 2.Экспорт нашего мода

показать/скрыть
1. Запускаем recompile.bat, затем reobfuscate.bat (Внимание, код не должен содержать русские символы!)
2. В папке ../reobf/minecraft/ будет лежать ваша папка с модом, ее запаковываем в ZIP архив.
3. Данный ZIP архив помещаем в папку mods(Перед этим установив Forge-universal). Мод подходит, как для клиента, так и для сервера!

Урок 3.Рецепты (Крафт, Печка)

показать/скрыть
Рецепт крафта
Цитировать (выделенное)
GameRegistry.addRecipe(new ItemStack(Block.stone, 1), new Object[]{ "#X", Character.valueOf('X'), Block.cobblestone, Character.valueOf('#'), Block.dirt});
Объясню, мы добавили крафт при помощи булыжника(cobblestone) и земли(dirt), у нас получиться камень(stone) в количестве - 1 шт.

Рецепт печки
Цитировать (выделенное)
GameRegistry.addSmelting(Block.wool.blockID, new ItemStack(Item.coal, 1), 1.0F);

Здесь, мы добавили рецепт в печку, в котором при обжарке Шерсти(wool), мы получим уголь(Coal), в количестве - 1 шт.

Наш код будет выглядит примерно так:
Цитировать (выделенное)
package net.testmod.src;
import net.minecraft.src.*;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
@Mod (modid = "TestMod", name = "Test Mod", version="0.0.1")
public class TestModBase {
@Init
public void load(FMLInitializationEvent event)
{
GameRegistry.addRecipe(new ItemStack(Block.stone, 1), new Object[]{ "#X", Character.valueOf('X'), Block.cobblestone, Character.valueOf('#'), Block.dirt});
GameRegistry.addSmelting(Block.wool.blockID, new ItemStack(Item.coal, 1), 1.0F);
}
@PreInit
public void init(FMLPreInitializationEvent preEvent){}
}

« Последнее редактирование: 30 Июнь 2013, 12:17:07 от rew »
Intel Core i3 2100 || ОЗУ 2x2 DDR3 || MSI P67A-C43  || AMD Radeon HD 6850  || харды 2x500 гб || CoolerMaster CM Elite 370
AMD Athlon 64 3200+ || ОЗУ 256х2 DDR || ASUS A8N-E || хард 1x40 гб || GF 210  ||  FSP 400w и lenovo B570e
 


Константин

  • Гость
[Forge][Modding] Создание модов для Minecraft
« Ответ #1 : 11 Декабрь 2013, 23:22:26 »
Большое спасибо за данный урок, у меня всё получилось.;D
 


Оффлайн motosimak

  • Ветеран-элита
  • *****
  • Сообщений: 5487
  • Поблагодарили: 3 раз(а)
  • Уважение: +11/-0
  • Пол: Мужской
    • Просмотр профиля
[Forge][Modding] Создание модов для Minecraft
« Ответ #2 : 11 Декабрь 2013, 23:25:31 »
Константин, можешь в теме рейтинг поднять (справа сверху) автору приятно будет beach

Оффлайн Маримар

  • Новичок
  • *
  • Сообщений: 27
  • Уважение: +0/-0
    • Просмотр профиля
[Forge][Modding] Создание модов для Minecraft
« Ответ #3 : 06 Июнь 2015, 20:41:43 »
Подскажите пожалуйста, а можно ли обновить моды, если данная игра установлена из интернета бесплатно, или моды только для платных версий реально обновить? Сын просит, а я ноль полный в этом деле. Спасибо заранее)
 

Оффлайн moto

  • Выше солнца
  • *****
  • Сообщений: 16923
  • Поблагодарили: 140 раз(а)
  • Уважение: +126/-0
    • Просмотр профиля
[Forge][Modding] Создание модов для Minecraft
« Ответ #4 : 06 Июнь 2015, 21:10:39 »
Можно, моды ставятся в папку, есть готовые сборки с серверами и загрузчиками.
https://irongamers.ru - сообщество любителей компьютерных игр
 


Оффлайн dimation96

  • Новичок
  • *
  • Сообщений: 6
  • Уважение: +0/-0
    • Просмотр профиля
[Forge][Modding] Создание модов для Minecraft
« Ответ #5 : 08 Сентябрь 2015, 16:28:43 »
Как можно в это играть?
 

 


Поиск

 
SimplePortal 2.3.6 © 2008-2014, SimplePortal