Если вы хотите начать разработку модов с использованием Fabric, возможно, некоторые статьи могут вас заинтересовать.
Подготовка
Эти страницы помогут вам настроить среду разработки и полуавтоматические выпуски.
Основы
Эти страницы являются обязательными для чтения при разработке модов. Если вы новичёк, то рекомендуется прочитать следующее.
Терминология
Инструменты для разработки
Продвинутым
Предметы
Блоки
Эти страницы помогут вам создать блоки, хранить предметы и данные в блоках, а также создавать модели и состояния блоков.
Генерация данных
Эти страницы помогут вам с Fabric Data Generation API, который генерирует файлы JSON с помощью генераторов данных.
Генерация мира
Команды
Эти страницы помогут вам с библиотекой Brigadier от Mojang, которая позволяет создавать команды со сложными аргументами и действиями.
События (Ивенты)
Сущности
Жидкости
Миксины
Эти страницы помогут вам в использовании библиотеки Mixin от SpongePowered, которая является очень сложной темой. Мы рекомендуем вам внимательно прочитать эти страницы.
Майнкрафт 1.17 Fabric | Как исправить ошибку на Tlauncher
Разное
Некоторые из этих страниц в настоящее время находятся в стадии написания, некоторые могут быть недоступны.
Yarn
Помощь в разработке Fabric
Процедура изменения Fabric — или как сделать так, чтобы предложенное Вами изменение внесли (или наоборот!)
FabLabs — тестовая площадка для макетирования новых возможностей Fabric без создания pull-запроса
Ищете старые туториалы? Вероятно, они были заархивированы. Вы можете просмотреть архивные страницы здесь.
ru:tutorial:side
Table of Contents
Терминология серверной и клиентской сторон
Minecraft использует модель клиент-сервер, то есть пользователи устанавливают игровой клиент и подключаются к серверу, чтобы играть. Fabric позволяет модам работать либо на клиенте Minecraft, либо на сервере Minecraft, а также на обоих одновременно.
Понятие клиент/сервер в Minecraft неоднозначно и может относиться как к физической, так и к логической сторонам. Термины клиент/сервер могут использоваться для различения различных дистрибутивов Minecraft (клиент Minecraft и выделенный сервер Minecraft), которые называются «физическими» сторонами. Однако клиент Minecraft содержит собственный интегрированный сервер для одиночной игры и сеансов локальной сети, а это означает, что клиент Minecraft также содержит логику сервера. Следовательно, клиент/сервер также может использоваться для различения частей игровой логики, которые называются «логическими» сторонами.
Для обоих типов сторон есть «клиент» и «сервер». Однако логический клиент не эквивалентен физическому клиенту, и логический сервер также не эквивалентен физическому серверу. Вместо этого логический клиент размещается на физическом клиенте, а логический сервер размещается либо на физическом сервере, либо на физическом клиенте.
ЧТО ТАКОЕ СОЗДАНИЕ МОДОВ (Fabric)
Логические стороны занимают центральное место в архитектуре обоих дистрибутивов Minecraft. Поэтому понимание логических сторон жизненно важно для любой разработки модов с помощью Fabric.
Физические стороны или среда относятся к двум дистрибутивам (jar) Minecraft, клиенту (то, что запускает ванильный лаунчер) и серверу (бесплатная загрузка доступна на https://minecraft.net). Физическая сторона относится к тому, какой код доступен в текущей среде.
Клиентская и серверная среда представляют собой уменьшенные дистрибутивы одной и той же программы, содержащие только необходимые части кода.
В Fabric fabric.mod.json и конфигурации миксина клиент/сервер относится к среде.
Каждая физическая сторона поставляет классы, используемые ее точкой входа, и классы дата-генераторы с точкой входа «net.minecraft.data.Main».
Логические стороны
Логические стороны отвечают за собственно игровую логику. Логический клиент выполняет рендеринг, отправляет входные данные игрока на сервер, обрабатывает пакеты ресурсов и частично моделирует игровой мир. Сервер обрабатывает основную игровую логику, пакеты данных и поддерживает истинное состояние игрового мира.
Клиент поддерживает частичную копию мира сервера с копиями таких объектов, как:
net.minecraft.world.World net.minecraft.entity.Entity net.minecraft.block.entity.BlockEntity
Эти реплицированные объекты позволяют клиентам и серверам выполнять некоторую общую игровую логику. Клиент может взаимодействовать с этими объектами, в то время как сервер отвечает за их синхронизацию. Обычно, чтобы отличить объекты на логических клиентах от объектов на логическом сервере, вы обращаетесь к миру объекта и проверяете его поле isClient . Это можно использовать для выполнения авторитетных действий на сервере, таких как размещение сущностей, и для имитации действий на клиенте. Этот метод необходим, чтобы избежать десинхронизации между двумя логическими сторонами.
Подробный обзор со всех сторон
Поняв, какие есть стороны и как их различать, теперь мы можем подробно рассмотреть каждую сторону.
Физический клиент
Физический клиент — это jar-файл minecraft, загруженный программой запуска vanilla. Он содержит логический клиент и логический сервер (интегрированный сервер). Его точка входа — «net.minecraft.client.main.Main».
Физический клиент может загружать несколько разных миров, каждый в пределах отдельного логического сервера, но только по одному за раз.
По сравнению с логическим сервером физического сервера (выделенный сервер), логический сервер физического клиента (интегрированный сервер) может управляться логическим клиентом на физическом клиенте (например, F3+T перезагружает пакеты данных, а выключение клиента вместе в этим отключает интегрированный сервер). Он также может загружать пакеты ресурсов, связанные с миром, на логическом клиенте на физическом клиенте.
Весь логический клиентский контент является эксклюзивным для физического клиента, поэтому вы видите множество аннотаций среды для рендеринга, звука и другого логического клиентского кода.
Некоторые моды предназначены исключительно для физических клиентов, например, Liteloader, Optifine и PvP-клиенты Minecraft (Badlion, Hyperium).
Физический сервер
Физический сервер — это выделенный сервер Java. По сравнению с физическим клиентом у него есть только логический сервер (выделенный сервер). Его точка входа — «net.minecraft.server.MinecraftServer», и физический сервер может иметь только один мир во время работы. Если сервер должен переключиться в другой мир, требуется перезагрузка сервера.
Его логический сервер немного отличается от сервера физического клиента, поскольку всегда присутствует только один экземпляр логического сервера, когда работает физический сервер. Кроме того, логический сервер физического сервера может управляться удаленно через Rcon, имеет файл конфигурации с именем server.properties и может отправлять пакеты ресурсов сервера.
Несмотря на эти различия, большинство модов без проблем применимы к логическим серверам как физического клиента, так и физического сервера, если они не относятся к содержимому логического клиента.
Однако его функции отправки единого мира и пакета ресурсов значительно упрощают установку ванильного мода (комбинации пакета данных и пакета ресурсов) по сравнению с клиентами, поскольку ванильные физические клиенты настраиваются при автоматическом подключении к серверу.
Некоторые моды нацелены исключительно на физический сервер. Например, Bukkit и его производные (Spigot, Paper, Cauldron, гибриды Xxx-Bukkit) всегда работают на физическом сервере.
Логический клиент
Логический клиент — это интерфейс для игрока. Рендеринг (LWJGL), пакет ресурсов, обработка ввода игрока и звуки выполняются на логическом клиенте. Его нет на физическом сервере.
Логический сервер
Логический сервер — это место, где выполняется большая часть игровой логики. Пакеты данных, обновления мира, блокировка сущностей и тики сущностей, ИИ мобов, сохранение игры/мира и генерация мира происходят на логическом сервере.
Логический сервер на физическом клиенте называется «Интегрированный сервер», а логический сервер на физическом сервере называется «Выделенный сервер» (это также имя самого физического сервера).
Логический сервер работает в своем собственном основном потоке, даже на физических серверах, и имеет несколько рабочих потоков. Срок службы логического сервера зависит от физической стороны, на которой он размещен. На физическом сервере логический сервер существует до тех пор, пока выполняется процесс. На физическом клиенте может быть создано несколько логических серверов, но одновременно может существовать только один логический сервер. Новый логический сервер создается, когда игрок загружает локальное сохранение, и закрывается, когда игрок закрывает локальное сохранение.
Большинство универсальных модов нацелены на логический сервер, поэтому они могут работать как в одиночной, так и в многопользовательской игре.
Связь
Единственно правильный способ обмена данными между логическими клиентами и серверами путем обмена пакетами. Пакеты (как описано на https://wiki.vg) отправляются между логическими клиентами и логическими серверами, а не между физическими сторонами. Моды могут добавлять пакеты для передачи пользовательской информации между двумя логическими сторонами. Обмен пакетами происходит в памяти для логического клиента, подключенного к его собственному интегрированному серверу, в противном случае обмен осуществляется по сетевому протоколу.
Логические клиенты отправляют пакеты C2S (Client-To-Server) на логический сервер. Логический сервер отправляет пакеты S2C (Server-To-Client) логическим клиентам. Пакеты отправляются методом записи в сетевом потоке и принимаются вызовом метода чтения в сетевом потоке.
Подробнее о работе с сетью описано здесь.
Распространенные заблуждения о логических серверах
В большинстве случаев моды, предназначенные исключительно для физического сервера, также работают на логических серверах внутри физических клиентов.
Однако разработчики модов для физических серверов обычно имеют предположения, которые не применяются к интегрированным серверам, включая, помимо прочего:
При одном запуске игры существует только один экземпляр логического сервера.
Мир и сущности всегда должны рассчитывать игровую логику (т.е. поле isClient объекта мира всегда ложно)
Удаленное управление, отправка пакетов ресурсов и Favicon присутствуют
Эти предположения необходимо исправить, чтобы моды работали на логических серверах.
Заключение
Возможные комбинации физической и логической сторон:
Синглтон всегда существует | Существует при локальном сохранении; новый экземпляр для каждой игры |
Не существует | Синглтон всегда существует |
В конечном счете, основная путаница возникает из-за того, что логические серверы существуют на физических клиентах.
ru/tutorial/side.txt · Last modified: 2022/02/11 07:57 (external edit)
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
Fabric [1.16.5] [1.15.2] [1.14.4]
Библиотеки для запуска поддерживаемых модификаций на версиях 1.16.5, 1.15.2 и 1.14.4. Работает аналогично Forge, но при этом не поддерживают моды друг друга. Fabric находится на ранней стадии разработки и продолжает развиваться.
Скриншоты
Видео
Как установить Fabric
- Скачай файл, по ссылке расположенной ниже
- Распакуй его в .minecraftversions
- Перезапусти лаунчер
- Установи Fabric API
- Готово
Скачать Fabric
Хочешь устанавливать моды в 1 клик ?
Скачай лаунчер MisterLauncher:
Скачать сейчас
Все версии | Скачать | 300 000 | 2.3 МБ | 07 апреля 2023 |
1.16.5, 1.15.2, 1.14.4 | Скачать | 73 | 0.2 Мб | 06 сентября 2022 |
01 марта 2021, в 13:49
Как найти папку .minecraft
- Нажми на клавиатуре сочетание клавиш Win + R
- Введи в открывшемся окне %APPDATA%.minecraft и нажми кнопку OK
- Папка находится в домашней директории пользователя ~.minecraft.
- Так как в linux нет единой инструкции как открыть папку, используй универсальный способ.
- Открой Finder
- Нажми на клавиатуре сочетание клавиш Cmd + Shift + G
- Введи в открывшемся окне ~/Library/Application Support/Minecraft/
- Нажми кнопку Перейти
- Запусти Майнкрафт
- Нажми кнопку Настройки. -> Пакеты ресурсов. -> Папка с пакетами ресурсов
- Откроется папка из которой надо подняться на уровень выше
Источник: minecraftrating.ru
Fabric это кто(who?)
Мой неофициальный дискорд форума. (Тема на форуме+приглашение)
Цитаты великих людей: Естественно. Нахрена мне писать с нуля все то, что уже написано? Я скопирую, прочитаю описание, пойму, спасибо автору. Ты шо совсем нелогичный?
GoogleTan
Картошка :3
1,352 42 308
Эм, а что такое фабрик?
Uberm Sternenzelt Richtet Gott, wie wir gerichtet.
ロロロ
3,005 192 592
все за него топят
Все, это кто?
Использую ахеренные квадратики и горжусь этим! А ты дальше страдай с буквами
RareScrap написал(а):
чувак, смени уже ник с этих ущербных квадратиков
Nikitat
Как минимум западные мододелы, под фордж нихера нет
Мой неофициальный дискорд форума. (Тема на форуме+приглашение)
Цитаты великих людей: Естественно. Нахрена мне писать с нуля все то, что уже написано? Я скопирую, прочитаю описание, пойму, спасибо автору. Ты шо совсем нелогичный?
KastomKnuckles
Топить то топят, а модов как не было, так и нет
Этот лоадер позволяет создавать моды, которые будут доступны под все версии кубача, на которые есть фабрика
[IMG=’width:65px;’]https://i.imgur.com/RJsgXsB.png[/IMG]
will0376
Токсичная личность
1,825 50 491
под все версии кубача, на которые есть фабрика
Попытка сделать ахерительно огромный слой абстракции. вообщем, как с ведром.
hohserg
7,067 321 1,491
А это плохо? На ведре вроде легче разрабатывать
Новая рандомная ава топовая) Ender’sMagic 1.4b — УРААА!))
Таумкрафт 6 — ураа!
Пишу на Scala
Какая ирония: написание тутора позволяет понять тему лучше, чем его чтение
Test BB-code
ロロロ
3,005 192 592
Как минимум западные мододелы
Вот видишь, уже не все.
под фордж нихера нет
От того, что некоторые мододелы делают мини моды на фабрик, это не значит, что нормальные разрабы не делают под фордж.
Использую ахеренные квадратики и горжусь этим! А ты дальше страдай с буквами
RareScrap написал(а):
чувак, смени уже ник с этих ущербных квадратиков
Источник: forum.mcmodding.ru