Перейти к основному содержимому

FreeMinecraftModels

FreeMinecraftModels — это одновременно среда выполнения пользовательских моделей и API для разработчиков.

Текущая версия плагина больше не сводится к простой схеме «папка imports + /fmm reload». В нынешнюю кодовую базу добавлены:

  • процесс первичной настройки и напоминание при входе, пока настройка не помечена как завершённая
  • меню настройки на базе Nightbreak для установки и обновления официальных пакетов моделей
  • генерируемая папка ресурс-пака по пути plugins/FreeMinecraftModels/output/FreeMinecraftModels
  • архив ресурс-пака по пути plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip
  • расширенный набор команд для настройки, обновления контента, спавна, маскировок, реквизита и отладки
  • кости точек посадки — кости, имя которых начинается с m_, создают на модели сиденья, позволяя игрокам ездить на пользовательских сущностях
  • пользовательский JSON отображаемой модели — поместите рядом с .bbmodel соседний .json (экспорт display-item из Blockbench), чтобы переопределить внешний вид предмета в игре (требуется 1.21.4+)
  • пользовательские скриптуемые предметы — модели, у которых в YML-конфиге задано material:, становятся удерживаемыми пользовательскими предметами с полной поддержкой Lua-скриптов и 22 хуками предмета
  • админский браузер контента (/fmm admin) — инвентарь-меню, в котором админ может просматривать установленные паки, папки, модели и пользовательские предметы
  • меню крафтящихся предметов для игрока (/fmm) — инвентарь-меню со всеми крафтящимися предметами и их рецептами; клик по предмету показывает сетку 3×3 со стрелкой и итоговым предметом
  • система маскировки игроков/fmm disguise <model> [player], /fmm undisguise [player], /fmm disguiselist, плюс публичный DisguiseAPI для сторонних плагинов
  • магазин мебели — опциональный магазин на основе Vault (/fmm shop) для продажи крафтящихся реквизитов, настраивается для каждого рецепта через shopEnabled / shopPrice
  • API игрового UI — Lua-скрипты могут показывать игрокам боссбары, action-бары и заголовки
  • LocationAPI — сторонние плагины могут регистрировать детекторы подземелий и провайдеры защиты, которыми затем питаются Lua-предикаты em.location.is_in_dungeon и em.location.is_protected

Начните отсюда

Lua-скрипты

FreeMinecraftModels включает поддержку Lua-скриптов как для реквизита, так и для пользовательских предметов на базе движка MagmaCore 2.0. Скрипты лежат в plugins/FreeMinecraftModels/scripts/.

Хуки реквизита (8)

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

ХукСрабатывание
on_spawnРеквизит появляется в мире
on_game_tickКаждый игровой тик, пока реквизит жив
on_zone_enterИгрок входит в зону взаимодействия реквизита
on_zone_leaveИгрок выходит из зоны взаимодействия реквизита
on_destroyРеквизит удалён из мира
on_left_clickИгрок кликает по реквизиту левой кнопкой
on_right_clickИгрок кликает по реквизиту правой кнопкой
on_projectile_hitПо реквизиту попадает снаряд

Скрипты реквизита получают таблицу context.prop с такими полями, как model_id и current_location, и методами вроде play_animation(name) и stop_animation().

Хуки предметов (22)

Скрипты пользовательских предметов (для моделей с заданным material: в YML) могут реагировать на следующие хуки:

ХукСрабатывание
on_equipПредмет экипирован (попадает в активный слот)
on_unequipПредмет снят (покидает активный слот)
on_attack_entityИгрок атакует сущность, держа предмет
on_kill_entityИгрок убивает сущность, держа предмет
on_take_damageИгрок получает урон, имея предмет экипированным
on_shield_blockИгрок блокирует урон щитом
on_shoot_bowИгрок стреляет из лука
on_projectile_hitСнаряд, выпущенный игроком, во что-то попадает
on_projectile_launchИгрок выпускает снаряд
on_right_clickИгрок кликает правой кнопкой, держа предмет
on_left_clickИгрок кликает левой кнопкой, держа предмет
on_shift_right_clickShift + правый клик с предметом в руке
on_shift_left_clickShift + левый клик с предметом в руке
on_interact_entityИгрок кликает правой кнопкой по сущности, держа предмет
on_swap_handsПредмет перекладывается между руками
on_dropИгрок выбрасывает предмет
on_break_blockИгрок ломает блок, держа предмет
on_consumeПредмет употребляется (еда/зелье)
on_item_damageПредмет теряет прочность
on_fishИгрок использует удочку
on_deathИгрок умирает, имея предмет экипированным
on_game_tickКаждый серверный тик, пока предмет экипирован

Скрипты предметов получают таблицу context.item с полями и методами, связанными с удерживаемым предметом и держащим его игроком. Lua-скрипты могут также использовать API игрового UI для отображения боссбаров, action-баров и заголовков.

Текущие заметки

  • Официальные паки, управляемые Nightbreak и встроенные в плагин: Basic Furniture Pack, BetterStructures Prop Pack, EliteMobs Prop Pack, Craftenmine's Weapons Item Pack и Craftenmine Tools Item Pack.
  • FreeMinecraftModels пересобирает вывод ресурс-пака при старте и при /fmm reload, а также рассылает событие FmmReloadedEvent, чтобы зависящие от него плагины могли переподключить свои ссылки на модели.
  • ResourcePackManager по-прежнему является рекомендуемым способом автоматической доставки сгенерированного пака клиентам.