Конфигурация FreeMinecraftModels
Настройки YAML моделей подготавливаются вместе при перезагрузке контента. После изменения YAML пропа дождитесь успешной перезагрузки и только затем создавайте новый проп. Дайте каждому YAML-файлу модели уникальное имя во всех папках моделей. Если у двух файлов одинаковое имя (без учёта регистра), даже в разных подпапках, FMM загружает тот, чей абсолютный путь идёт первым при сортировке, а остальные пропускает с предупреждением Duplicate content filename. Пропущенная копия, все значения которой совпадают с загруженным файлом, пропускается без предупреждения.
На этой странице описаны текущие настройки config.yml и shop_config.yml, существенно влияющие на настройку, отрисовку, взаимодействие с игроком и опциональный магазин мебели. Настройки питомцев в pets.yml описаны на странице Питомцы.
Расположение файлов
plugins/FreeMinecraftModels/config.yml
plugins/FreeMinecraftModels/shop_config.yml
plugins/FreeMinecraftModels/pets.yml
shop_config.yml создаётся при первом запуске; сам магазин остаётся отключённым, пока вы его не включите. pets.yml создаётся при первом запуске в режиме COSMETIC, где дикие питомцы появляются только во время ночных миграций. Lua-модули, которые выполняют питомцы, находятся в plugins/FreeMinecraftModels/pet_behaviors/; см. Модули поведения питомцев.
В plugin.yml объявлено api-version: 1.21.4, поэтому Minecraft 1.21.4 — минимальная поддерживаемая версия сервера. Поддержка более старых линеек прекращена; устаревшие ветки отрисовки/вывода всё ещё есть в коде, но на сервере, способном загрузить плагин, они больше недостижимы.
Настройки config.yml
setupDone
- По умолчанию:
false - Управляет тем, считается ли подсказка по первичной настройке завершённой
- Пока значение равно
false, игроки сfreeminecraftmodels.*получают напоминание примерно через 10 секунд после каждого входа, если ещё находятся на сервере - Открытие
/fmm setupсохраняетtrueдля всего сервера и прекращает дальнейшие напоминания. Выбор варианта завершения в/fmm initializeтоже сохраняет это значение; оно не доказывает установку пака или его получение клиентами
nightbreak.autoDownloadPluginUpdates
- По умолчанию:
false - Общая настройка MagmaCore (находится в секции
nightbreak:файлаconfig.yml) - Когда
true, FreeMinecraftModels автоматически скачивает при запуске доступные обновления jar плагина и файлы обновлений контента - Скачанные обновления плагина и контента применяются после перезапуска сервера, если только
nightbreak.applyPluginUpdatesWithoutRestartне применит обновление плагина раньше - Автоматическое скачивание плагина требует действительного токена аккаунта Nightbreak и активной подписки сторонника на Patreon. Если чего-либо не хватает, оставьте
falseи используйте кнопку обновления в игре - Автоматическое обновление контента затрагивает установленные пакеты и откладывает их перезагрузку. Это не массовая установка всех доступных пакетов через
/fmm downloadall. Меняйте настройку через/fmm setupили вручную
nightbreak.applyPluginUpdatesWithoutRestart
- По умолчанию:
never - Общая настройка MagmaCore (находится в секции
nightbreak:файлаconfig.yml). Определяет, когда скачанное обновление плагина применяется без перезапуска never: обновление ждёт следующего перезапуска. Его всё равно можно применить вручную командой/fmm applypluginupdatewhen-empty: обновление применяется, как только на сервере не останется игроков. FMM проверяет это каждые 30 секундimmediately: обновление применяется сразу после завершения скачивания- Любое другое значение считается как
never - Применение обновления отключает FreeMinecraftModels и все зависящие от него плагины MagmaGuy, заменяет jar, затем снова загружает и включает их. Идущие бои с боссами, арены и экземпляры подземелий завершаются при перезагрузке этих плагинов
- Плагин другого автора, зависящий от FreeMinecraftModels, блокирует замену; тогда обновление ждёт перезапуска. Если новый jar не включается, снова загружается предыдущий jar, а обновление остаётся подготовленным до следующего перезапуска. См. Команды
useDisplayEntitiesWhenPossible
- По умолчанию:
true - Указывает FreeMinecraftModels предпочитать рендеринг через display-сущности, когда это поддерживают сервер и клиент
- Значение
falseвыбирает отрисовку костей через стойки для брони для Java-клиентов. Старая ветка для версий до 1.19.4 не означает поддержку старых серверов - Если модели Bedrock включены и доступен нативный мост пользовательских сущностей, игроки Bedrock получают такое представление. Иначе отрисовка костей для Bedrock использует стойки для брони. Настройка не навязывает один способ отображения всем игрокам
maxModelViewDistance
- По умолчанию:
60 - Задаёт обычное ограничение расстояния для наблюдателей. В мирах с небольшим числом моделей исключение для расстояния менее 10 блоков обходит и этот предел, и проверку перекрытия; значения ниже 10 там не задают строгую границу
- Более низкие значения снижают нагрузку на пакеты и клиентскую отрисовку в плотно заставленных моделями зонах
- Отдельные сущности могут переопределить это значение во время выполнения через
ModeledEntity.setViewDistanceOverride(int)— см. руководство по API
maxInteractionAndAttackDistance
- По умолчанию:
3 - Применяется к статическим и динамическим моделированным сущностям
- Используется проверками взаимодействия и попадания во время выполнения
maxInteractionAndAttackDistanceForProps
- По умолчанию:
6 - Применяется к сущностям-реквизитам
- Это значение отделено от дистанции взаимодействия для статических/динамических сущностей
sendCustomModelsToBedrockClientsV2
- По умолчанию:
true - Управляет тем, пытается ли FreeMinecraftModels отправлять пользовательские модели Bedrock-клиентам
- Этот ключ заменяет более старый
sendCustomModelsToBedrockClients(у которого по умолчанию былоfalse). Переименование вV2переворачивает значение по умолчанию, так что Bedrock-игроки видят модели по умолчанию; если вы ранее явно задавали старый ключ, можете удалить его — новый ключ V2 возьмёт верх - Если отключено, Bedrock-игроки видят базовую ванильную сущность, если она есть (и маскировки для них не отображаются)
- Если вы это включаете, убедитесь, что ваш путь ресурс-пака для Bedrock/Geyser/Floodgate действительно готов для таких клиентов
- Диагностическое логирование Bedrock не является ключом конфига. Переключайте его через
/fmm debug bedrock on|offи явно выключайте после сбора данных./fmm reloadне сбрасывает флаг; новый запуск сервера сбрасывает. См. Команды
skipUnchangedBoneUpdates
- По умолчанию:
true - При
trueобновления движения и метаданных костей пропускаются, если отслеживаемые преобразования не изменились сверх допуска сравнения. Кости display-сущностей отслеживают позицию, поворот и масштаб; кости на стойках для брони — позицию и поворот - Неподвижные кости обычно пропускают эти обновления, но явно отмеченные изменения, например оттенка, вызывают повторную отправку
- Периодическая полная синхронизация продолжает исправлять отклонения клиента; эта настройка не подавляет все виды пакетов модели
- Ставьте
false, только чтобы вернуть старое поведение «всегда пересылать каждую кость каждый тик» для отладки
useDeltaMetadataPackets
- По умолчанию:
true - Когда
true, потиковый пакет метаданных для костей модели на display-сущностях отправляет только изменившиеся значения (трансформацию кости), а не сериализует заново весь блоб item-display (модель предмета + custom model data) каждый тик - Полное состояние по-прежнему отправляется, когда игрок впервые видит модель, и при периодической ресинхронизации
- Ставьте
false, чтобы вернуть старое поведение с полным снимком каждый тик для отладки или сравнения
displayBonesRideTheirEntity
- По умолчанию:
true - При
truedisplay-кости динамической модели едут на её сущности как пассажиры на клиентах Java. Клиент размещает каждую кость из той же сглаженной позиции, которую использует для сущности и её всадников, поэтому маунты, всадники и движущиеся модели остаются вместе и не отстают, а кости не отправляют пакеты позиции - Это относится к маунтам, например
/fmm mount, и к моделям, чья скрытая сущность отслеживается черезmodelViewersTrackHiddenBodies. Кости едут на сущности, только пока её отслеживает клиент каждого зрителя на Java. Зритель может видеть модель дальше, чем сервер отслеживает её сущность (модели показываются на расстоянии доmaxModelViewDistance, по умолчанию 60 блоков, тогда как Spigot по умолчанию отслеживает монстров до 48 блоков), а плагины могут скрывать сущность от зрителя. В этих случаях, а также пока модель умирает, кости снова телепортируются по отдельности - Игроков Bedrock это не затрагивает
- Ставьте
false, чтобы, как раньше, все модели телепортировали каждую кость по отдельности
riddenBoneInterpolationTicks
- По умолчанию:
1 - За сколько тиков клиент Java плавно переводит едущую кость в следующую позу анимации.
0— мгновенная смена позы каждый тик.1— плавный переход за один тик, который также сглаживает повороты - Используется только костями, которые едут на своей сущности; см.
displayBonesRideTheirEntity /fmm boneglide <ticks>меняет его до перезагрузки FMM, не правя этот файл. См. Команды
modelViewersTrackHiddenBodies
- По умолчанию:
true - При
trueкаждый игрок на Java, который видит динамическую модель со скрытой сущностью, дополнительно получает эту сущность как невидимое тело без экипировки. Тогда кости модели могут ехать на нём, как описано вdisplayBonesRideTheirEntity - Остальные игроки и игроки Bedrock по-прежнему видят сущность скрытой
- Ставьте
false, чтобы скрытые сущности не отслеживались, а их кости телепортировались по отдельности
idleWalkBlendTicks
- По умолчанию:
5 - Экспериментально. За сколько тиков модель плавно переходит между анимациями
idleиwalk. Обе анимации продолжают проигрываться во время перехода 0переключает мгновенно, как в старых версиях- Игроки Bedrock получают то же время перехода. Оно записывается в генерируемые контроллеры анимаций Bedrock, поэтому изменение они увидят после повторной генерации ресурс-пака
- См. Смешивание анимаций
deathBlendTicks
- По умолчанию:
4 - Экспериментально. За сколько тиков модель плавно переходит из удерживаемой позы в анимацию
death.0переключает мгновенно, как в старых версиях - Игроки Bedrock получают то же время перехода после повторной генерации ресурс-пака
weightedTurning
- По умолчанию:
true - Экспериментально. При
trueдинамическая модель поворачивается к направлению своего моба с инерцией: разгоняется, поворачивается с ограниченной скоростью, затем замедляется и останавливается на новом направлении без перелёта. Большие модели поворачиваются медленнее - Так поворачивается только модель. Сам моб поворачивается и ходит точно так же, как раньше
- Модель поворачивается мгновенно, пока игрок едет верхом прямо на её мобе или сидит на одном из её мест
m_ - Ставьте
false, чтобы модели поворачивались мгновенно вместе с мобом, как в старых версиях - О том, как размер меняет пределы, см. в разделе Инерция поворота
turnSpeedCap
- По умолчанию:
30 - Экспериментально. Предельная скорость поворота, в градусах за тик, для модели размером в один блок
- Предел делится на квадратный корень из размера модели и никогда не превышает 90 градусов за тик
turnAcceleration
- По умолчанию:
6 - Экспериментально. На сколько градусов за тик модель размером в один блок набирает или теряет скорость поворота каждый тик
- Значение делится на размер модели, поэтому большие модели разгоняются и замедляются медленнее
- Значение
0или меньше, как иturnSpeedCap0или меньше, заставляет модели поворачиваться мгновенно
maxModelsForProximityOverride
- По умолчанию:
25 - Псевдо-балансировщик нагрузки для переопределения видимости на ближней дистанции
- Обычно модель на расстоянии менее 10 блоков от игрока обходит проверки расстояния и перекрытия, используемые для выбора наблюдателей; остальные правила видимости продолжают действовать
- В плотной зоне (например, многоэтажный хаб NPC) это переопределение превращает десятки моделей, которых игрок на самом деле не видит — на других этажах, за стенами, — в зрителей, отправляющих пакеты каждый тик
- Когда в мире загружено не меньше этого числа моделей, исключение для ближней дистанции в нём отключается. Наблюдатели должны пройти заданные проверки расстояния и видимости даже вблизи. Проверка видимости использует центр модели и углы хитбокса; отсутствие хитбокса считается успешной проверкой. Миры с небольшим числом моделей сохраняют исключение
- Решение принимается для каждого мира, а не глобально, поэтому переполненный мир-хаб не наказывает тихие
- Поднимите значение очень высоко, чтобы фактически вернуть поведение с постоянным переопределением; задайте
0, чтобы всегда требовать линию видимости /fmm packetdebug— предназначенный для этого инструмент измерения эффекта — см. Команды
filmicMode
Не рекомендуется вне записи. Кинематографический режим отправляет каждому игроку гораздо больше пакетов и заставляет сервер анимировать каждую загруженную модель. На загруженных серверах ожидайте лагов.
- По умолчанию:
false - Для записи трейлеров и видео через ReplayMod или похожий мод записи
- Обычно игрок получает модель, только пока она находится в пределах
maxModelViewDistanceи проходит проверку линии видимости. Скрытые модели удаляются с этого клиента и перестают анимироваться. Повтор содержит только то, что получил записывающий клиент, поэтому, когда камера повтора смотрит на такие модели, они отсутствуют или застыли - При
trueкаждый игрок получает все загруженные модели в чанках, загруженных у этого игрока, и эти модели продолжают анимироваться — даже за стенами или дальшеmaxModelViewDistance. Область загруженных чанков равна дальности обзора мира, ограниченной дальностью прорисовки клиента, плюс один чанк. Модели в незагруженных чанках по-прежнему не отображаются - Чтобы включить режим только на время записи, используйте
/fmm filmic on|offвместо редактирования этого файла. См. Команды
particleEffectsEnabled
- По умолчанию:
true - При
falseникакие эффекты частиц Blockbench не воспроизводятся на моделях, реквизите и предметах в руке. Модели загружаются и анимируются как обычно - Изменение применяется после
/fmm reloadили перезапуска. Игроки Java видят его после перезагрузки FMM. Игроки Bedrock видят его после получения пересобранного ресурс-пака, потому что их эффекты поставляются внутри пака - См. Частицы
maxParticlesPerEmitter
- По умолчанию:
100 - Верхний предел живых частиц для одного эффекта частиц на одной модели. Если собственный
max_particlesфайла частиц меньше, применяется он - Каждая частица, которую видит игрок Java, — это пакетная сущность, поэтому высокие значения нагружают канал
maxParticlesPerViewer
- По умолчанию:
400 - Верхний предел живых частиц, показываемых одному игроку Java для всех моделей вместе
- После его достижения новые частицы для этого игрока пропускаются, пока не исчезнут старые. Игроки Bedrock отрисовывают частицы на своём клиенте и не учитываются
preventPropPlacementInProtectedRegions
- По умолчанию:
true - Когда
true, FreeMinecraftModels спрашивает у зарегистрированных в MagmaCore провайдеров защиты, может ли именно этот игрок строить в ячейке, которую займёт реквизит, и отклоняет размещение, если ответ отрицательный - Игроки с правом
freeminecraftmodels.bypassregionprotection(по умолчанию:op) пропускают эту проверку защиты FMM. Проверки свободного места и ограничения других плагинов сохраняются - Встроенные провайдеры с учётом игрока поддерживают WorldGuard и GriefPrevention. Другие плагины могут регистрировать провайдеров. Отказ или ошибка провайдера запрещают размещение; MagmaCore также запрещает его в местах, охваченных владельцем защищённой локации. Если нет ни отказавшего провайдера, ни защищённого владения, проверка не добавляет ограничений
- Сообщение об отказе:
You don't have permission to place a model here!
Провайдер проверяет, может ли строить именно этот игрок, поэтому членство в привате может разрешить размещение. Защищённое владение локацией проверяется отдельно, без исключения для игрока. Это запрос к зарегистрированным интеграциям, а не имитация события установки ванильного блока, поэтому он не воспроизводит правила размещения всех плагинов.
Каждое размещение получает проверку одной ячейки; воксельные реквизиты получают вторую, по всему объёму:
| Тип реквизита | Проверяемые ячейки |
|---|---|
| Обычный (свободной формы) реквизит | Одна ячейка, примыкающая к грани блока, по которой кликнули, — та ячейка, которую займёт реквизит |
Реквизит с voxelize: true | Сначала та же примыкающая ячейка, затем каждая ячейка в повёрнутом footprint реквизита (ширина x высота x глубина) вокруг точки размещения, выровненной по сетке. Если любая ячейка в этом объёме недоступна, отклоняется всё размещение |
Проверка по объёму существует потому, что воксельный реквизит может быть шириной в несколько блоков, и проверка только кликнутой ячейки позволила бы игроку встать на границе привата и уронить большой реквизит в чужую постройку. Она выполняется после проверки свободного места, поэтому Not enough space to place this model! по-прежнему имеет приоритет, когда footprint физически перекрыт.
Проверяемый объём округляет каждое измерение хитбокса через Math.round, минимум до одного блока. Объём пакетных барьеров использует ceil(size - 0.4) и может отличаться; проверка размещения не гарантирует одинаковый охват всех ячеек клиентской коллизии.
Право проверяется до запроса к провайдеру. Выдайте freeminecraftmodels.bypassregionprotection, чтобы освободить персонал от проверок защиты FMM, сохранив настройку для остальных игроков. Это не отменяет проверку свободного места или отмену событий другими плагинами.
registerCraftingRecipes
- По умолчанию:
true - Для экономики только с покупками установите
falseи перезапустите сервер. Корректные включённые записи рецептов останутся в каталоге магазина, но их рецепты крафта Bukkit будут удалены - Меню доступных для крафта предметов
/fmmи сведения о рецептах требуют фактически зарегистрированного рецепта, поэтому записи с отключённым крафтом там отсутствуют isEnabled: falseв отдельном рецепте удаляет его из загруженного каталога, включая магазин.shopEnabled: falseскрывает только возможность покупки
shop_config.yml
Опциональный магазин мебели на базе Vault живёт в собственном конфиге, чтобы его можно было включать и настраивать независимо от основного поведения плагина. Магазин отказывается регистрироваться, если отсутствует Vault или экономический провайдер.
Ключи верхнего уровня
| Ключ | По умолчанию | Описание |
|---|---|---|
enabled | false | Главный переключатель /fmm shop. Команда регистрируется только когда значение true, а также присутствуют Vault и экономический провайдер |
defaultPrice | 100.0 | Цена для рецептов без shopPrice; неположительное значение заменяется на 100.0. Изменение этого значения не меняет уже сохранённые цены рецептов |
menuTitle | &8FMM - Furniture Shop | Заголовок, отображаемый в верхней части инвентаря магазина (поддерживает цветовые коды &) |
priceLoreFormat | &7Price: &e{price} | Строка lore, добавляемая к каждому товару в магазине с указанием цены. Плейсхолдер: {price} |
clickToBuyLoreFormat | &aClick to purchase | Строка lore, добавляемая к каждому товару в магазине с предложением о покупке |
Ключи сообщений (messages.*)
Все строки сообщений поддерживают цветовые коды &.
| Ключ | По умолчанию | Плейсхолдеры |
|---|---|---|
messages.purchaseSuccess | &aPurchased &f{item} &afor &e{price}&a. Balance: &e{balance}&a. | {item}, {price}, {balance} |
messages.insufficientFunds | &cYou need &e{price} &cto buy &f{item}&c. Balance: &e{balance}&c. | {item}, {price}, {balance} |
messages.shopDisabled | &cThe furniture shop is currently unavailable. | нет |
messages.itemNotForSale | &cThat item is not currently for sale. | {item} |
messages.inventoryFull | &eYour inventory was full; &f{item} &ehas been dropped at your feet. | {item} |
Поля магазина в рецептах
Каждый файл рецепта в plugins/FreeMinecraftModels/recipes/<model_id>.yml получает два дополнительных поля:
| Поле | По умолчанию | Описание |
|---|---|---|
shopEnabled | true | Показывается ли рецепт в /fmm shop. Само значение false не отключает крафт; состояние рецепта и registerCraftingRecipes продолжают действовать |
shopPrice | defaultPrice из shop_config.yml | Стоимость в валюте Vault для этого конкретного предмета |
Конструктор рецептов (/fmm craftify) записывает оба поля при сохранении, поэтому настройка цены — это просто правка в тексте.
Права доступа
Зарегистрированы в plugin.yml
| Право | По умолчанию | Описание |
|---|---|---|
freeminecraftmodels.* | op | Wildcard, дающий права admin, deleteall, маскировку себя/других, обход защиты регионов и права администрирования питомцев |
freeminecraftmodels.admin | op | Доступ к /fmm admin (админский браузер контента) и /fmm giveitem. Остальные админ/отладочные команды (/fmm location, /fmm spawn, /fmm mount, /fmm itemify, /fmm craftify, /fmm reload, /fmm stats, /fmm hitbox visualize, /fmm debug, /fmm packetdebug, /fmm filmic, /fmm boneglide, /fmm setup, /fmm initialize, /fmm recommendedplugins, /fmm downloadall, /fmm downloadallcontent, /fmm updatecontent, /fmm downloadpluginupdate, /fmm applypluginupdate, /fmm forcereinstallcontent) вместо этого проверяют wildcard freeminecraftmodels.* |
freeminecraftmodels.deleteall | op | Потомок wildcard; доступ к /fmm deleteall |
freeminecraftmodels.disguise.self | op | Разрешает /fmm disguise / /fmm undisguise для отправителя |
freeminecraftmodels.disguise.others | op | Разрешает целевую маскировку/снятие маскировки, а также /fmm disguiselist |
freeminecraftmodels.bypassregionprotection | op | Обходит проверки защиты размещения и взаимодействия FMM, в том числе при включённом preventPropPlacementInProtectedRegions; не отменяет ограничения пространства или отмену событий другими плагинами |
freeminecraftmodels.menu | true | Доступ к меню крафтящихся предметов /fmm |
freeminecraftmodels.shop | true | Доступ к /fmm shop |
freeminecraftmodels.pets | true | Доступ к /fmm pets |
freeminecraftmodels.pets.admin | op | Потомок wildcard; доступ к /fmm petadmin и /fmm petmigrate |
nightbreak.login | op | Регистрируется MagmaCore, а не через plugin.yml. Требуется для общих команд /nightbreaklogin и /nightbreaklogout |
nightbreak.plugins | op | Регистрируется MagmaCore, а не через plugin.yml. Требуется для общей команды /nightbreak plugins |
Команды питомцев описаны на странице Питомцы.
Конфигурация YML модели
Сопутствующий файл .yml модели имеет то же базовое имя и каталог, что и .bbmodel. Реквизиты и предметы для руки используют разные части этой конфигурации.
Реквизиты
isEnabled: true
name: "&6Oak Table"
lore:
- "&7Seats four"
voxelize: true
solidify: true
scripts:
- my_prop.lua
| Поле | Описание |
|---|---|
isEnabled | Включено ли определение; по умолчанию true |
name | Отображаемое имя предмета для размещения реквизита. Поддерживает цветовые коды. Без него предмет назван по модели, например ✦ Oak Table ✦ |
lore | Описание предмета для размещения. Поддерживает цветовые коды. Любой ключ lore заменяет описание по умолчанию (подсказки по размещению и подбору плюс ID модели), а пустой список (lore: []) убирает его |
scripts | Независимые Lua-скрипты реквизитов из plugins/FreeMinecraftModels/scripts/ |
voxelize | Привязывает размещение к сетке блоков и поворотам по 90 градусов; проверяет свободное место во всём повёрнутом объёме |
solidify | Вместе с вокселизацией отправляет барьерные блоки только в пакетах для клиентской коллизии; это не блоки мира, и они удаляются вместе с реквизитом |
name и lore предмета для размещения действуют везде, где FMM создаёт этот предмет: /fmm itemify, результат крафта по рецепту, покупки в магазине и предметы, взятые из меню администратора. Записи меню, например списки магазина и его сообщения о покупке, по-прежнему показывают имя, образованное из ID модели. Предметы, уже лежащие в инвентарях, сохраняют старое имя и описание.
Предметы для руки
isEnabled: true
material: DIAMOND_SWORD
name: "&bFrost Blade"
lore:
- "&7A sword forged in ice"
enchantments:
- "minecraft:sharpness,3"
- "minecraft:unbreaking,2"
material выбирает материал предмета Bukkit и регистрирует предмет для руки вместо реквизита. name и lore поддерживают цветовые коды. Зачарования используют идентификаторы в нижнем регистре с пространством имён и положительные целочисленные уровни. Если зачарование является набором предметов, описание предмета показывает части набора в строке описания, содержащей $itemSet, а если такой строки нет — после описания. Получайте зарегистрированные предметы через /fmm giveitem <id> или меню администратора. Рецепты реквизитов и магазин создают бумажные предметы для размещения, а не эти авторские предметы для руки.
Чтобы окрасить кожаную броню, добавьте после материала цвет RGB в шестнадцатеричном виде без #, как в экипировке EliteMobs: material: LEATHER_CHESTPLATE:ff8800. Суффикс работает только с материалами, имя которых начинается с LEATHER_, например с частями кожаной брони и кожаной конской бронёй. Суффикс у любого другого материала или значение, не состоящее из одной–шести шестнадцатеричных цифр, приводит к отклонению каталога предметов: /fmm reload сохраняет текущий каталог, а консоль называет файл. Предметы, уже находящиеся в инвентарях, сохраняют старый цвет.
Lua-скрипты экипированных предметов больше не поддерживаются. Определение предмета с непустым scripts:, старыми зачарованиями без пространства имён, например SHARPNESS,3, или недоступным на сервере материалом пропускается с диагностикой. FMM не меняет авторский файл. Удалите старую привязку скрипта предмета и создавайте эффекты через определения зачарований; скрипты реквизитов по-прежнему поддерживаются.
Для жезлов и посохов добавьте определение магического оружия. Не помещайте поведение оружия в скрипт реквизита или устаревшие хуки предметов.
Эксплуатационные заметки
/fmm reloadсначала импортирует и проверяет авторские предметы, зачарования и рецепты реквизита, сохраняя текущий каталог активным. Ошибка проверки отклоняет перезагрузку; успешная проверка запускает полную повторную инициализацию, включаяconfig.yml,shop_config.yml,pets.yml, рецепты, модели, виды питомцев, модули поведения питомцев и выходной пак. Одновременные запросы инициализации и перезагрузки отклоняются- Успешная полная инициализация планирует
FmmReloadedEventчерез 40 тиков, чтобы зависимые плагины восстановили привязки. Более узкая перезагрузка контента от импортера тоже отправляет событие при успехе. Она пересобирает модели, предметы, зачарования, скрипты реквизита и рецепты, но не перечитываетconfig.ymlиshop_config.yml. Сбой после очистки активных реестров в этом пути отключает FMM. Исключение — сбой рецептов реквизита: FMM пишет в логProp recipe catalog rejectedи оставляет прежние рецепты активными. Отклонённая проверка не означает завершённую перезагрузку - При выгрузке мира FMM удаляет модели реквизитов из среды выполнения, сохраняя их постоянные базовые стойки. После повторной загрузки этих сущностей он удаляет дубликаты и восстанавливает реквизиты. Это отдельный процесс, не равнозначный окончательному подбору или уничтожению реквизита
- Фиксированные метки времени ZIP и упорядоченные карты моделей уменьшают лишние изменения, но порядок обхода файловой системы может изменить байты ZIP и SHA1 даже при неизменных моделях. Идентичный результат не гарантируется. См. Вывод ресурс-пака.
- FreeMinecraftModels только генерирует ресурс-пак; сам он его не хостит.
- ResourcePackManager по-прежнему является рекомендуемым способом доставки для Java-клиентов и самым безопасным задокументированным путём для смешанных конфигураций.
- WorldGuard, WorldEdit, GriefPrevention, Vault, floodgate и Geyser-Spigot объявлены как
softdependвplugin.yml. WorldGuard и GriefPrevention предоставляют встроенные запросы защиты; WorldEdit не является отдельным провайдером защиты. Vault с экономическим провайдером включает магазин. Для соответствующего отображения Bedrock должны быть доступны распознавание клиента, мост отрисовки и доставка ресурс-пака
Когда менять эти значения
Используйте этот конфиг для настройки поведения во время выполнения, а не для управления пакетами контента.
- Для работы с жизненным циклом официальных пакетов используйте
/fmm setup,/fmm downloadallи/fmm updatecontent - Используйте папку
importsдля ручного импорта.bbmodelили другого локального контента - Используйте
config.yml, когда нужно подкрутить режим отрисовки, дальность видимости, дистанцию взаимодействия, поведение Bedrock, применение защиты регионов или автоматическое скачивание обновлений - Используйте
skipUnchangedBoneUpdates,useDeltaMetadataPacketsиmaxModelsForProximityOverrideдля настройки пакетов/трафика в мирах с плотной застройкой моделями. Все три по умолчанию уже настроены на оптимизированное поведение; значенияfalse/ очень высокие существуют для отладки и A/B-сравнения, а не как рекомендуемые продакшн-значения - Используйте
filmicMode(или/fmm filmic on) только во время записи видео, затем выключайте его - Используйте
idleWalkBlendTicks,deathBlendTicks,weightedTurning,turnSpeedCapиturnAcceleration, чтобы настроить анимацию и повороты моделей. Задайте времена переходов0, аweightedTurning—false, чтобы вернуть мгновенные переключения и повороты старых версий displayBonesRideTheirEntityиmodelViewersTrackHiddenBodiesвключены по умолчанию. Значениеfalseвозвращает старую телепортацию каждой кости по отдельности, при которой движущиеся модели и маунты могут отставать от своей сущности- Снизьте
maxParticlesPerEmitterиmaxParticlesPerViewerили задайтеparticleEffectsEnabled: false, если модели с большим количеством частиц слишком нагружают канал - Используйте
shop_config.yml(и поляshopEnabled/shopPriceв рецептах), чтобы настраивать магазин мебели без правок кода
Известные особенности
- Поведение на Bedrock зависит и от
sendCustomModelsToBedrockClientsV2, и от вашей более широкой настройки Floodgate/Geyser/ресурс-пака, поэтому делайте осторожные выводы, если не тестировали конкретно свой стек. - Если магазин включён, но отсутствует Vault или экономический провайдер, он остаётся недоступным и записывает конкретное предупреждение при запуске.
/fmm versionсообщает только версию плагина; проверьте эти предупреждения, если/fmm shopотсутствует.