VFXWeaver API
Кинематографическая библиотека VFX для Minecraft (Fabric и NeoForge): постобработка экрана, тряска камеры, оверлеи мира и сущностей, внутриигровые изображения на экране и кликабельные окна с картинками на рабочем столе — из датапаков или Java API.
- Загрузчики
- FabricNeoForge
- Скачиваний на Modrinth
- 1,2 тыс.
- Подписчиков на Modrinth
- 19
- версий
- 76
- Обновлён
- 14 октября 202614 окт.
- Опубликован
- в 2026
Коротко о моде
Нужен в игре; на сервере — по желанию
Клиентская библиотека/API VFX-эффектов для Minecraft 26.2, 26.1.x и 1.21.11 (Fabric и NeoForge). Кинематографичные эффекты «из коробки» — постобработка экрана, тряска камеры, оверлеи на блоках и сущностях, изображения на экране и настоящие окна с картинками на рабочем столе — всё это можно вызывать из чат-команд, из датапаков или программно из собственного мода через компактный Java API.
Автор: Artition · Лицензия: MIT
Что умеет
- 30+ эффектов постобработки, отрисовываемых через ping-pong FBO (полноэкранные попиксельные шейдеры): хроматическая аберрация, цветокоррекция, искажение, вмятина, градиентная карта, постеризация, размытие, пикселизация, выделение оттенка, виньетка, вспышка экрана, размытие в движении, bloom, зерно плёнки, строчная развёртка, глубина резкости, letterbox, инверсия, вихрь, линии скорости, сдвиг среза, шумовое искажение, соляризация, двоение, веки, радужная шторка, цифровой глитч, VHS, ударная волна, послеизображение, стоп-моушен и текстурные узоры мира/неба.
- Изображения на экране —
screen_imageрисует картинку (PNG из ресурспака с необязательной анимацией.mcmetaили изображение, зарегистрированное модом) поверх кадра игры на выбранном слое экрана: под GUI, над рукой или поверх всего, включая чат и хотбар. - Окна с картинками на рабочем столе —
window_create/window_controlоткрывают настоящее безрамочное, прозрачное, клики-насквозь окно на рабочем столе и показывают в нём картинку; его можно двигать, менять размер, плавно скрывать и менять заголовок по имени. Это не постобработка и не геометрия мира. - Эффекты камеры — тряска на основе симплекс-шума с плавной огибающей, наклон (dutch angle), модификатор FOV.
- Оверлеи мира —
block_tint/block_outline(геометрия в мировом пространстве),light_beam,pulse_ring,guide_line,particlesиblock_chain. - Эффекты сущностей —
entity_tint/entity_outline/entity_displace, применяемые к сущностям по UUID (второй проход отрисовки модели, с учётом текстуры). - Эффекты, задаваемые датапаком — обычный JSON, без кода. Ключевые кадры анимации, кривые сглаживания, привязки к миру/камере/игроку, математические выражения, коллекции, звуки.
- Триггеры сервер → клиент — эффекты, запускаемые серверной командой или из собственного мода по сети.
- Публичный Java API для других модов (
VFXAPI), включаяregisterImageдля показа изображения, которое отрисовывает ваш мод.
Требования
| Minecraft | 26.2, 26.1.x, 1.21.11 |
| Загрузчик | Fabric (>= 0.18.4 на 26.x / >= 0.17.3 на 1.21.11) или NeoForge |
| Fabric API | требуется на Fabric |
| Java | 25+ |
Типы эффектов
Постобработка экрана
| Эффект | Что делает |
|---|---|
chromatic_aberration | Разделение RGB-каналов к краям экрана |
color_grade | Насыщенность / контраст / яркость + оттенок |
distortion | Бочкообразное / подушкообразное искажение экрана |
dent | Локальная радиальная (или линейная) деформация вокруг точки / отрезка |
gradient_map | Отображает яркость в двухцветный градиент (линейный или с жёстким порогом) |
posterize | Уменьшает число цветов (чистая квантизация) |
blur | Двухпроходное гауссово размытие |
pixelate | Пикселизация |
hue_isolation | Оставляет один оттенок, остальное становится серым |
vignette | Затемняет / окрашивает края экрана |
screen_flash | Полноэкранный цветной оверлей |
motion_blur | Направленное размытие от скорости вращения камеры |
bloom | Свечение вокруг ярких участков |
film_grain | Анимированное зерно плёнки |
scanlines | Полосы CRT, плывущие по экрану |
depth_of_field | Тилт-шифт: резкая полоса, размытие вдали от неё |
letterbox | Кинематографичные полосы сверху/снизу |
invert | Инвертирует экран |
vortex | Закручивает пиксели в воронку вокруг точки |
speed_lines | Линии скорости от краёв экрана к точке, случайной длины у каждой линии |
slice_shift | Прямая линия разрезает кадр; половины сдвигаются вдоль неё |
noise_warp | Анимированное поле value-шума искажает картинку текучими пятнами |
solarize | Яркие пиксели инвертируются, тёмные остаются нетронутыми |
double_vision | Две призрачные копии кадра с медленным дрейфом |
eyelids | Две мягкие изогнутые тёмные створки въезжают сверху и снизу |
iris_wipe | Переход «радужная диафрагма» как в старом кино: всё за пределами круга становится чёрным |
digital_glitch | Разрывы полос + RGB-расслоение залпами |
vhs | Изношенная кассета: полоса трекинга, дрожание, растекание цвета, выцветший контраст |
shockwave | Кольцо преломления расходится волной от точки |
afterimage | Затухающее эхо истории — шлейфы остаются в буфере обратной связи |
stop_motion | Картинка обновляется лишь несколько раз в секунду |
surface_pattern | Фигура/текстура, проецируемая на поверхность за пикселем (слой экрана 0) |
sky_pattern | Фигура/текстура, нарисованная на куполе неба |
Изображения на экране и окна рабочего стола
| Эффект | Что делает |
|---|---|
screen_image | Рисует картинку поверх кадра игры на выбранном screen_layer |
window_create | Открывает окно с картинкой на рабочем столе, пропускающее клики |
window_control | Двигает, меняет размер, плавно скрывает и переименовывает существующее окно по имени |
Камера
| Эффект | Что делает |
|---|---|
camera_shake | Тряска на основе шума Симплекса с плавной огибающей |
camera_roll | Наклон в стиле голландского угла с опциональным синусоидальным покачиванием |
fov_modifier | Изменение угла обзора |
Оверлеи мира — block_tint, block_outline, light_beam (мягкий вертикальный столб), pulse_ring (расширяющееся кольцо), guide_line (пунктирная дуга параболы), particles (ванильные частицы в анимированных фигурах), block_chain (настоящие связи блок-моделей) Эффекты сущностей — entity_tint, entity_outline (по UUID), entity_displace (смещённое эхо по вершинам)
Быстрый старт
Все изменяющие команды требуют прав оператора (/vfx list доступна всем).
/vfx play vfxweaver:screen_flash
/vfx play vfxweaver:speed_lines {count:80, length:0.8, seed:"t * 2.0"}
/vfx play vfxweaver:screen_image {texture:"vfx_demos:textures/vfx/screen_anim", size_w:0.3, size_h:0.3}
/vfx playat vfxweaver:block_outline 100 64 200
/vfx playentity vfxweaver:entity_outline @e[type=!player,distance=..10]
/vfx stop vfxweaver:speed_lines
/vfx set vfxweaver:motion_blur {intensity:0.8} # живая замена параметра у работающего эффекта
/vfx listЭффекты датапаком (без моддинга)
Положи JSON в `data//vfx/.json, выполни /reload, и id эффекта будет :`:
{
"type": "speed_lines",
"duration": 60,
"easing": "ease_out_cubic",
"params": {
"count": 80,
"length": { "expr": "0.4 + 0.4 * t" },
"seed": { "expr": "t * 2.0" },
"intensity": 1.0
}
}- Анимированные параметры через ключевые кадры (
t = 0..1— прогресс) или математические выражения от состояния игрока (здоровье, голод, скорость, уровень освещения, время суток, позиция). - Привязки к миру/камере/игроку (
bind: screen_x,bind: proximity, ...), чтобы эффекты следовали за миром, а не за экраном. - Коллекции — проигрывание нескольких дочерних эффектов с индивидуальными задержками.
- Определения автоматически синхронизируются с клиентами при входе и после
/reloadна выделенных серверах.
Java API (для других модов)
Статическая точка входа dev.vfxweaver.api.VFXAPI — по одной строке на вызов.
// Сервер → клиент
VFXAPI.sendEffect(serverPlayer,
Identifier.fromNamespaceAndPath("vfxweaver", "screen_flash"),
Map.of("intensity", 0.8F), null);
// С привязкой к миру (эффекты блоков/сущностей следуют за позицией)
VFXAPI.sendEffect(player, effectId, somePos, Map.of(), null);
// Локально на клиенте (без пакета)
VFXAPI.playEffect(Identifier.fromNamespaceAndPath("vfxweaver", "camera_shake"),
20, Map.of("amplitude_x", 0.2F), null);
// Показать изображение, которое рендерит твой мод (пиксели ARGB), везде, где принимается id текстуры
VFXAPI.registerImage(Identifier.fromNamespaceAndPath("mymod", "textures/hud/icon"),
width, height, argbPixels);
// Остановка / живая настройка
VFXAPI.sendStop(player, effectId);
VFXAPI.sendSetParam(player, effectId, "intensity", 0.3F);
VFXAPI.sendKeyframe(player, effectId, "intensity", 10, 1.0F, EasingType.EASE_OUT_CUBIC);Сетевой слой (vfxweaver:vfx_trigger) версионирован по протоколу; клиент молча игнорирует пакеты с несовместимой версией. Полный API, структура пакетов и доступ к реестру определений описаны в docs/API.md в репозитории.
Документация
Команды, параметры эффектов, формат датапака, привязки — полное руководство по использованию в репозитории проекта. Собери сам через ./gradlew build (требуется JDK 25) или скачай готовый jar во вкладке Releases.
- Репозиторий: https://github.com/Artition/VFX-Weaver
- Документация: https://artition.github.io/VFX-Weaver/
Частые вопросы
Как установить VFXWeaver API?
Установите Fabric под свою версию Minecraft, скачайте VFXWeaver API под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть VFXWeaver API?
У VFXWeaver API есть сборки для Minecraft 1.21.11–26.2.
Нужен ли VFXWeaver API на сервере?
Нужен в игре; на сервере — по желанию