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_click | Shift + правый клик с предметом в руке |
on_shift_left_click | Shift + левый клик с предметом в руке |
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 по-прежнему является рекомендуемым способом автоматической доставки сгенерированного пака клиентам.