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

Конфигурация FreeMinecraftModels

На этой странице описаны текущие настройки config.yml и shop_config.yml, существенно влияющие на настройку, отрисовку, взаимодействие с игроком и опциональный магазин мебели.

Расположение файлов

plugins/FreeMinecraftModels/config.yml
plugins/FreeMinecraftModels/shop_config.yml

shop_config.yml создаётся при первом запуске; сам магазин остаётся отключённым, пока вы его не включите.

Настройки config.yml

setupDone

  • По умолчанию: false
  • Управляет тем, считается ли подсказка по первичной настройке завершённой
  • Игроки с широкими правами FreeMinecraftModels получают напоминание о запуске /fmm initialize, пока значение остаётся false
  • Меню настройки переключает это значение за вас; редактировать вручную при обычной настройке не нужно

useDisplayEntitiesWhenPossible

  • По умолчанию: true
  • Указывает FreeMinecraftModels предпочитать рендеринг через display-сущности, когда это поддерживают сервер и клиент
  • Плагин при необходимости откатывается на отображение через armor stand, если display-сущности недоступны (версии старше 1.19.4 или Bedrock)
  • Bedrock-клиенты — особый случай, поэтому не стоит считать, что этот параметр форсирует один и тот же путь отрисовки для всех игроков

maxModelViewDistance

  • По умолчанию: 60
  • Ограничивает, на какое расстояние моделированные сущности отправляются зрителям
  • Более низкие значения снижают нагрузку на пакеты и клиентскую отрисовку в плотно заставленных моделями зонах
  • Отдельные сущности могут переопределить это значение во время выполнения через 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, чтобы случайно не остаться включённым в продакшене. См. Команды

shop_config.yml

Опциональный магазин мебели на базе Vault живёт в собственном конфиге, чтобы его можно было включать и настраивать независимо от основного поведения плагина. Магазин отказывается регистрироваться, если отсутствует Vault или экономический провайдер.

Ключи верхнего уровня

КлючПо умолчаниюОписание
enabledfalseГлавный переключатель /fmm shop. Команда регистрируется только когда значение true, а также установлены Vault и экономический провайдер
defaultPrice100.0Цена, записываемая в файлы рецептов, у которых при следующей загрузке не указано собственное shopPrice
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 получает два дополнительных поля:

ПолеПо умолчаниюОписание
shopEnabledtrueВиден ли этот рецепт в /fmm shop. Рецепты с shopEnabled: false по-прежнему доступны в крафте, но никогда не выставляются на продажу
shopPricedefaultPrice из shop_config.ymlСтоимость в валюте Vault для этого конкретного предмета

Конструктор рецептов (/fmm craftify) записывает оба поля при сохранении, поэтому настройка цены — это просто правка в тексте.

Права доступа

Зарегистрированы в plugin.yml

ПравоПо умолчаниюОписание
freeminecraftmodels.*opWildcard, дающий админ-права и права на маскировку себя/других
freeminecraftmodels.adminopДоступ к /fmm admin (админский браузер контента) и /fmm giveitem. Остальные админ/отладочные команды (/fmm location, /fmm spawn, /fmm mount, /fmm itemify, /fmm craftify, /fmm reload, /fmm stats, /fmm hitbox visualize, /fmm debug bedrock, /fmm setup, /fmm initialize, /fmm downloadall, /fmm updatecontent) вместо этого проверяют wildcard freeminecraftmodels.*
freeminecraftmodels.disguise.selfopРазрешает /fmm disguise / /fmm undisguise для отправителя
freeminecraftmodels.disguise.othersopРазрешает целевую маскировку/снятие маскировки, а также /fmm disguiselist
freeminecraftmodels.menutrueДоступ к меню крафтящихся предметов /fmm
freeminecraftmodels.shoptrueДоступ к /fmm shop

Проверяются командами (не зарегистрированы в plugin.yml)

ПравоПо умолчаниюОписание
freeminecraftmodels.deleteallopДоступ к /fmm deleteall (проверяется обработчиком команды во время выполнения)

Конфигурация YML модели

У каждого файла .bbmodel может быть сопутствующий файл .yml (с тем же именем в той же папке), управляющий настройками конкретной модели. Унифицированный формат YML поддерживает следующие поля:

isEnabled: true
voxelize: true
solidify: true
scripts:
- my_script.lua
material: DIAMOND_SWORD
name: "&bFrost Blade"
lore:
- "&7A sword forged in ice"
- "&7Deals frost damage"
enchantments:
- SHARPNESS,3
- UNBREAKING,2
ПолеТипОписание
isEnabledbooleanЗагружена ли модель (по умолчанию: true)
scriptsсписок строкИмена Lua-скриптов, которые нужно прицепить (из plugins/FreeMinecraftModels/scripts/)
voxelizebooleanКогда true, реквизит привязывается к шагам поворота 90 градусов и при размещении выравнивается по сетке блоков. Размер основания рассчитывается из размеров хитбокса модели (округлённых до целых блоков). При размещении проверяется, что все блоки основания не являются твёрдыми.
solidifybooleanКогда true (требует voxelize: true), в каждом блоке основания реквизита размещаются барьерные блоки только в пакетах, что даёт ему коллизию на стороне клиента. Эти барьеры невидимы и существуют только в пакетах — в мир они не помещаются. Барьеры автоматически удаляются, когда реквизит подбирают или уничтожают.
materialstringИмя материала Bukkit (например, DIAMOND_SWORD, PAPER). При установке модель становится пользовательским предметом, который игроки могут держать и экипировать
namestringОтображаемое имя пользовательского предмета (поддерживает цветовые коды &)
loreсписок строкСтроки lore для пользовательского предмета (поддерживает цветовые коды &)
enchantmentsсписок строкЗачарования в формате ENCHANTMENT_NAME,LEVEL (например, SHARPNESS,3)

Когда задан material, модель регистрируется как пользовательский предмет. Игроки могут получить его через /fmm giveitem, скрафтить, если настроен рецепт, и он получает доступ ко всем 22 Lua-хукам предметов.

Эксплуатационные заметки

  • /fmm reload повторно импортирует контент и перегенерирует выходной пак, поэтому изменения конфигурации, влияющие на поведение отрисовки, легче всего проверить после перезагрузки. При каждой перезагрузке рассылается FmmReloadedEvent, чтобы зависимые плагины могли переподключить свои привязки к моделям.
  • FreeMinecraftModels только генерирует ресурс-пак; сам он его не хостит.
  • ResourcePackManager по-прежнему является рекомендуемым способом доставки для Java-клиентов и самым безопасным задокументированным путём для смешанных конфигураций.
  • WorldGuard, WorldEdit, GriefPrevention и Vault объявлены как softdepend в plugin.yml — ни один из них не требуется для запуска плагина, но они открывают определённые функции при наличии (Lua-предикаты, учитывающие защиту, и магазин мебели).

Когда менять эти значения

Используйте этот конфиг для настройки поведения во время выполнения, а не для управления пакетами контента.

  • Для жизненного цикла официальных пакетов используйте /fmm initialize, /fmm setup, /fmm downloadall и /fmm updatecontent
  • Используйте папку imports для ручного импорта .bbmodel или другого локального контента
  • Используйте config.yml, когда нужно подкрутить режим отрисовки, дальность видимости, дистанцию взаимодействия или поведение Bedrock
  • Используйте shop_config.yml (и поля shopEnabled/shopPrice в рецептах), чтобы настраивать магазин мебели без правок кода

Известные особенности

  • Поведение на Bedrock зависит и от sendCustomModelsToBedrockClientsV2, и от вашей более широкой настройки Floodgate/Geyser/ресурс-пака, поэтому делайте осторожные выводы, если не тестировали конкретно свой стек.
  • Магазин молча отключается, если отсутствует Vault или экономический провайдер. Если /fmm shop неожиданно недоступен, используйте /fmm version и проверьте консоль при запуске.