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

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

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

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

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

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

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

setupDone

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

nightbreak.autoDownloadPluginUpdates

  • По умолчанию: false
  • Общая настройка MagmaCore (находится в секции nightbreak: файла config.yml)
  • Когда true, FreeMinecraftModels автоматически скачивает при запуске доступные обновления jar плагина и файлы обновлений контента
  • Скачанные обновления плагина и контента применяются только после перезапуска сервера
  • Это эквивалент в виде ключа конфига для запуска /fmm downloadpluginupdate / /fmm downloadall при каждом старте; переключайте его из меню /fmm setup или вручную

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, чтобы случайно не остаться включённым в продакшене. См. Команды

preventPropPlacementInProtectedRegions

  • По умолчанию: true
  • Когда true, игроку, кликающему правой кнопкой для размещения реквизита (предмета пользовательской модели) внутри региона WorldGuard или привата GriefPrevention, это будет заблокировано
  • Игроки с правом freeminecraftmodels.bypassregionprotection (по умолчанию: op) никогда не блокируются
  • Это зависит от того, установлены ли WorldGuard (плюс WorldEdit) или GriefPrevention; при отсутствии плагина защиты параметр не имеет эффекта

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, дающий права admin, deleteall и права на маскировку себя/других
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 recommendedplugins, /fmm downloadall, /fmm downloadallcontent, /fmm updatecontent, /fmm downloadpluginupdate) вместо этого проверяют wildcard freeminecraftmodels.*
freeminecraftmodels.deleteallopПотомок wildcard; доступ к /fmm deleteall
freeminecraftmodels.disguise.selfopРазрешает /fmm disguise / /fmm undisguise для отправителя
freeminecraftmodels.disguise.othersopРазрешает целевую маскировку/снятие маскировки, а также /fmm disguiselist
freeminecraftmodels.bypassregionprotectionopРазмещение/взаимодействие с реквизитами внутри регионов WorldGuard или приватов GriefPrevention, даже когда включён preventPropPlacementInProtectedRegions
freeminecraftmodels.menutrueДоступ к меню крафтящихся предметов /fmm
freeminecraftmodels.shoptrueДоступ к /fmm shop

Конфигурация 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/. Указывайте .lua для ясности; записи в конфиге без .lua принимаются и разрешаются в файлы .lua.
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-хукам предметов.

Реквизиты выполняют каждый скрипт, перечисленный в scripts:, как независимые экземпляры. Пользовательские предметы сейчас используют только первый валидный скрипт из списка; дополнительные записи после первого игнорируются при привязке к среде выполнения предмета.

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

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

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

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

  • Для работы с жизненным циклом официальных пакетов используйте /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 и проверьте консоль при запуске.