- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 590
- Подписчиков на Modrinth
- 0
- версии
- 3
- Обновлён
- 23 июля 202623 июл.
- Опубликован
- в 2026
Коротко о моде
Работает и в игре, и на сервере — ставьте, где нужен
Seam
Общие классы и ресурсы для Perspective и Luminance.
Seam в настоящее время находится в разработке
Некоторые функции могут измениться в процессе разработки.
Пожалуйста, сообщайте об ошибках и предлагайте новые функции на нашей странице Issues.Кроме того, вы можете сообщить нам об этом в канале
#bug reportsна моём сервере Fluxer или Discord, и мы создадим issue за вас.
Вы также можете использовать канал#modding chat, если вам нужна помощь!
Если вы игрок, вам не нужно устанавливать это, если только какой-либо мод не попросил вас об этом. Большинство модов, использующих Seam, должны включать его в комплекте; вы всё ещё можете установить Seam отдельно, и Fabric будет использовать самую актуальную версию.
Следующая информация предназначена для разработчиков модов, чтобы помочь им понять, как использовать Seam.
События
Seam содержит несколько реестров событий, чтобы упростить разработку.
Они были в первую очередь разработаны для Luminance и Perspective, однако другие моды также могут их использовать!
Это описание не является исчерпывающим, рекомендую посмотреть наш исходный код!
Клиентские события
Следующие реестры клиентских событий находятся в классе dev.dannytaylor.perspective.seam.client.events.SeamClientEvents:
CustomBadges- Рекомендуется использовать функцию
SeamClientEvents.registerCustomBadge(Identifier badgeId, int outlineColor, int fillColor, int textColor);для регистрации кастомных значков, см. пример в разделеModMenu Badgesниже.
- Рекомендуется использовать функцию
ModBadges- Рекомендуется использовать функцию
SeamClientEvents.registerModBadge(String modId, Identifier customBadgeId);для регистрации значков модов, см. пример в разделеModMenu Badgesниже.
- Рекомендуется использовать функцию
IconOverrides- Рекомендуется использовать функцию
SeamClientEvents.registerIconOverride(String modId, IconOverride iconOverride);для регистрации переопределений иконок.
- Рекомендуется использовать функцию
ProfiledDebugEntries- Рекомендуется использовать функцию
SeamClientEvents.registerProfiledDebugEntry(Identifier identifier, DebugScreenEntry debugScreenEntry, DebugScreenProfile profile, DebugScreenEntryStatus status);для регистрации профилированных отладочных записей.
- Рекомендуется использовать функцию
ClientResourceReloaders- Map из
net.minecraft.resources.Identifier,net.minecraft.server.packs.resources.PreparableReloadListener, который регистрируется при инициализации клиента и выполняется при перезагрузке клиентских ресурсов.
- Map из
AfterClientResourceReload- Map из
net.minecraft.resources.Identifier,java.lang.Runnable, который выполняется после перезагрузки клиентских ресурсов.
- Map из
BeforeGuiRender- Map из
net.minecraft.resources.Identifier,dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.GuiRender, который рендерится перед gui.
- Map из
AfterGuiRender- Map из
net.minecraft.resources.Identifier,dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.GuiRender, который рендерится после gui.
- Map из
BeforeGameRender- Map из
net.minecraft.resources.Identifier,java.lang.Runnable, который выполняется перед рендером игры.
- Map из
AfterPanoramaRender- Map из
net.minecraft.resources.Identifier,dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.PanoramaRender, который рендерится после панорамы меню.
- Map из
AfterVanillaPostEffectRender- Map из
net.minecraft.resources.Identifier,dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.GameRender, который рендерится после ванильного пост-эффект шейдера.
- Map из
BeforeUiRender- Map из
net.minecraft.resources.Identifier,dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.GameRender, который рендерится перед текущим экраном.
- Map из
AfterUiBackgroundRender- Map из
net.minecraft.resources.Identifier,dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.GameRender, который рендерится после фона текущего экрана.
- Map из
AfterUiRender- Map из
net.minecraft.resources.Identifier,dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.GameRender, который рендерится после всего.
- Map из
OnResized- Map из
net.minecraft.resources.Identifier,dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.OnResized, который выполняется при изменении размера окна.
- Map из
OnMouseScroll- Map из
net.minecraft.resources.Identifier,dev.dannytaylor.perspective.seam.client.events.SeamClientCallables.OnMouseScroll, который выполняется при прокрутке мыши.
- Map из
OnMouseButton- Map из
net.minecraft.resources.Identifier,dev.dannytaylor.perspective.seam.client.events.SeamClientCallables.OnMouseButton, который выполняется при нажатии кнопки мыши.
- Map из
OnJoinWorld- Map из
net.minecraft.resources.Identifier,java.lang.Runnable, который выполняется при подключении клиента к миру.
- Map из
OnLeaveWorld- Map из
net.minecraft.resources.Identifier,java.lang.Runnable, который выполняется при выходе клиента из мира.
- Map из
OnStartItemUse- Map из
net.minecraft.resources.Identifier,dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.UseItem, который выполняется при использовании предмета (только на стороне клиента).
- Map из
OnFinishItemUse- Map из
net.minecraft.resources.Identifier,dev.dannytaylor.perspective.seam.client.events.SeamClientRunnables.FinishUsingItem, который выполняется при завершении использования предмета (только на стороне клиента).
- Map из
Панель сообщений
Seam добавляет панель сообщений в верхней части экрана по центру. О том, как отправлять сообщения с сервера, см. в разделе «Общие события».
Вы можете обновлять панель сообщений (на стороне клиента), используя следующую функцию:dev.dannytaylor.perspective.seam.client.events.SeamClientEvents.sendToMessageBar(Component.literal("this is an example message!"));
Переопределения иконок
Вы можете зарегистрировать собственное переопределение иконки с помощью Seam. Это автоматически обновит иконку вашего мода в Mod Menu. Если вы используете это с другим модом (например, Sodium), вам придётся реализовать это вручную.
Вот пример того, как зарегистрировать переопределение иконки, которое меняется только 1 апреля.
import net.fabricmc.api.ClientModInitializer;
import net.minecraft.resources.Identifier;
import dev.dannytaylor.perspective.seam.client.events.SeamClientEvents;
import dev.dannytaylor.perspective.seam.common.util.DateHelper;
import dev.dannytaylor.perspective.seam.client.events.IconOverride;
public class MyClientInitializer implements ClientModInitializer {
@Override
public void onInitializeClient() {
SeamClientEvents.registerIconOverride("modId", new IconOverride(Identifier.parse("modid:textures/icon2.png"), DateHelper::isAprilFools));
}
}Значки ModMenu
Вы можете зарегистрировать собственные значки Mod Menu с помощью Seam.
Для регистрации собственных значков Mod Menu не требуется установленный Mod Menu.
Вот пример того, как зарегистрировать собственный значок Mod Menu.
import net.fabricmc.api.ClientModInitializer;
import net.minecraft.resources.Identifier;
import dev.dannytaylor.perspective.seam.client.events.SeamClientEvents;
public class MyClientInitializer implements ClientModInitializer {
public static final Identifier EXAMPLE_BADGE = SeamClientEvents.registerCustomBadge(
Identifier.parse("modid:example_badge"), // badge identifier
0xFFAAAAAA, // outline colour
0xFF808080, // fill colour
0xFFFFFFFF // text colour
);
@Override
public void onInitializeClient() {
SeamClientEvents.registerModBadge("modId", EXAMPLE_BADGE);
}
}_Также вам нужно добавить следующий ключ в ваш языковой файл (`/assets//lang/en_us.json`)._
{
"gui.modid.custom_badge.example_badge": "Example"
}Формат языкового ключа: `gui..custom_badge.`.
Встроенные значки
Seam содержит два встроенных значка.
Perspective
Используется модами Perspective, указывая на то, что они являются частью Perspective.
Luminance
Следует использовать модам, которые используют Luminance, указывая на поддержку шейдеров luminance.
Вот пример того, как добавить значок luminance в ваш мод.
import net.fabricmc.api.ClientModInitializer;
import dev.dannytaylor.perspective.seam.client.events.Badges;
public class MyClientInitializer implements ClientModInitializer {
@Override
public void onInitializeClient() {
Badges.luminance("modId");
}
}Общие события
В настоящее время Seam не содержит общих реестров или реестров только для сервера.
Однако он содержит некоторые общие функции и классы.
dev.dannytaylor.perspective.seam.common.data.FabricMod хранит id мода, имя и создаёт логгер. Вы также можете отправлять сообщения в свой логгер через dev.dannytaylor.perspective.seam.common.data.log.SeamLog, указав свой FabricMod в аргументах функции (info, warn, error и debug принимают следующие аргументы: (AbstractMod mod, String message, Object... args)).
dev.dannytaylor.perspective.seam.common.events.SeamEvents содержит функции tryRun и onInitialize. Эти функции перехватывают и логируют ошибки при выполнении указанного runnable. Функции onInitialize также логируют то, что они инициализируют.
Панель сообщений
Если вы делаете клиентский мод, смотрите раздел «Клиентские события» выше. Это следует использовать для серверных модов.
Вы можете отправить сообщение в панель сообщений клиента с помощью dev.dannytaylor.perspective.seam.common.events.SeamEvents.sendToMessageBar(ServerPlayer player, Component message);.
Также можно отправить сообщение с настраиваемой длительностью в тиках с помощью dev.dannytaylor.perspective.seam.common.events.SeamEvents.sendToMessageBar(ServerPlayer player, Component message, float ticks);.
Лицензировано под LGPL-3.0
Частые вопросы
Как установить Seam?
Установите Fabric под свою версию Minecraft, скачайте Seam под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Seam?
У Seam есть сборки для Minecraft 1.21.11.
Нужен ли Seam на сервере?
Работает и в игре, и на сервере — ставьте, где нужен