Как скомпилировать мод в eclipse minecraft

Здесь находятся инструкции по созданию модификаций, работающие для версии 1.7+

Подготовка среды и настройка [ править | править код ]

Сначала подготовим среду для работы с кодом Minecraft.

Теперь нам нужно установить Forge, который при установке также произведёт декомпиляцию и деобфускацию кода Minecraft, чтобы сразу можно было начать создание модов. Для этого необходимо установить Java Development Kit (JDK), скачав с официального сайта Oracle.

Затем необходимо выполнить одну из следующих команд (замените eclipse на idea , если вы используете IntelliJ IDEA):

  • gradlew.bat setupDecompWorkspace eclipse или
  • gradlew.bat setupDevWorkspace eclipse

Первая предпочтительней, так как в отличие от второй команды, подготавливает рабочее пространство с возможностью просмотра исходного кода Minecraft во время разработки. То есть вы всегда сможете посмотреть, как работает генерация мира, анимация движений, применение эффектов и т. д. Таким образом можно создавать моды, не опираясь на руководства, которых может и не быть на конкретную цель.

Если вы являетесь пользователем операционной системы Linux, нужно прописать следующие строки в терминале:

  • cd / и
  • ./gradlew setupDecompWorkspace eclipse —refresh-dependencies

Выполнение команды займёт какое-то время, после чего должно появиться сообщение рода Build Successful.

Если же появляется какая-либо ошибка:

В случае, если ваша IntelliJ IDEA установлена правильно и она различает формат *.ipr, вы можете просто дважды нажать по файлу .ipr в директории вашего MCP. IDEA все сделает за вас.

Поздравляем! Вы успешно настроили среду для того, чтобы начать писать моды на ней.

Не надо удалять 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 [JavaSE-1.7]», то все нормально, но если строка «JRE System Library [JavaSE-1.6]», то нажимаем ПКМ(Правой кнопкой мыши), выбираем пункт 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. Если вы работаете не в эклипсе, тогда вам будет намного труднее, так что лучше перейти на него, он укажет где ошибка, и какие импорты надо, и вы не будете задавать глупых вопросов в комментариях.

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 (mod )
@NetworkMod (clientS )

public class TestModBase <

@Instance(«TestModID»)
public static TestModBase instance;

@Init
public void load(FMLInitializationEvent event)
<
>

@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;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;

public class TestBlock extends Block <

public TestBlock(int par1)
<
super(par1, Material.ground);//Материал
this.setCreativeTab(CreativeTabs.tabTools);//Добавляем в креатив
>
//Регистрируем текстуру
@Override
public void registerIcons(IconRegister par1IconRegister)
<
this.blockIcon = par1IconRegister.registerIcon(«testmod:testBlock»);
>
>

В нашем файле 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)
<
this.itemIcon = par1IconRegister.registerIcon(«testmod:testItem»);
>
>

@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 — название нашей текстуры. Вот такое у нас размещение текстуры:

Вот тут я действительно почувствовал себя треххромасомным.
Суть проблемы:
хочу посмотреть как работает вот этот мод, вроде все хорошо, исходники есть
а вот тебе на! эклипс игнорирует проект. записах уже и в папку src, вроде лежат, код читать могу, а при запуске они игнорируются, эклипс их не собирает
хоть ты тресни. Может, конечно я туплю уже (точно я туплю)
Думаю, распространенный вопрос, чужие исходники в Eclipse открывать. Поискал по форуму — не нашел.
Поэтому и создаю тему.
Еще раз: как открыть (и запустить) в Eclipse чужие исходники, не являющиеся Eclipse-проектом.

Заранее спасибо и извиняюсь за тупой вопрос.
С Уважением, Led.

В другом кассе ещё нужен код API MineTweaker’а.

Ещё он просит код NEI code chicken’а, а это ещё от code chicken’а: Core и Lib.

Вроде это всё, что ещё требует этот исходник.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Adblock
detector