Как создать свой мод на майнкрафт forge. Программы для создания мода для майнкрафт. Создание модов с помощью API

Как создать свой мод на майнкрафт forge. Программы для создания мода для майнкрафт. Создание модов с помощью API

22.06.2022

Как создать мод для Minecraft?

Для того чтобы создавать моды в "Майнкрафте", необходимо обладать хотя бы базовыми знаниями в области работы с приложениями и программированием в целом.

Создавать моды для Minecraft можно при помощи API и без него. API - интерфейс программирования приложений, который позволяет работать с готовыми классами, функциями, процедурами, структурами и константами для использования в других программах. Самым популярным API для "Майнкрафта" является Minecraft Forge. Использование Forge для создания модов в игре требует применения этого API и для самой игры, что значительно усложняет сам игровой процесс, но при этом позволяет устанавливать приложения без конфликтов со своими модификациями и с модами других игроков. Добиться этого без API невозможно.

Подготовка к созданию модов в игре выглядит следующим образом:

  1. Скачайте последнюю версию Java .
  2. Установите Java SE Development Kit .
  3. Скачайте Eclipse IDE for Java Developers и вынесите его копию на рабочий стол.
  4. Скачайте Minecraft Forge .
  5. Перенесите все программы в одну папку на рабочем столе и запустите install.cmd.
  6. После запуска Eclipse укажите в качестве рабочего пространства созданную вами ранее папку.

После этого можно переходить непосредственно к созданию мода. Вам необходимо будет пройти следующие этапы:

  1. Создание базового файла, в котором указывается имя, id и версия мода;
  2. Создание блока;
  3. Создание дропа;
  4. Генерация блоков;
  5. Создание разносторонних структур;
  6. Мультиблочные структуры;
  7. Создание предметов;
  8. Создание инструментов и т. д.

Начав с малого, вы постепенно разберетесь с основными принципами того, как создавать моды для "Майнкрафта", и сможете даже добавлять свои собственные моды на сервер для того, чтобы показать их друзьям. Если создание модов вам пока не по силам, читайте статью

Сегодня мы начинаем цикл статей для новичков, призванный помочь освоить моддинг Minecraft, а главное, сделать это максимально быстро и полезно. В принципе, каждый из нас может найти уроки и начать создавать моды, ведь методом тыка можно сделать практически все, что угодно, пусть и не совсем правильно и красиво. Данный туториал убережет вас от наступания на грабли и поможет стартовать максимально быстро и удобно.

Введение в моддинг Minecraft

Следует отметить, что моды Minecraft пишутся на Java. Никаких удобненьких редакторов здесь не будет. От вас требуется хотя бы минимальное знание Java, либо опыт работы с другими языками программирования, знание их основ. На крайний случай – большое желание научиться всему этому. Если вы не будете тупо копировать примеры, а постараетесь понять, как оно работает, то вас определенно ждет успех.

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

Почему Forge? Представьте, что вам нужно починить телевизор/компьютер/айфон/большой адронный коллайдер (нужное подчеркнуть), но под рукой у вас только молоток и гвозди. Конечно же мы пойдем и достанем пыльный ящичек с инструментами, в котором есть и пассатижи, и пинцет, да и вообще все, что душа пожелает. В нашем случае, Forge – это и есть тот желанный ящик с инструментами.

Приступим к работе

Для начала нам нужно скачать JDK (Java Development Kit)

Статья является эксклюзивной для сайт. Копирование и перепечатка информации возможна только с письменного согласия автора.


Сегодня я заново открываю цикл статей и на этот раз. забрасывать его не буду и даже буду отвечать на ваши коментарии. Ну что ж, от слов к делу. Поехали!
Подготовка

Для написания своих плагинов нам понадобятся:
  • Среда разработки Java-приложений Eclipse ;
  • Api Spigot: https://hub.spigotmc.org/nexus/content/groups/public/org/spigotmc/spigot-api/ .
Так же понадобятся базовые знания по Java. Если таковых нет, то вот ссылки по “поднятию скила”:
  • Основы Java для начинающих
    Сайт рассчитан на тех, кто только начинает изучать Java
  • Java (Beginner) Programming Tutorials
    Видео-туториал по Ява, рассчитанный для новичков(я начинал с него).
  • Справочник по java
    Я бы назвал это шпаргалкой по яве
  • Java эксперт
    И пусть вас не пугает название. Здесь можно найти множество примеров решения на те или
    иные задачи.
Установка и настройка Eclipse
Если вы уже знакомы с Eclipse или увас другая IDE, то пропускайте этот раздел.

Проблем с установкой эклипса возниктуть не должно: его нужно просто распаковать в любоую папку и запустить. Сразу после этого, эклипс попросит указать, какое рабочее пространство(workspace) сейчас открыть. Это папка, в которой будут сохранятся все созданные проекты и где ее располагать – лично ваше решение. Если вам всеранво, то оставляйте все как есть. Если вдруг захотите изменить рабочее пространстро, то не переживайте: при каждом следующем запуске, эклипс сново спросит вас о рабочем пространстве. Таких пространств можно наделать сколько угодно и каждое может быть настроено по разному, под какие-то определенные цели. К примеру у меня есть 2 рабочих пространства: для написания обычных java-приложений и для написания плагинов под “ведро”. Если вдруг вам надоест это сообщение, там есть галочка «Use this as the default and do not ask again», что позволяет задать workspace по-умолчанию.+

Как только вы определитесь с выбором места и загрузится Eclipse, то мы увидим пригласительную вкладку… которую сразу же закрываем. Она нам ни к чему.

Теперь же мы видим рабочее пространство самого эклипса. Из всего этого, нам понадобится только следующие панели:

  • Package Explorer
    Здесь будут отображаться ваши проекты, пакеты(о них позже) и всевозможные файлы наших будующих плагинов.
  • Problems
    Этой панелькой мы будем редко пользоваться(если вообще до нее дело дойдет), но сказать о ней стоит. Здесь будут показываться ошибки, допущенные в коде, а так же предупреждающие сообщения о возможных ошибках или неточностях.
  • Outline
    Тут будет отображаться навигация непосредственно по коду открытого java исходника.
Последние 2 описанные панели можно вообще свернуть, т.к. пользоваться ими будем редко.

Рабочее место почти готово. Осталось только поставить еще 2 галочки в настройках.

Переходим в меню Window -> Preferences, далее по древу General -> Editor -> Text Editors и выставляем галочку «Show line numbers», чтобы включить отображение нумерации строк. Теперь переходим в General -> Workspace и в группе «Text file encoding» выставляем кодировку UTF-8, самым установив кодировку по-умолчанию.

С установкой и настройкой покончено. Теперь поясню, как создавать новый проект для плагина. Это можно сделать одим из 3-х способов:

Перед нами откроется окно New Java Project. В Project name указываем название нашему проекту

Нажимаем Next.
В появившемся окне, переходим на вкладку Libraries, нажимаем кнопку Add External JARs и выбираем скаченный Bukkit API

Жмем Finish.

Слева, в Package Explorer, показался наш проект с папкой src, в которой будут храниться наши исходные коды. Теперь созданим новый класс. Делается это точно так же, как и с Java Project.

В окне New Java Class нам понадобятся только следующие графы:

  • Package
    указывается пакет, в котором будет хранится наш класс. Формат имени должен быть примерно такой: ru.dmitriymx.bukkit.tutorial.
    Если в двух словах и на пальцах, то пакеты в ява – это пространство имен(namespace) или «виртуальные папки», в которые помещаются классы. Подробнее про это можно прочитать здесь: , , .
  • Name
    указываем название класса (у меня это DmxFirstPlugin)
Все остальные пункты оставляем как есть и жмем Finish.

Вот теперь переходим непосредственно к коду.
Пишем простой плагин
Как только мы создали новый класс, нашему взору предстает уже готовый пустой шаблон

Пока это всего лишь пустой класс, который абсолютно бесполезен в быту. Будем это исправлять. Изменяем вот это

на это

Эклипс подчеркнет нам JavaPlugin, указывая на ошибку в коде. Если подвести мышь к такому подчеркнутому коду, то откроется окошко с описанием ошибки и способы ее решения. В данном случае нам нужно импортировать класс из Bukkit API, для чего выбираем пункт «Import ‘JavaPlugin’(org.bukkit.plugin.java)»

Сразу же замечаем, как над всем нашим кодом вписалась строчка

Немного теоретического материала. У плагинов есть 3 основных метода: onEnable(), onDisable() и onLoad(). Первые два отвечают за включение и отключение плагина, а последний срабатывает когда плагин непосредственно подгружается в память сервера. Из этого следует, что onLoad выполняется самым первым, но сам плагин начинает работать только после вызова onEnable со стороны сервера. По выключению или перезагрузки сервера, вызывается метод onDisable.

С “точками входа-выхода” разобрались. Давайте теперь напишем что-нибудь более-менее работоспособное. Приведем общий код класса к следующему виду:

кому невидна вторая часть:
о что мы сейчас написали – готовый плагин. Все что он делает – это пишет в чат о приходе и уходе игрока на сервер. Разбираться в его работе будем по порядку(а как иначе?).
Сперва обращу внимание на строку объявления класса. Как видно, к нашему классу добавилось расширение Listener. Не углубляясь в дебри явы, скажу проще: указывая данное расширение, мы тем самым расширяем область применения класса не только как плагина(JavaPlugin), но и как обработчика событий(Listener). А вот как раз в методе onEnable() мы регистрируем наш класс на сервере как обработчик событий(this – это указание «на самого себя», если кто забыл).

Далее следует 2 наших обработчика событий onJoin() и onQuit(). Первый отвечает а событие входа игрока на сервер, а второй – за уход. С помощью метода event.getPlayer().sendMessage(), мы можем отправить сообщение тому игроку, которое вызвал данное событие(в нашем случае игроку, который зашел). Статический класс ChatColor хранит в себе константы цветов для окраски. Думаю как им пользоваться уже видно из примера. Так же, оба наших обработчка оповещают других игроков на сервере о произошетших событиях, но делают это по разному. В onJoin() с помощью метода event.setJoinMessage() мы меняем привычное сообщение «Player joined the game» на любое другое. А в onQuit() мы поступили инача(в целях примера): убрали вывод сообщения о выходе и сообщаем об этом через метод getServer().broadcastMessage(), который просто посылает всем игрокам на сервере указанное сообщение.+

Дело осталось за малым: написание важного файлика plugin.yml и упаковка всего этого в jar-файл.

Plugin.yml – это файл описания плагина. В нем задается название плагина, главный класс, описание и какие комманды зарегестрировать за плагинов(об этом позже) и т.д. В нашем случае, файлик должен выглядеть так:

Ой, забфл сказать, где этот файлик должен находится. Жмем правой кнопкой мыши в PackageExplorer по папке src и через меню New выбираем File. В поле File name пишем plugin.yml и жмем Finish. В открывшемся текстовом редакторе, пишем то, что я указывал выше. Всё сохраняем и переходим к последней фазе: упаковке.

Правый тык по папке src -> Export. В древе папок, открываем Java и выбираем JAR file и жмем Next. Из голочек оставляем только «Export generated class files and resources» и «Compress the contents of the JAR file». В поле JAR file указываем, куда будем сохранять полученный плагин. После нажатия на Finish, плагин можно класть в папку plugins, запускать сервер и проверять его работу.

Видите? Это совсем просто. С практикой вы наберетесь больше опыта и сможете делать более крутые плагины, даже такие легендарные как WorldEdit и WorldGuard.
Источник


Не надо удалять 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.

Создание чистого мода

Если вы хотите узнать о том, как создать мод для Minecraft, то вам нужно сразу же уяснить, что его можно делать двумя совершенно разными методами - с использованием API или без. Сначала нужно разобрать создание чистого мода, который не требует дополнительного программного обеспечения. В данном случае вам нужно хорошо разбираться в механике игры и иметь определенные дизайнерские навыки, а также умение программировать на высоком уровне. Тогда вы сможете внедрять в игру что-то новое, а также изменять определенные предметы, функции и многое другое. В итоге вы сможете создать уникальный и необычный мод, но вполне вероятно, что он будет ограничен в использовании другими геймерами, так как не будет стандартизован - соответственно, у кого-то из геймеров может возникнуть проблема с запуском и совместимостью, независимо от того, для какого режима создавалась эта модификация "Майнкрафт" - выживание или креатив.

Создание модов с помощью API

API - это специальный программный интерфейс, который уже содержит в себе очень многие функции из самой игры, а также текстуры, скины и многое другое. Таким образом, вместо того, чтобы прописывать весь код с нуля, вы сможете использовать уже готовые решения, которые можно будет совмещаться между собой, создавая что-то новое. Существует большое количество разнообразных интерфейсов, и выбрать среди них что-то конкретное может быть проблемой. Здесь нужно учитывать специфику мода, например, в отношении режима "Майнкрафт" - выживание, хардкор, креатив и так далее. Но если вы только начинаете делать моды, а также хотите, чтобы ваша модификация была доступна максимальному количеству людей, то вам нужно использовать Minecraft Forge. Это наиболее распространенный API, который сейчас существует - в то же время он самый функциональный, объемный и востребованный. Поэтому, если вы собираетесь добавлять в Minecraft новые моды - обратите внимание в первую очередь именно на него.

Особенности использования Minecraft Forge

Многие геймеры, которые создают или используют моды, задаются вопросом о том, зачем вообще нужен "Фордж". Ведь это так неудобно - вам обязательно нужно установить сам API, чтобы иметь возможность затем запустить модификацию. Неужели нельзя делать чистые моды, которые не требуют ничего дополнительного для игры? На самом деле "Фордж" имеет гораздо больше преимуществ, чем недостатков (кстати, он есть только один, который заключается именно в необходимости предустановки API для запуска мода). Во-первых, процесс создания мода упрощается, во-вторых, у вас появляется гораздо больше возможностей, для использования которых не нужно прикладывать усилий. Но самое главное - ваш мод становится универсальным. Если вы делаете модификацию без API, как уже было сказано выше, велика вероятность того, что многие геймеры не смогут ее установить. Если же вы использовали "Фордж", то любой геймер с установленным API сможет установить и ваш мод без малейших проблем.

Особенности использования

Самое главное правило модификации, независимо от того, какой вариант вы выбрали, заключается в том, чтобы не изменять исходные файлы. Например, вы решили сделать для Minecraft мод на машины - лучше добавьте новые объекты, а не исправляйте те, которые имеются в игре, чтобы избежать конфликтов.

© 2024 diskont-tehnika.ru - Ваша идеальная кухня