Как написать мод для minecraft на java
Перейти к содержимому

Как написать мод для minecraft на java

  • автор:

Minecraft Modding#

Хотите создать мод для Minecraft? Добавить в игру что-то свое: блок, сущность или целое измерение?

На этом сайте вы найдете интересный, понятный и подробный учебник по созданию собственных модов для Minecraft.

Вы думаете это сложно? На самом деле нет (с помощью этого учебника)

С чего начать?#

Первый и абсолютно необходимый навык для создания модов — знание основ программирование и Java.

Переменная, объект, класс, метод — все эти слова должны быть вам достаточно хорошо знакомы. Если вы не знаете, что это, то вам необходимо пройти самые основы языка Java.

Теперь поговорим об API.

API — набор инструментов для упрощения работы с программой (в нашем случае, с Minecraft).

К сожалению, никакого встроенного API для создания модов у Minecraft нет.

Minecraft не поддерживает моды!

Однако, исходный код игры можно получить, и многие разработчики стали разрабатывать свои неофициальные API: Forge, Sponge и так далее. О Forge вы наверняка не раз слышали. Это самое популярное на сегодня API для создания модов.

Поэтому у вас есть выбор.

Писать моды с помощью API#

Это будет проще. Но запускаться ваши моды смогут только на клиенте с заранее установленным API. Моды, написанные с помощью Forge пойдут только на Minecraft, где предварительно установлен Forge.

Большинство всех Minecraft модов написаны при помощи Forge API.

Плюсы

  • Простое создание модов
  • Удобный перенос на другие Minecraft версии
  • Совместимость (и даже взаимодействие) с другими модами

Минусы

  • Необходимость иметь установленное API на клиенте

Писать моды без помощи API#

Это несколько сложнее, так как потребует от вас глубокого понимания внутреннего устройства работы Minecraft. При написании модов без использования API вы напрямую редактируете исходный код игры. Получается, что вы словно пишете свой собственный Minecraft (или новую его версию), и никакие другие моды работать вместе с вашим скорее всего не будут.

Плюсы

  • Не нужно ничего предварительно устанавливать
  • Полный контроль над происходящим в игре
  • Возможность менять исходные файлы игры

Минусы

  • Почти абсолютная несовместимость с другими модами
  • Относительная сложность написания
  • Сложный перевод мода под другие Minecraft версии

Что выбрать?#

В большинстве случаев рекомендуется писать моды при помощи Forge API. Он сейчас наиболее популярен и является практически стандартом.

Большинство модов и уроков по их созданию написано с помощью этого API. Forge настолько распространен, что частенько под созданием модов для Minecraft понимается именно их создание с помощью Forge API.

У меня вопрос/проблема!#

Если что-то не работает, но должно, или (что еще хуже), что-то работает, но не должно, смело обращайтесь на форум за помощью.

Кстати, там можно не только просить о помощи, но еще и общаться с другими создателями модов, обмениваться опытом и рекламировать свои моды!

Как поделиться с другом?#

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

Разделы статьи разделяются заголовками. Наведите на заголовок курсор мышки. Справа от него появится значок ссылки. Нажмите на него правой кнопкой и выберите пункт «Копировать адрес ссылки».

Вклад в учебник#

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

О сайте#

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

Здесь мы реализуем другой подход.

Сайт работает на статическом генераторе MkDocs с темой Material. Такой подход позволяет не возиться с исходниками сайта, а писать статьи в удобной markdown разметке, которая автоматически собирается в готовый и красивый сайт.

Создание модификаций с помощью Forge

В этой статье описывается процесс создания модификаций для Minecraft с использованием API Forge и Eclipse. Для создания даже простых модификаций требуется знание основ Java. Если во время создания модификаций возникнут вопросы или проблемы, не описанные здесь, опишите их на странице обсуждения.

Таблица готовности
Урок 1.6+ 1.7+ 1.9+ 1.10+ 1.12+ 1.14+
Блок Готов Готов Готов Готов Готов Не планируется
Предмет Готов Готов Готов Готов Приостановлено Не планируется
Крафт Готов Готов Готов Готов Приостановлено Не планируется
Компиляция Готов Готов Готов Готов Приостановлено Не планируется
Генерация Возможно Готов Готов Не планируется Приостановлено Не планируется
Прокси и инстанция Не планируется Готов Не планируется Не планируется Приостановлено Не планируется
Моб Возможно Готов Не планируется Не планируется Не планируется Не планируется
Блоки с моделью Возможно Возможно Не планируется Не планируется Приостановлено Не планируется
Доп. Уроки Всего: 3 Всего: 12 Всего: 10 Всего: 0 Всего:0 Всего:0

Общие сведения [ ]

Для создания модификаций в любом случае нужны JDK и Eclipse. Первая — это комплект разработчика Java и отличается от обычной Java тем, что имеет средства для компиляции/декомпиляции, несколько дополнительных библиотек и документацию. С 2019-го года ввиду изменений в лицензировании для загрузки JDK потребуется учётная запись Oracle. Также важно то, что Minecraft 1.12 не поддерживает Java ниже 7-й и выше 9-й включительно, тогда как 1.14 поддерживает практически все версии Java выше 8-го выпуска. Eclipse — это среда разработки, которая имеет поддержку синтаксиса нужного языка программирования, а также в ней был написан сам Minecraft.

Руководства по версиям [ ]

См. также [ ]

  • Создание модов с помощью ModLoader
  • Установка модификаций с помощью Forge
  • Учебник по моддингу
  • Русскоязычный форум создателей модов
  • Руководства на англоязычной Wiki по Forge

Создание мода Minecraft с использованием Java и Fabric

Несколько недель назад YouTube порекомендовал мне видео Minecraft с канала Dream, в котором он пытался… С тегами учебник, новички, java, minecraft.

  • Автор записи Автор: Horus Lugo
  • Дата записи 24.11.2021

Несколько недель назад YouTube порекомендовал мне видео Minecraft с канала Dream , в котором он пытался победить в игре, в то время как его друг Джордж пытался остановить его. Это видео было действительно забавным и заставило меня изучить больше их контента.

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

Несколько дней спустя у меня появилась идея разработать мод для Майнкрафта и я подумал Почему нет? Это будет весело!

Выбор инструментов

Как и в Minecraft, нам нужны некоторые инструменты, но в этом случае они помогут нам в процессе создания нашего первого мода.

Несколько инструментов помогут вам создавать моды Minecraft, и я выбрал Fabric , потому что один из модов, с которыми я обычно играю, был создан с его помощью.

Minecraft использует Java, как и Fabric, что означает, что нам также необходимо установить набор для разработки Java или JDK. Чтобы быть более конкретным, нам нужен JDK 8, чтобы иметь возможность скомпилировать наш мод. Вы можете скачать его на этой странице .

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

Настройка проекта

В этом руководстве мы будем использовать стартер, чтобы быстро перейти к созданию нашего первого мода. Давайте пройдем через следующие шаги:

1. Клонирование/Загрузка репозитория

Если вы используете Git, просто клонируйте репозиторий:

$ git clone https://github.com/HorusGoul/fabric-mod-starter.git

Хорусгул/ткань-мод-стартер

2. Откройте папку проекта с помощью редактора кода

Использование кода Visual Studio:

$ code fabric-mod-starter

3. Откройте терминал внутри папки проекта и запустите клиент

$ cd fabric-mod-starter $ ./gradlew runClient

записка: В Windows вам нужно будет запустить .\gradlew.летучая мышь вместо этого запустите Клиент .

4. Проверьте, все ли работает

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

. [main/INFO]: [STDOUT]: Hello Fabric world! . [main/INFO]: [STDOUT]: This line is printed by an example mod mixin! .

Если это не так для вас, перепроверьте все, и если ничего не работает, оставьте комментарий или отправьте мне сообщение в личку, и я постараюсь вам помочь.

Знакомство с проектом

На данный момент мы уже можем испачкать руки, начав кодировать, но давайте ознакомимся с некоторыми файлами.

На данный момент мы уже можем испачкать руки, начав кодировать, но давайте ознакомимся с некоторыми файлами.

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

# Done to increase the memory available to gradle. org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use minecraft_version=1.15.1 yarn_mappings=1.15.1+build.1 loader_version=0.7.3+build.176 # Mod Properties mod_version = 1.0.0 maven_group = starter archives_base_name = starter # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api fabric_version=0.4.25+build.282-1.15

src/главный

Внутри папки src мы сможем найти другую папку с именем main . Именно там находятся код и ресурсы нашего мода.

src/основной/java

Весь код Java находится внутри этой папки. Там мы можем найти пакет под названием starter , который содержит два элемента: StarterMod.java файл и смешивание пакет.

Мы можем найти файл Мы можем найти файл |/внутри смешивания

совет: Если вы используете код Visual Studio, я рекомендую вам установить Пакет расширений Java . Это позволит вашему редактору использовать множество утилит, чтобы упростить разработку Java.

Это позволит вашему редактору использовать множество утилит, чтобы упростить разработку Java.

Это основная точка входа в наш мод, как мы видим, он относится к пакету starter и реализует метод OnInitialize() , который просто печатает Привет, мир ткани! к консоли.

package starter; import net.fabricmc.api.ModInitializer; public class StarterMod implements ModInitializer < @Override public void onInitialize() < // This code runs as soon as Minecraft is in a mod-load-ready state. // However, some things (like resources) may still be uninitialized. // Proceed with mild caution. System.out.println("Hello Fabric world!"); >>

Этот класс относится к пакету starter.mixing . Наш мод будет действительно маленьким поэтому нам не стоит сильно беспокоиться о файловой структуре нашего проекта. Давайте просто предположим, что все миксины будут расположены внутри пакета starter.mixing .

А что такое смешивание?

Миксины отвечают за внедрение кода в существующие классы игры. Например, в StarterMixin.java , мы вводим метод в начале (НАЧАЛО) метода init() , который реализован в классе TitleScreen из Minecraft.

Теперь, если мы загрузим это смешивание, как только Minecraft вызовет init() метод |/TitleScreen , наш метод, который включает в себя System.out.println (“Эта строка напечатана с помощью примера модного миксина!”); также будет вызван!

Это часть магии миксинов, и это только верхушка айсберга, на данный момент это все, что нам нужно для создания нашего мода. Если вам нужны более глубокие знания, вам следует проверить Документы по смешиванию .

package starter.mixin; import net.minecraft.client.gui.screen.TitleScreen; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(TitleScreen.class) public class StarterMixin < @Inject(at = @At("HEAD"), method = "init()V") private void init(CallbackInfo info) < System.out.println("This line is printed by an example mod mixin!"); >>
src/основные/ресурсы

Внутри папки ресурсы мы можем найти папку активы , в которой сейчас находится только значок нашего мода. Помимо этой папки, есть два файла JSON:

Помимо этой папки, есть два файла JSON:

Для этого файла я рекомендую вам перейти в Документы Fabric о fabric.mod.json и прочитайте о каждом поле, определенном в файле нашего проекта.

Если вы предпочитаете прочитать документы позже, просто взгляните на свойства точки входа и миксины .

Держу пари, вы уже видите здесь связь. В точках входа мы указываем Fabric, какой из наших классов Java должен выступать в качестве основной точки входа нашего мода.

И затем, есть свойство mixins , где мы просто сообщаем Fabric местоположение любого файла конфигурации микширования, который мы хотим включить в наш мод. В этом случае у нас есть только один, starter.mixins.json .

< "schemaVersion": 1, "id": "starter", "version": "$", "name": "Starter Mod", "description": "Describe your mod!", "authors": ["Your Name"], "contact": < "homepage": "https://horuslugo.com", "sources": "https://github.com/HorusGoul/fabric-mod-starter" >, "license": "MIT", "icon": "assets/starter/icon.png", "environment": "*", "entrypoints": < "main": ["starter.StarterMod"] >, "mixins": ["starter.mixins.json"], "depends": < "fabricloader": ">=0.7.3", "minecraft": "1.15.x" >, "suggests": < "flamingo": "*" >>

В этом случае у нас есть только один, ||starter.mixins.json||.

Помнишь наш Стартовый микс в классе? Вот как мы можем сообщить цепочке инструментов миксины, которые мы хотим включить в наш мод. Свойство package – это место, где мы определяем пакет Java, в котором расположены миксины, а внутри массива mixins мы можем разместить все классы миксина, которые мы хотим включить в игру.

Наряду с mixins есть два других свойства, которые позволяют нам указать среду, в которую мы хотим загрузить некоторые миксины. Этими свойствами являются сервер и клиент , но в данном случае мы их не используем.

Этот файл соответствует спецификации, определенной в разделе Файлы конфигурации микширования Документации по микшированию. Точно так же, как и раньше, я рекомендую вам обратиться к документам и узнать больше об этом файле ��

Давайте создадим наш мод!

Теперь, когда мы знакомы с проектом, давайте испачкаем руки и создадим наш мод!

В этом случае мод просто изменит одну механику игры: получение урона . Мы сделаем так, чтобы всякий раз, когда игрок получает урон, он менял свою позицию и инвентарь с другим игроком на сервере.

Для этого нам понадобится микширование, которое вводит код в сущность игрока класса, чтобы быть более конкретным, непосредственно перед окончанием метода damage() .

Определение того, когда игроки получают урон

Давайте создадим это новое смешивание в starter.mix в пакете с именем SwitchPlayerEntityMixin.java :

package starter.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerEntity; @Mixin(PlayerEntity.class) public class SwitchPlayerEntityMixin < @Inject(at = @At("RETURN"), method = "damage") private void onDamage(DamageSource source, float amount, CallbackInfoReturnable info) < System.out.println("The player received damage!"); >>

Не забудьте добавить его в файл starter.mixins.json :

Теперь выполните команду ./gradlew запустите клиент в консоли, запустите мир Minecraft в творческом режиме, возьмите несколько зелий мгновенного урона и попытайтесь получить травму.

Как и в GIF, вы должны видеть, как новая строка появляется в консоли каждый раз, когда игрок получает травму, и это означает, что мы можем продолжить объяснение происходящего.

Взгляните на код микширования, нашей целью было получить метод при повреждении выполняется в конце метода повреждение , вот почему мы используем строку вернуть вместо ГОЛОВЫ . Кроме того, нам понадобится ущерб источник и сумма нанесенного ущерба. Последний параметр, info , требуется для структуры микширования.

Оба источника и сумма – это параметры, которые получает исходный метод ущерб , и именно по этой причине мы можем просто использовать их в нашем методе.

Доступ к текущему игроку

Прямо сейчас мод просто печатает строку каждый раз, когда игрок получает травму, наша следующая цель – доступ к экземпляру игрока.

Сначала мы должны помнить, что метод onDamage находится внутри Сущность игрока экземпляр. Мы можем воспользоваться этим и просто использовать это для доступа к свойствам и методам экземпляра. Проблема возникает, когда компилятор кричит на нас, потому что он думает, что мы являемся экземпляром Переключить Игрока На Миксин Сущности .

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

PlayerEntity self = (PlayerEntity) (Object) this;

При этом мы сообщаем компилятору, что это является объектом а затем мы разыгрываем объект как Сущность игрока . И виллы! У нас есть доступ к игроку, который получает урон, теперь мы можем обновить нашу печатную строку, чтобы отобразить имя игрока.

. @Mixin(PlayerEntity.class) public class SwitchPlayerEntityMixin < @Inject(at = @At("RETURN"), method = "damage") private void onDamage(DamageSource source, float amount, CallbackInfoReturnable info) < PlayerEntity self = (PlayerEntity) (Object) this; System.out.println("The player " + self.getGameProfile().getName() + " received damage"); >>

Переключение позиций с другим игроком

Теперь, когда мы можем получить доступ к свойствам и методам игрока, мы можем использовать один из них для доступа ко всему миру .

Свойство world ссылается на текущий мир Minecraft, в который играют, и одна из вещей, которые мы можем с ним сделать, – это получить список онлайн-игроков.

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

package starter.mixin; import java.util.List; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.BlockPos; @Mixin(PlayerEntity.class) public class SwitchPlayerEntityMixin < @Inject(at = @At("RETURN"), method = "damage") private void onDamage(DamageSource source, float amount, CallbackInfoReturnable info) < PlayerEntity self = (PlayerEntity) (Object) this; // Get all the players in the current minecraft world Listplayers = (List) self.world.getPlayers(); // The player we'll switch positions with. PlayerEntity otherPlayer; // Stop the execution if the player is playing alone. if (players.size() // Get a random player from the players list. // Repeat this process until we have a player that is // not the player who got hurt. do < int index = (int) Math.floor(Math.random() * players.size()); otherPlayer = players.get(index); >while (otherPlayer == self); // Get the block position of both players BlockPos selfPos = self.getBlockPos(); BlockPos otherPlayerPos = otherPlayer.getBlockPos(); // Teleport damaged player to the other player's coordinates // We set the Y to 300 in order to avoid a collision with the other player. // // We add 0.5 to both X and Z because that's the center point of a block // and the players could suffocate under certain circumstances if we didn't self.teleport(otherPlayerPos.getX() + 0.5, 300, otherPlayerPos.getZ() + 0.5); // Teleport the other player to the position of the damaged player. otherPlayer.teleport(selfPos.getX() + 0.5, selfPos.getY(), selfPos.getZ() + 0.5); // Finally change the Y to the real value and complete the teleport of both // players. self.teleport(otherPlayerPos.getX() + 0.5, otherPlayerPos.getY(), otherPlayerPos.getZ() + 0.5); > > 

После реализации этого вам понадобятся два клиента Minecraft, чтобы иметь возможность протестировать его. Вы можете сделать это, открыв его с помощью ./gradlew runКлиент а затем используйте официальный клиент Minecraft с вашей учетной записью Mojang. Затем откройте тестовый мир в локальной сети и присоединитесь к нему с другим клиентом.

Обмениваются своими запасами

А теперь мы добавим последнюю функцию мода: замена инвентаря игроков.

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

Класс Инвентарь игрока имеет два метода, которые мы будем использовать, сериализация и десериализовать . Первый из них позволяет нам клонировать содержимое инвентаря, поместив его внутрь тега List и затем мы можем использовать второй, чтобы заменить содержимое инвентаря содержимым, которое находится внутри тега списка .

// . teleports . // Only swap inventories if the players are alive if (self.getHealth() > 0.0f && otherPlayer.getHealth() > 0.0f) < // Get the inventories of both players ListTag selfInventory = self.inventory.serialize(new ListTag()); ListTag otherPlayerInventory = otherPlayer.inventory.serialize(new ListTag()); // Swap them self.inventory.deserialize(otherPlayerInventory); otherPlayer.inventory.deserialize(selfInventory); >

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

Окончательный код

Если вы дошли до этого момента, поздравляю! Вы создали свой первый мод для Minecraft, теперь мы должны удалить ненужные файлы, например, StarterMixin.java и StarterMod.java . Не забудьте удалить ссылки на эти файлы внутри fabric.mod.json и стартеры.mixins.json .

Я также рекомендую вам переименовать пакет из starter в то, что вы хотите, просто не забудьте изменить каждое вхождение в проекте.

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

Упаковка мода

Если вы знакомы с модами Minecraft, вы, возможно, уже знаете, что моды обычно поставляются упакованными внутри .zip или .jar файлы, которые позже вы поместите в папку mods на сервере или клиенте Minecraft.

Чтобы создать комплект вашего мода, вам нужно всего лишь выполнить следующую команду:

$ ./gradlew build

Если все будет скомпилировано правильно, вы сможете найти файл .jar внутри папки ./build/libs вашего проекта. В большинстве случаев вы захотите выбрать производственную версию без источников, но могут быть случаи, когда также лучше отправить версию разработки вместе с источниками.

Вот и все, теперь вы можете отбросить эту .банку внутри вашей папки mods просто не забудьте сначала установить API Fabric, и для этого вы можете прочитать раздел Установка Fabric в их вики, если хотите узнать, как это сделать.

Учебные ресурсы

Вот некоторые ресурсы, которые могут пригодиться, если вы хотите узнать больше о моддинге Minecraft:

  • Ткань Вики . Об этом уже упоминалось в статье, но серьезно, пойдите и проверьте это, потому что есть много контента, который я не охватил!
  • API-интерфейс Forge . API Forge – это самый известный API Minecraft, вы можете проверить его, потому что с его помощью были созданы некоторые из лучших модов!
  • Сценарное мастерство . Похоже, есть способ создавать моды с использованием JavaScript, поэтому, если у вас есть опыт работы в веб-разработке, вы можете попробовать этот способ.
  • Создатель . Как говорится на их сайте, MCreator – это программное обеспечение, используемое для создания модов и пакетов данных Minecraft с использованием интуитивно понятного простого в освоении интерфейса или встроенного редактора кода. Если вы знаете о ком-то, кто хочет начать заниматься программированием, это может быть хорошим способом познакомить их!

Вывод

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

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

Я надеюсь, что вы отлично провели время, читая эту статью. Если вы решите продолжить обучение, я предлагаю вам поделиться своим прогрессом с нами, кто знает, может быть в Minecraft моддинг сообщество может родиться внутри Дев.к ��

  • Метки minecraft, mod, youtube

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

Предыстория:
Хотел писать моды для Minecraft, знал, что они пишутся на Java. Начал учить, уже установил IDE(Eclipse), но вот незадача, не могу найти нормальные ресурсы на тему «как создавать моды для майнкрафт»(искал я не по такому запросу, но вы надеюсь поняли). Ищу, ищу, а там только копии одной статьи и гайды по созданию модов для forge 1.7, мне же надо fabric 1.18.2. Уже сижу и думаю, а стоит ли вообще пытаться создавать моды тогда и вообще учить Java? Задаю вопросы на разных форумах, люди привели меня сюда. Если есть знающие люди, у которых есть свободное время, просьба быть кем–то вроде наставника в этом деле. Спасибо тем, кто откликнулся на вопрос. И да, вопрос–заголовок охватывает очень много тем, но ниже есть более мелкие вопросы.

Сам вопрос:
Какие есть ресурсы по изучению искусства создания модов для Minecraft fabric 1.18.2? Что нужно для создания модов для Minecraft fabric 1.18.2(программы, знания)? Ну, и конечно же как создавать моды для Minecraft fabric 1.18.2(Учебник видел, но он только на 1.16)?

TheAndrey

1,074 72 372
Уже сижу и думаю, а стоит ли вообще пытаться создавать моды тогда и вообще учить Java?

От себя: я бы не советовал заниматься моддингом данной игры. Архитектура игры ужасна; нет никакой документации к коду, обо всём придётся догадываться самому; с каждым выходом новой версии игры придётся постоянно чинить свой мод, разработчики не дают информации о том что куда переместили.

will0376 написал(а):
Причем тут моддинг?

Priz01

От себя: я бы не советовал заниматься моддингом данной игры. Архитектура игры ужасна; нет никакой документации к коду, обо всём придётся догадываться самому; с каждым выходом новой версии игры придётся постоянно чинить свой мод, разработчики не дают информации о том что куда переместили.

TheAndrey, дело в том, что я хочу найти себя в программировании, т.к. у меня нет хобби. Я готов идти на такие трудности. Я уже учил Python, C#, C++, но там как–то мне не хватало идей для проектов, а тут у меня есть цель — написать мод(ы). Тем более, что у меня уже есть несколько идей и следовательно мотивация обучаться и прогрессировать, а не как с прошлыми языками программирования: выучил, поискал вдохновение, не нашёл, забросил.

HomaPlus

433 41 110
Уже сижу и думаю, а стоит ли вообще пытаться создавать моды тогда и вообще учить Java?

1) Без знаний и опыта — никуда. Если не имел опыта в программировании ,,вообще,, — то только только на основы у тебя уйдет с пол-года (сам язык + стуктуры данных + ооп + алгоритмы + патерны проектирования + опыт работы со всем этим). Если есть все, кроме первого — то за недели полторы-2 сможешь базу подтянуть.

2) Не зацикливайся на конкретном языке. Java/Kotlin/Scala/(другой язык jvm) или запускай майн на GraalVM и бонусом используй все преимущества этого полиглота, или что-то еще, что я тут не упомянул, либо не знаю — не важно. Выбери то, что тебе больше нравится

3) Все гайды +- переборки раздела документации get started из оф. документации Fabric. (в твоем случае) Так или иначе, там везде +- понятно

4) Что весь моддинг с помощью Forge, что с помощью Fabric +- одно и то-же, только не нужно рассматривать гайды, как конкретику,
смотри на это, как на некоторую абстракцию, и уже потом подгоняй ее под свои конкретные условия. (Так например, часть гайдов с 1.7 применимы к 1.19, и наоборот, например мои знания 1.12 могут помочь другим в решении проблем с 1.7 или 1.16)

От себя: я бы не советовал заниматься моддингом данной игры.

Не советую заниматься моддингом ,,вообще,, (если тебе дорого время и нервы)

Касательно самого моддинга, не важно какой игры. 95% времени — это анализ существующего кода. Чаще всего нечитаемого. Это чистый реинженеринг либо машинного кода, либо байт-кода (Юнити, привет). В случае с майном — это за нас уже сделали создатели MCP, и слава богу, код хотя-бы +- читаемый, и вникать в логику работы проще.

Последнее редактирование: 4 Фев 2023
System.out.println(«Лучше чем Console.WriteLine»)

TheAndrey

1,074 72 372
Касательно самого моддинга, не важно какой игры.

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

will0376 написал(а):
Причем тут моддинг?

Deco20-19

343 14 113

TheAndrey, дело в том, что я хочу найти себя в программировании, т.к. у меня нет хобби. Я готов идти на такие трудности. Я уже учил Python, C#, C++, но там как–то мне не хватало идей для проектов, а тут у меня есть цель — написать мод(ы). Тем более, что у меня уже есть несколько идей и следовательно мотивация обучаться и прогрессировать, а не как с прошлыми языками программирования: выучил, поискал вдохновение, не нашёл, забросил.

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

.̷̡̧̡̩̬̝̞̰͕̹̝̱̝̳͎̖̺̺̠̥̤̜̞̀͗͠ͅ

Priz01

Главная проблема майна — каждые несколько месяцев выходит новая версия, ломающая совместимость всего.

Предлагаю обратить внимание на игровые движки.

1. TheAndrey, я отлично понимаю, что мне нужно будет переписывать мод на другие версии и т.д. Но тогда зачем другие люди создают моды для Minecraft? Тот же Create, насколько я знаю, он есть на несколько версий, а не на одну. И людям не лень переписывать его. Так что же я должен ленится?

2. DeCo20-19, я не игры хочу создавать, хотя я пробовал. В Unity было так: я вообще только установил движок и потом даже не прикасался к нему. В Godot: уже удачнее, но меня отпугнула перспектива рисования текстур для игры, т.к. она у меня была не стандартная, да и писать на GDScript я толком не мог, так, пару видео по нему посмотрел. Я же хочу делать моды для игры, которая во–первых уже есть, а во–вторых моя любимая.

Без знаний и опыта — никуда. Если не имел опыта в программировании ,,вообще,, — то только только на основы у тебя уйдет с пол-года (сам язык + стуктуры данных + ооп + алгоритмы + патерны проектирования + опыт работы со всем этим). Если есть все, кроме первого — то за недели полторы-2 сможешь базу подтянуть.

запускай майн на GraalVM

1. А можно пояснить мне, тому, кто ещё не понимает, где это учить?? Структуры данных, алгоритмы, паттерны проектирования.
2. Что такое GraalVM?

Priz01

(и можете кто–нибудь пояснить, что такое Gradle? Слышал про него, но не понял, что это, даже когда поискал в интернете)

TheAndrey

1,074 72 372
и можете кто–нибудь пояснить, что такое Gradle?

Установка программ — Создание Minecraft модов

Установка необходимых программ, которые необходимы для разработки Minecraft модов.
mcmodding.ru
will0376 написал(а):
Причем тут моддинг?

HomaPlus

433 41 110
Что такое GraalVM?

Гугл в помощь на все вопросы. Есть куча нормальных статей. Ладно. Держи по граалю, graalvm.org. Бонусом, ТЫК и ТЫК.

что такое Gradle?

Снова гугл в помощь. Если кратко — ахрененная автоматическая система сборки и управления зависимостями. maven — его ,,слабый предшественник.

(П.с, да, без видео, только суровая официальная документация, ну или на крайняк статьи с выборками по ней)

System.out.println(«Лучше чем Console.WriteLine»)

Priz01

Спасибо всем.
Гугл в помощь на все вопросы.
И ещё, может вы хоть скажете, где вы учили всё необходимое? Или вы гуглили всё?

Liahim

4,045 63 645
Всё сами, всё сами.
Форум, вопросы, ответы плюс куча проб и ошибок )

Liahim

4,045 63 645
Не советую заниматься моддингом ,,вообще,, (если тебе дорого время и нервы)
Расскажи, плиз, а чем же заниматься?
Свою игру с нуля создавать?
Это проще?

HomaPlus

433 41 110
Расскажи, плиз, а чем же заниматься?

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

System.out.println(«Лучше чем Console.WriteLine»)

NoMatterCode

И ещё, может вы хоть скажете, где вы учили всё необходимое? Или вы гуглили всё?

Сам долгое время баловался с Python. Рассматриваю программирование не как источник заработка, а как хобби и очень уважаю твой подход к этому делу, мол долой лень и прочее — это достойно похвалы.

На этом сайте есть хороший учебник, пусть и не завершённый от оглавления до послесловия, но всё же вводную он даёт хорошую. Он заточен именно под моды на майнкрафт. Сам язык лично я учу по Герберту Шилдту, но это единственная книга которую я читаю и соответственно это всё что я могу посоветовать. Вроде как всё достаточно понятно излагается.
Первое с чем я столкнулся — нехватка идей. Написать мод — не есть идея, это всё же искусство.
Лично я просто гуляю по документации и думаю что бы такого намудрить и в чём можно покопаться, какой метод можно интересно обыграть и тому подобное.
Как уже писали выше дело это совсем неблагодарное, но как хобби вполне сойдёт. Какая разница сколько ты тратишь времени на то что тебе нравится, верно? Но конечно подход моджангов это то ещё свинство касательно обфускации, обновлений да и кода в целом. Разбираться во всём этом очень и очень долго до получения первых плодов. Желаю найти себя

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *