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

Подготовка

Эти страницы помогут вам настроить среду разработки и полуавтоматические выпуски.

Основы

Эти страницы являются обязательными для чтения при разработке модов. Если вы новичёк, то рекомендуется прочитать следующее.

Терминология
Инструменты для разработки

Продвинутым

Предметы

Блоки

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

Генерация данных

Эти страницы помогут вам с Fabric Data Generation API, который генерирует файлы JSON с помощью генераторов данных.

Генерация мира

Команды

Эти страницы помогут вам с библиотекой Brigadier от Mojang, которая позволяет создавать команды со сложными аргументами и действиями.

События (Ивенты)

Сущности

Жидкости

Миксины

Эти страницы помогут вам в использовании библиотеки Mixin от SpongePowered, которая является очень сложной темой. Мы рекомендуем вам внимательно прочитать эти страницы.

КАК СОЗДАВАТЬ ПЛАГИНЫ МАЙНКРАФТ НЕ УМЕЯ ПРОГРАММИРОВАТЬ?

Разное

Некоторые из этих страниц в настоящее время находятся в стадии написания, некоторые могут быть недоступны.

Yarn

Помощь в разработке Fabric

Процедура изменения Fabric — или как сделать так, чтобы предложенное Вами изменение внесли (или наоборот!)

FabLabs — тестовая площадка для макетирования новых возможностей Fabric без создания pull-запроса

Ищете старые туториалы? Вероятно, они были заархивированы. Вы можете просмотреть архивные страницы здесь.

ru:tutorial:introduction

Table of Contents

Введение в разработку модов с помощью Fabric

Это руководство призвано объяснить и показать некоторые вещи, которые вы сможете использовать при разработке модов. Чтобы создавать моды для Minecraft, вам часто придётся сталкиваться с написанием необычного кода, который поймёт Minecraft Так как изменения в Minecraft превносятся достаточно быстро, он, по своей сути, не предназначен для модификаций.

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

Mixin’ы временами работают ненадёжно, нестабильно, и даже могут вызывать конфликты. Тем не менее, некоторые базовые функции уже встроены в Fabric API . Если нужной вам функции в Fabric API нет, зачастую для этого можно найти сторонние библиотеки. Практически в любой ситуации рекомендуется использовать отличающиеся от Fabric API библиотеки вместо того, чтобы импортировать Mixin самостоятельно.

Однако, это может и не понадобиться вовсе. Да, Minecraft не предназначен для разработки модов , но тем не менее, он содержит в себе достаточно много всего, с чем можно работать без каких-либо изменений извне.

Эта статья расскажет о способах взаимодействия с Minecraft, в порядке предпочтительности.

РАЗРАБОТКА ПЛАГИНОВ МАЙНКРАФТ | Нужно ли быть для этого программистом?

Native Minecraft APIs

Если Minecraft уже позволяет вам что-то делать, не изобретайте заново колесо. Хорошим примером этого является класс “Registry”, который позволяет добавлять блоки и элементы без каких-либо изменений в код Minecraft.

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

The Fabric API

Сам Fabric, установленный в клиенте, разделен на две части.

Fabric Loader, который загружает ваш мод и вызывает вашу точку входа.
Fabric API , опциональная библиотека, которая содержит некоторые общие полезные интерфейсы.

API намеренно держится относительно небольшим, чтобы ускорить перенос Fabric на более новые версии Minecraft.

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

Сторонние API

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

Вы можете найти неполные списки сторонних библиотек на этой вики.

Mixins

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

Mixins бывают самых разных вкусов:

Добавление Интерфейсов
Callback Injectors
Redirect Injectors
Перезапись

Это не полный список, а скорее краткий обзор.

Добавление Интерфейсов

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

Читайте также:  Как добыть серебряный слиток в Майнкрафте

Одно предостережение заключается в том, что сигнатура функции (имя + типы параметров), которую вы вводите, должна быть уникальной. Поэтому, если вы используете общие типы параметров, обязательно дайте ему уникальное имя.

Callback Injectors

Callback injectors позволяет добавлять хуки обратного вызова к существующим методам, а также к конкретным вызовам методов внутри этого метода. Они также позволяют перехватывать и изменять возвращаемое значение метода, а также возвращать его раньше. Инъекции обратного вызова могут стекаться и поэтому вряд ли вызовут конфликты между модами.

Redirect Injectors

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

Перезапись

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

ru/tutorial/introduction.txt · Last modified: 2022/02/11 07:11 by furnygo

Page Tools

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 4.0 International

Источник: fabricmc.net

Nukkit — много­обе­щающий ядрё­ный аналог PocketMine

Nukkit — это интересный проект, который, на мой взгляд, вполне имеет все шансы превратиться в интересную платформу для создания серверов для Minecraft Pocket Edition / Minecraft Windows 10 Edition. Об этом проекте речь пойдёт ниже, однако сначала давайте остановимся на том, какие вообще существуют платформы для создания сервера для Minecraft Pocket Edition

Серверные платформы для Minecraft Pocket Edition

Официальной платформы для создания сервера Minecraft Pocket Edition / Minecraft Windows 10 Edition не существует. Теоретически, Вы можете запустить на компьютере Minecraft Windows 10 Edition (или попытаться запустить Minecraft Pocket Edition на Linux) и получить такой своеобразный ванильный сервер. Но… мы же ждём от сервера чего-то большего?!

PocketMine

В настоящее время существует, пожалуй, только один реальный способ создания сервера для MCPE — это сервер PocketMine-MP, рекомендуемая версия которого рассчитана на работу с Minecraft Pocket Edition 0.11 — т.е. безнадежно устарела. Когда выйдет версия для 0.13.0 — пока не ясно, при этом есть ещё один нюанс — платформой для проекта является php, т.е. сам сервер и плагины к нему пишутся на этом языке программирования.

Конечно, php имеет ряд преимуществ: он достаточно прост в освоении и очень удобен… для создания сайтов. Он для этого и разрабатывался, поэтому делать на нём что-то ещё, на мой взгляд совсем не логично. На мой взгляд, начиная разработку сервера для любой версии Майнкрафт, нельзя не забывать о bukkit’е — под эту платформу, написано (на Java) огромное множество плагинов. Система, которая позволит их достаточно просто переносить будет иметь явные преимущества перед всеми остальными. Лично мне совсем не хочется переносить какие-то из своих плагинов на PocketMine, а вот если бы он был написан на Java, то перенести практически любой плагин было бы достаточно просто и я с удовольствием этим бы занялся.

Dragonet

Можно попытаться создать сервер и на платформе Dragonet. Это тоже интересный проект: такой своеобразный комбайн, который не только содержит сразу два протокола — классический и для карманного Майнкрафта, но и предполагает запуск различных типов плагинов: Bukkit-плагины, Sponge-плагины и плагины на JavaScript (также планируется поддержка php-плагинов от PocketMine). Звучит впечатляюще, но у меня такой зоопарк доверия не вызывает. Возможно я не прав, но в любом случае к моменту, когда Dragonet превратится в стабильный пригодный для использования продукт у меня будет возможность пересмотреть свое мнение. И я буду только рад, если оно изменится.

MiNET

Серверная платформа, создаваемая с использованием C#. Пока для неё нет плагинов (по крайней мере в открытом доступе найти их не удалось), однако у системы похоже есть одно огромное преимущество: судя по всему по всему проект пользуется поддержкой проекта Hypixel, а такая поддержка многого стоит. Один из тестовых серверов предлагаемый проектом — это как раз сервер Hypixel для Minecraft Pocket Edition.

Сервер: pe.hypixel.net — почему-то мой скин распространился на других игроков.

Сервер: pe.hypixel.net — почему-то мой скин распространился на других игроков.

Я с удовольствием попробовал сыграть на этом сервере и хочу отметить, что это была полноценная игра (не без каких-то недочетов). Мобы, полноценный генератор миров, лодки, рельсы и вагонетки — вот список того, что не поддерживает платформа. Но уже и без этого можно обеспечить работу сервера с мини-играми.

Читайте также:  Как изменить музыку в Майнкрафте через ресурспак

ProtocolSupport — плагин для Spigot

Плагин ProtocolSupport для Spigot, разрабатываемый «отечественным производителем» — известным плагинотворцем Shevchik‘ом. На мой взгляд, это тоже очень интересное направление, которое вполне может дать результат, у которого будет громадное количество преимуществ перед другими проектами. Фактически Spigot+ProtocolSupport, позволят использовать огромнейшее количество плагинов на сервере Minecraft Pocket Edition. На текущий момент времени, как я понимаю, разработку пока ещё нельзя считать завершенной, при этом, тестовый сервер проекта работает очень быстро и по выглядит значительно лучше чем сервер Dragonet (нету глюков с двойной травой и цветами). Это как раз тот проект, за которым я обязательно буду следить и ждать момента, когда на его основе можно будет создать полноценный сервер для MCPE.

Nukkit

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

PocketMine + Bukkit = ?

Проект Nukkit появился относительно недавно: первые строки кода на github были размещены 23 мая, и на текущий момент он всё ещё далек от завершения. Сейчас уже можно попробовать его в действии, правда, у меня с этим возникли проблемы.

Nukkit написан полностью на Java, при этом, судя по всему, он хоть и писался под «впечатлением» от PocketMine — разработчик отдельно отмечает некоторую схожесть проектов, но безусловно у него есть и схожесть с BukkitAPI. По крайней мере, мне показалось, что без bukkit’а тут не обошлось. На мой взгляд у тех, у кого есть опыт разработки плагинов для bukkit, изучить особенности Nukkit будет достаточно просто.

Всё очень похоже и логично. И это безусловно очень большое преимущество. Автор обещает большую скорость и стабильность сервера, по сравнению с PocketMine. Кроме того, с учетом, схожести с PocketMine, автор говорит о том, что тем кто создавал плагины на php будет довольно просто переписать их на Java. И это безусловно огромный плюс.

Я попробовал запустить сервер. Сначала у меня не получалось — при первой попытке удалось запустить сервер, подсоединиться к нему и повисеть в воздухе — почему-то не прогрузилась карта (возможно она просто не сгенерировалась). Но после того как перекачал билд сервера (разработка идёт полным ходом — новые версии, пусть пока нестабильные, выходят каждый день) всё заработало.

Ну куда же без команды /say :)

Ну куда же без команды /say 🙂

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

Первый плагин для Nukkit

Screenshot_2015-12-06-11-09-02

Естественно, я сразу же решил попробовать написать плагин. И у меня это получилось с первой попытки! Да и со второй тоже. Я буквально за несколько минут написал два очень простых плагина для Nukkit. Первый я назвал просто NoSteve, он призван запретить вход на сервер игрокам с именем Steve — ибо на MCPE такое стоит по умолчанию.

Второй, — это порт ранее написанного (тоже очень просто) плагина SlashConsole, который я когда-то написал для Bukkit. Если говорить о минусах проекта, то тут есть один очень важный: отсутствие достаточной информационной поддержки. Фактически, это своеобразная вещь в себе.

Как о нём узнают сейчас люди — я не знаю, похоже вся информация распространяется от человека к человеку — по крайней мере так было со мной. У проекта нет ни форума ни какого-то сайта, на котором все заинтересованные могли бы делиться опытом. И если эта ситуация не изменится — это будет самоубийством хорошего начинания. Вселяет надежду мысль, что авторы проекта это понимают: похоже в скором времени можно ожидать открытия сайта — доменные имена уже зарезервированы. Сейчас же скачать и почитать о проекте можно только на GitHub’е, там же можно найти ссылку и скачать сам сервер Nukkit . Обсуждение же возможно пока только в виде комментариев к добавленному коду либо в чате проекта. Скачать плагины:

Источник: minecraftmain.ru

Bukkit

Bukkit — глобальная серверная модификация, предоставляющая API для взаимодействия с игровым миром и созданная для упрощения создания плагинов к SMP-серверу. Bukkit был призван заменить hMod. Существуют некоторое сходство между этими модами, но плагины, написанные для hMod, несовместимы с Bukkit и должны быть переписаны с использованием Bukkit API. Bukkit являлся самой используемой системой управления плагинами.

В феврале 2012 года разработчики Bukkit официально влились в команду Mojang.

В августе 2014 года команду Bukkit покинули практически все разработчики, в том числе глава проекта EvilSeph [1] , а уже 3 сентября один из бывших разработчиков послал DMCA Takedown, тем самым добившись блокировки проекта. С тех пор скачать исходники и сборки Bukkit’а с официального сайта нельзя.

Читайте также:  Как построить компота в Майнкрафте

Позже команды разработчиков Spigot, Cauldron и Bukkit объединили усилия в новой универсальной серверной платформе Sponge .

  • 1 Установка
  • 1.1 Windows
  • 1.2 Linux
  • 1.3 OS X

Установка

Windows

  1. Скачиваем сервер, пусть данный пример будет на версии 1.12;
  2. Перемещаем jar-архив в папку для сервера
  3. Открываем блокнот или другой текстовый редактор
  4. Вписываем туда, подставив название скачанного jar файла. Например для версии 1.12 текст в блокноте будет выглядеть так:

java -jar craftbukkit-1.12.jar

craftbukkit-1.12.jar — имя скачанного файла.

или (для 64-битной Java)

  1. Вписываем туда, подставив имя файла:

«%ProgramFiles%Java\binjava.exe» -Xmx1024M -jar craftbukkit-.jar

или (для 32-битной Java)

«%ProgramFiles(x86)%Java\binjava.exe» -Xmx1024M -jar craftbukkit-.jar

  • Для 32-битной системы или 64-битной системы и 64-битной версии Java пишем это:
  • Для 64-битной системы и 32-битной версии Java пишем это:

Или создаём в любом месте скрипт для упрощения запуска:

  • Для 32-битной системы или 64-битной системы и 64-битной версии Java:
  • Для 64-битной системы и 32-битной версии Java:
  • Если не помогло, есть вариант:
  • Также, есть пользовательский скрипт:

Данный скрипт перезапускает сервер, если пользователь нажал на клавишу, а не закрыл консоль.

  • Если не работает — переустановите Java.
  • Если не помогло — напишите полный путь вместо «java».
  • Внимание! Для корректной работы любого скрипта нужно установить соответствующую версию Java! На 32-битную систему можно установить только 32-битную версию Java!

Linux

  1. Скачиваем сервер
  2. Перемещаем jar-архив в папку для сервера
  3. Сервер готов, для запуска переходим в папку сервера и отдаем команду java -Xincgc -Xmx1G -jar craftbukkit-.jar .

Желательно изменить опцию «-Xmx1G» в соответствии с количеством свободной оперативной памяти. Объём памяти должен быть больше 1 гигабайта, то есть не «-Xmx2G» или «-Xmx5600M»

При желании можно повесить эту команду на кнопку на панели или в меню:

sh -c «cd ~/.minecraft_server/ java -Xincgc -Xmx1G -jar craftbukkit-.jar»

Или создать в любом месте скрипт для упрощения запуска:

#! /bin/sh cd ~/.minecraft_server/ java -Xincgc -Xmx1G -jar craftbukkit-.jar exit 0
Скрипт нужно сделать исполняемым: chmod a+x start.sh и можно запускать командой sh start.sh .

Или даже прописать алиас, добавив где-нибудь в ~/.bashrc

alias mcserver=’cd ~/.minecraft_server/ java -Xincgc -Xmx1G -jar craftbukkit-.jar’
После этого сервер можно будет запускать командой mcserver .

Возможно, Вы также захотите использовать init-скрипт для фоновой работы сервера.

OS X

  1. Открываем терминал и пишем этот код для версии 1.12:

cd ~/Desktop mkdir «Bukkit Server» cd ~/Desktop/Bukkit Server curl -O https://cdn.getbukkit.org/craftbukkit/craftbukkit-1.12.jar mv craftbukkit-.jar CraftBukkit.jar

также можно просто скачать нужную версию здесь, и поместить в нужную вам папку. В следующей команде замените [RAM] на количество оперативной памяти, которое будет выделено на запуск и дальнейшую работу сервера (512M — 512 МБ, 1536M — 1536 МБ, 1G — 1 ГБ, 2G — 2 ГБ, 4G — 4ГБ, и.т.д.):

echo «cd ~/Desktop/Bukkit Server java -Xincgc -Xmx[RAM] -jar CraftBukkit.jar» > ../LaunchServer.command chmod +x LaunchServer.command
2. Сервер готов, для запуска используем файл LaunchServer.command (будет лежать на рабочем столе).

Управление

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

Bukkit предоставляет все те же команды, что и оригинальный сервер Minecraft, но также имеет и три собственные особые команды:

Команда Описание Использование Запись в Permissions Доступ по умолчанию
version Показывает версию CraftBukkit этого сервера. version bukkit.command.version Всем
plugins Выводит список установленных плагинов. plugins bukkit.command.plugins Всем
reload Останавливает и снова запускает все плагины на сервере. reload bukkit.command.reload Операторам

Прочитать о настройке прав более подробно можно на вики проекта.

Рекомендуемые плагины

  • WorldEdit — инструменты для редактирования мира
  • WorldGuard — манипуляции с регионами
  • CommandBook — дополнительные команды
  • LWC — для ограничения доступа к сундуку, дверям, кнопкам, рычагам (сильно нагружает сервер, требуется мощная машина)
  • PermissionsEX — управление правами игроков
  • BorderGuard — ограничить размер мира для пользователей
  • DynMap — создание карты мира в браузере
  • MobArena — PvE арена
  • CoreProtect — Просмотр изменения блоков в мире для отлова нарушителей и отката действий игроков

Остальные плагины

Интересные факты

  • Двое из разработчиков Bukkit (Натан Адамс, Натан Гилберт) — красно-зеленые дальтоники.
  • Натан Адамс позже присоединился к Mojang под именем Dinnerbone.

Примечания

Ссылки

  • Официальный сайт
  • Плагины (англ. яз.)
  • Плагины с системой поиска на plugin.bukkit.org (англ. яз.)
  • Плагины с системой поиска на dev.bukkit.org (англ. яз.)
  • Переведенные на русский язык плагины

В данной статье используются материалы из статьи «Bukkit» с вики-сайта Minecraft Wiki, расположенного на Фэндоме, и они распространяются согласно лицензии Creative Commons Attribution-NonCommercial-ShareAlike 3.0. Авторы статьи.

Источник: wiki-minecraft.ru