✅ UpgradeSpawners | Прокачка уровней спавнеров с помощью убийств мобов из спавнера [-80% Cкидка]💰

Платно Плагин ✅ UpgradeSpawners | Прокачка уровней спавнеров с помощью убийств мобов из спавнера [-80% Cкидка]💰 1.9

Нет прав для приобретения ("100.00" ₽)
  • Исправлена критическая ошибка, из-за которой сервер не запускался. Проблема была связана с несовместимостью методов обработки данных и метаданных с API Minecraft 1.16.5, что вызывало сбои при загрузке плагина. Теперь сервер запускается стабильно
  • Исправлен баг, связанный с зависанием сервера при сохранении спавнеров. Периодическое сохранение теперь асинхронное с пакетной обработкой, что устраняет лаги и снижает нагрузку на базу данных
  • Устранён баг с таймерами спавнеров. Проблема возникала из-за некорректной обработки чанков, что приводило к пропуску некоторых спавнеров. Теперь чанки обрабатываются правильно, и таймеры работают стабильно
  • Улучшено управление идентификаторами спавнеров. Новая система эффективно назначает и освобождает ID, предотвращая дублирование и снижая нагрузку на базу данных
  • Исправлен баг с исчезновением спавнеров после отключения плагина. Теперь все данные о них надёжно сохраняются перед выключением
  • Устранены мелкие баги, которые выводили предупреждения в консоль
  • Удалена необязательная зависимость от ProtocolLib. Параметр protocollib исключён из конфига
  • Изменён параметр "chunks" в optimization.yml на несколько подпараметров: "processing-limit" (Ограничение количества одновременно обрабатываемых чанков), "player-radius-cache" (Кэширование проверок радиуса игроков), "spawner-check-limit" (Уменьшает количество проверок спавнеров в новых чанках) и "chunk-load-limit" (Ограничивает количество чанков, загружаемых за один раз при прогрузке мира)
  • Добавлен параметр "cleanup-no-players" в параметре "mobs" в optimization.yml для удаления мобов, появившихся из спавнера, если рядом нет игроков
  • Добавлен новый параметр "async-spawner-processing" в optimization.yml, который выполняет некоторые проверки спавнеров в асинхронном потоке, не нагружая поток сервера
  • В самом конце файла optimization.yml добавлены рекомендации по настройке и оптимизации каждого параметра под ваши характеристики сервера (Настоятельно рекомендую ознакомиться с этими рекомендациями и применить их на практике)
  • Устранена критическая ошибку, из-за которой база данных могла внезапно отключиться или выйти из строя. Из-за этого спавнеры не сохранялись, а в консоль бесконечно отправлялись сообщения об ошибках и сервер автоматически перезагружался
  • Добавлено резервное копирование базы данных: копии создаются каждые 30 минут и перед критическими операциями, восстанавливаются при сбоях, предотвращая потерю данных со спавнерами (ЭТО БЕТА ДОБАВЛЕНИЕ, ВОЗМОЖНЫ С НЕЙ БУДУТ БАГИ!)

Новый config.yml:
YAML:
#
#  █░█ █▀█ █▀▀ █▀█ ▄▀█ █▀▄ █▀▀ █▀ █▀█ ▄▀█ █░█░█ █▄░█ █▀▀ █▀█ █▀
#  █▄█ █▀▀ █▄█ █▀▄ █▀█ █▄▀ ██▄ ▄█ █▀▀ █▀█ ▀▄▀▄▀ █░▀█ ██▄ █▀▄ ▄█
#
#                               By   MilkyWay   for   GornaWorld.fun   and   sale
#

# Настройки параметров плагина
settings:

  # Включение вывода логов плагина в консоль для отладки ошибок
  logs-in-console:
    # Активны ли логи? (true/false)
    enabled: false

  # Список миров, где плагин не будет работать
  disable-worlds:
    # Включён ли запрет для указанных миров? (true/false)
    enabled: false
    # Названия миров
    worlds:
      - "CustomWorld"
      - "CustomWorld2"
      - "CustomWorld_3"

  # Удалять ли яйцо призыва моба из инвентаря игрока при его установке в спавнер
  consume-spawn-egg:
    # Включено ли удаление яйца? (true/false)
    # Если true, яйцо будет удаляться из основной или дополнительной руки игрока после установки
    # Если false, яйцо останется в инвентаре игрока
    enabled: true

  # Ограничение изменения яйца в спавнере в чужих регионах WorldGuard
  restrict-spawner-egg-change:
    # Включено ли ограничение? (true/false)
    enabled: true
    # Право, позволяющее обойти ограничение
    bypass-permission: "upgradespawners.bypass.egg-change"
    message:
      enabled: false
      message: "&cВы не можете изменить яйцо в спавнере в этом регионе!"

  # Ограничение открытия меню спавнера в чужих регионах WorldGuard
  restrict-spawner-menu-access:
    # Включено ли ограничение? (true/false)
    enabled: true
    # Право, позволяющее обойти ограничение
    bypass-permission: "upgradespawners.bypass.menu-access"
    message:
      enabled: false
      message: "&cВы не можете открыть меню спавнера в этом регионе!"

  # Включение взрывоустойчивости спавнеров
  explosion-spawners:
    # Включена ли взрывоустойчивость? (true/false)
    # (Если true, спавнеры нельзя будет разрушить взрывами, например, от крипера или ТНТ)
    # (Если false, спавнеры можно будет разрушать взрывами, игроками или поршнями)
    enabled: false

  # Интеграция с плагином PlaceholderAPI для использования его плейсхолдеров
  placeholderapi:
    # (Рекомендуется выключить данный параметр для снижения нагрузки, если вы не используете его нигде)
    enabled: true

  # Учёт только убийств мобов, совершённых игроками, для прокачки спавнера
  count-only-player-kills:
    # Включён ли режим учёта только убийств игроками? (true/false)
    # Если true, спавнер будет засчитывать только мобов, убитых игроками напрямую
    # Если false, будут учитываться все смерти мобов, включая падение, лаву, других мобов и т.д.
    enabled: true

  # Время хранения данных удалённых спавнеров перед их окончательным удалением из памяти
  # Укажите 0, чтобы отключить автоматическое удаление (данные будут храниться до перезапуска сервера)
  removed-spawners-timeout:
    # Время в секундах, после которого данные спавнера будут удалены из временного хранилища, если спавнер не был восстановлен
    # (Рекомендуется значение 60-600 секунд)
    time: 300

  # Время ожидания подтверждения для команды очистки базы данных (/us cleardb)
  # Укажите 0, чтобы отключить таймер (подтверждение будет активно до ручного выполнения или перезапуска сервера)
  cleardb-confirmation-timeout:
    # Время в секундах, после которого запрос на подтверждение очистки базы данных будет отменён
    time: 30

  # Сбрасывать ли уровень спавнера при установке нового яйца призыва в спавнер
  reset-level-on-new-egg:
    # Включён ли сброс уровня? (true/false)
    enabled: true

  # Сбрасывать ли время до спавна мобов на значение текущего уровня при повышении уровня спавнера
  reset-cooldown-on-level-up:
    # Включён ли сброс времени до спавна? (true/false)
    enabled: true

  # Количество попыток найти место для спавна мобов
  spawn-attempts:
    # Сколько раз пытаться найти координаты? (Рекомендуется 5–20)
    count: 10

  # Настройки частиц при спавне мобов из спавнера
  particles:
    # Включены ли частицы? (true/false)
    enabled: true
    # Тип частиц (доступные: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Particle.html)
    type: "SMOKE_NORMAL"
    # Сколько частиц отображать?
    count: 100
    # Расстояние разброса частиц по осям X, Y, Z
    offset-x: 0.5
    offset-y: 0.5
    offset-z: 0.5

  # Ограничение на количество спавнеров для каждого игрока
  limit-spawners-the-players:
    # Активен ли лимит? (true/false)
    enabled: true
    # Максимальное число спавнеров на игрока
    max-spawners: 5
    # Сообщение игроку при превышении лимита
    message: "&cСтоп! &fВы &cне можете &fпоставить более &c{limit-spawners} &fспанеров!"
    # Право, позволяющее обойти лимит
    bypass-permission: upgradespawners.bypass.limit-spawners

  # Ограничение по высоте установки спавнеров
  limit-coordinates-y-spawners:
    # Активен ли лимит высоты? (true/false)
    enabled: true
    # Минимальная допустимая высота (Y)
    min-y: -30
    # Сообщение при установке ниже минимума
    message-min: "&cСтоп! &fВы &cне можете &fпоставить спавнер ниже &c{limit-min-y} &fвысоты!"
    # Максимальная допустимая высота (Y)
    max-y: 180
    # Сообщение при установке выше максимума
    message-max: "&cСтоп! &fВы &cне можете &fпоставить спавнер выше &c{limit-max-y} &fвысоты!"
    # Право, позволяющее игнорировать лимит высоты
    bypass-permission: upgradespawners.bypass.limit-coordinates-y

  # Настройки голограмм над спавнерами
  holograms:

    # Голограмма для спавнера с установленным мобом
    active-mob:
      # Показывать голограмму? (true/false)
      enabled: true
      # Текст голограммы (поддерживает плейсхолдеры {level}, {time})
      text:
        - "&6▸ &fУровень: &e{level}"
        - "&6▸ &fСпавн через: &e{time}с."
      # Смещение голограммы относительно спавнера (X, Y, Z)
      offset:
        x: 0.5
        y: 1.2
        z: 0.5
      # Расстояние между строками текста
      line-spacing: 0.3
      # Как часто обновлять голограмму? (в секундах)
      update-interval: 1

    # Голограмма для пустого спавнера (работает с версии 1.19.3 и выше)
    empty-mob:
      # Показывать голограмму? (true/false)
      enabled: true
      # Текст голограммы (поддерживает плейсхолдер {level})
      text:
        - "&6▸ &fУровень: &e{level}"
        - "&6▸ &fСпавнер пуст"
      # Смещение голограммы относительно спавнера (X, Y, Z)
      offset:
        x: 0.5
        y: 1.2
        z: 0.5
      # Расстояние между строками текста
      line-spacing: 0.3
      # Как часто обновлять голограмму? (в секундах)
      update-interval: 1

    # Голограмма для приостановленного спавнера
    stop-spawner:
      # Показывать голограмму? (true/false)
      enabled: true
      # Текст голограммы (поддерживает плейсхолдер {level})
      text:
        - "&6▸ &fУровень: &e{level}"
        - "&6▸ &fСпавнер приостановлен"
      # Смещение голограммы относительно спавнера (X, Y, Z)
      offset:
        x: 0.5
        y: 1.2
        z: 0.5
      # Расстояние между строками текста
      line-spacing: 0.3
      # Как часто обновлять голограмму? (в секундах)
      update-interval: 1

  # Радиус, в котором убийство мобов засчитывается для прокачки спавнера
  radius-kill-mobs-spawner:
    # Расстояние в блоках
    radius: 20

  # Радиус, в котором игроки получают сообщение о повышении уровня спавнера
  radius-message-level-up-spawner:
    # Расстояние в блоках
    radius: 20

# Настройка сообщений плагина
# Чтобы убрать сообщение, оставьте его пустым
messages:
  spawners-messages:
    spawner-level-up: "&aСпавнер в {blocks} блоков от вас повысился до {level} уровня!"
    spawner-max-level: "&aСпавнер в {blocks} блоков от вас достиг максимального {level} уровня!"
    spawner-egg-change-denied: "&cУстановка яиц спавна в спавнеры запрещена!"
  plugin-messages:
    reload:
      config: "&aКонфиг успешно перезагружен за {time}мс.!"
      spawners: "&aВсе спавнера успешно перезагружены за {time}мс.!"
      holograms: "&aГолограммы успешно перезагружены за {time}мс.!"
      all: "&aВесь плагин успешно перезагружен за {time}мс.!"
    no-console: "&cТолько игрок может использовать данную команду!"
    no-found-player: "&cИгрок {player} не найден!"
    no-permission: "&cНедостаточно прав!"
    spawner-menu-closed: "&cМеню спавнера было закрыто из-за перезагрузки, пожалуйста подождите..."
    spawner-egg-change-denied: "&cВы не можете изменить яйцо в спавнере в этом регионе!"
    spawner-menu-access-denied: "&cВы не можете открыть меню спавнера в этом регионе!"
    usage-commands:
      - ""
      - " &aКоманды плагина:"
      - ""
      - "   &6/us reload (all/config/spawners) &f- Перезагрузить что-либо в плагине"
      - "   &6/us logs [on/off] &f- Включить/выключить логи"
      - "   &6/us tpspawner [Айди] (Никнейм) &f- Телепортироваться к любому спавнеру"
      - "   &6/us getid &f- Получить айди спавнера, если смотреть на него"
      - "   &6/us setlevel [Уровень] (Айди/all) (-nocd) &f- Установить уровень спавнера"
      - "   &6/us toggle [stop/continue] (Айди/all) &f- Приостановить/продолжить работу спавнера(ов)"
      - "   &6/us delete (Айди) &f- Удалить спавнер из базы данных"
      - "   &6/us cleardb &f- Очистить всю базу данных"
      - "   &6/us openmenu [Айди] &f- Открыть меню какого-либо спавнера"
      - ""
    logs:
      enabled: "&aЛоги: включены"
      already-enabled: "&cЛоги уже включены!"
      disabled: "&aЛоги: выключены"
      already-disabled: "&cЛоги уже выключены!"
    tpspawner:
      success:
        - "&aИгрок {player} телепортирован к спавнеру с айди {id-spawner}!"
        - "&aКоординаты: {x-spawner} {y-spawner} {z-spawner}, Мир: {world-spawner}"
      no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
      incorrect-id: "&cУкажите корректный айди спавнера!"
    getid:
      success: "&aАйди данного спавнера: {id-spawner}"
      not-found: "&cЭтот спавнер не зарегистрирован в базе данных!"
      no-spawner: "&cВы должны смотреть на спавнер!"
    setlevel:
      success: "&aУровень спавнера с айди {spawner-id} успешно обновлён до {level}!"
      success-no-cooldown: "&aУровень спавнера с айди {spawner-id} обновлён до {level} без сброса таймера!"
      invalid-level: "&cУкажите корректный уровень!"
      no-spawner: "&cВы должны смотреть на спавнер!"
      level-too-high: "&cУровень {level} превышает максимальный ({max-level})!"
      no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
      incorrect-id: "&cУкажите корректный айди спавнера!"
      success-all: "&aУровень всех спавнеров изменён на {level}! (Всего их: {amount-all-spawners})"
      success-all-no-cooldown: "&aУровень всех спавнеров изменён на {level} без сброса таймера! (Всего их: {amount-all-spawners})"
    toggle:
      success-stop: "&aСпавнер с айди {spawner-id} успешно приостановлен в работе!"
      success-stop-all: "&aВсе спавнера успешно приостановлены в работе! (Всего их: {amount-all-spawners})"
      success-continue: "&aСпавнер с айди {spawner-id} успешно продолжен в работе!"
      success-continue-all: "&aВсе спавнера успешно продолжены в работе! (Всего их: {amount-all-spawners})"
      no-spawner: "&cВы должны смотреть на спавнер!"
      no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
      incorrect-id: "&cУкажите корректный айди спавнера!"
      already-stop: "&cДанный спавнер уже приостановлен в работе!"
      already-continue: "&cДанный спавнер уже продолжен в работе!"
      already-stop-all: "&cВсе спавнера уже приостановлены в работе!"
      already-continue-all: "&cВсе спавнера уже продолжены в работе!"
    delete:
      success: "&aСпавнер с айди {id-spawner} успешно удалён!"
      not-found: "&cЭтот спавнер не зарегистрирован в базе данных!"
      no-spawner: "&cВы должны смотреть на спавнер!"
      no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
      incorrect-id: "&cУкажите корректный айди спавнера!"
    cleardb:
      confirm-message:
        - "&a&n▌&r"
        - "&a&n▌&r  &fВы точно хотите &aочистить &fбазу данных?"
        - "&a&n▌&r"
        - "&a&n▌&r                 {confirm-button}"
        - "&a▌&r  "
      confirm-button: "&a[Подтвердить]"
      confirm-hover: "&fНажмите, чтобы &aочистить &fвсю базу данных \nУ вас есть &a30сек.&f, чтобы &aподтвердить &fоперацию"
      must-click: "&cНажмите на кнопку &a[Подтвердить]&c, чтобы очистить базу данных!"
      success:
        - "&aБаза данных очищена за {time}мс.!"
        - "&aВсего очищено спавнеров: {clear-total-spawners}"
      no-spawners: "&cБаза данных уже полностью пуста!"
      error: "&cПроизошла ошибка при очистке базы данных спавнеров! Подробности в консоли."
      time-up: "&cВремя на подтверждение вышло, команда отменена..."
      already-confirmed: "&cВы уже подтвердили очистку или время истекло!"
  openmenu:
    success: "&aМеню спавнера с айди {id-spawner} успешно открыто!"
    no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
    incorrect-id: "&cУкажите корректный айди спавнера!"

Новый optimization.yml:
YAML:
#
#  █░█ █▀█ █▀▀ █▀█ ▄▀█ █▀▄ █▀▀ █▀ █▀█ ▄▀█ █░█░█ █▄░█ █▀▀ █▀█ █▀
#  █▄█ █▀▀ █▄█ █▀▄ █▀█ █▄▀ ██▄ ▄█ █▀▀ █▀█ ▀▄▀▄▀ █░▀█ ██▄ █▀▄ ▄█
#
#                               By   MilkyWay   for   GornaWorld.fun   and   sale
#

# Настройки оптимизации для снижения нагрузки на сервер
optimization:

  # Оптимизация базы данных
  # Настройки для повышения производительности работы с базой данных
  # Уровень оптимизации: Высокий
  database:
    # Параметры пакетной обработки
    batch-processing:
      # Размер пакета для пакетной записи
      # Определяет, сколько операций записи объединяется в одну транзакцию
      # По умолчанию: 50, рекомендуемый диапазон: 10-100
      size: 50
      # Включение дедупликации операций в очереди (true/false)
      # Если включено, повторные обновления одного спавнера перезаписывают предыдущие
      # Уменьшает нагрузку на базу данных
      # Уровень оптимизации: Средний
      deduplication: true
      # Индексация для ускорения запросов (true/false)
      # Создание индекса по полю "owner" для ускорения запросов
      # Включайте, если плагин часто ищет спавнера по владельцу
      # Может увеличить время записи, но ускорит поиск
      # Уровень оптимизации: Низкий
      index-owner: false

  # Оптимизация голограмм
  # Контроль отображения и обновления голограмм для снижения нагрузки
  # Уровень оптимизации: Средний - Высокий
  holograms:

    # Управление видимостью и обновлением
    visibility:
      # Ограничение видимости голограмм
      # Голограммы скрываются, если игрок находится дальше указанного радиуса
      # Уровень оптимизации: Средний
      limit:
        enabled: true
        # Радиус видимости (в блоках)
        # По умолчанию: 20, рекомендуемый диапазон: 10-40
        radius: 20

      # Остановка обновления голограмм вне радиуса
      # Если включено, голограммы не обновляются, если игроков нет в радиусе
      # Уровень оптимизации: Высокий
      no-update:
        enabled: true
        # Радиус для проверки игроков (в блоках)
        # По умолчанию: 20, рекомендуемый диапазон: 10-40
        radius: 20

      # Периодическая очистка устаревших голограмм
      # Уровень оптимизации: Средний
      cleanup:
        # Включен ли параметр? (true/false)
        enabled: true
        # Интервал проверки (в тиках, 1 секунда = 20 тиков)
        # По умолчанию: 1200 (60 секунд), рекомендуемый диапазон: 600-2400
        interval: 1200
        # Проверять только загруженные чанки? (true/false)
        # Если true, проверяет только загруженные чанки, что снижает нагрузку
        loaded-chunks-only: true

  # Управление мобами
  # Настройки для контроля спавна и удаления мобов
  # Уровень оптимизации: Высокий
  mobs:

    # Удаление мобов с замороженным интеллектом, находящихся далеко от спавнера
    # Работает только если включён параметр "freeze-ai"
    # Уровень оптимизации: Средний
    cleanup:
      # Включен ли параметр? (true/false)
      enabled: true
      # Максимальное расстояние от спавнера (в блоках)
      # По умолчанию: 50, рекомендуемый диапазон: 30-100
      max-distance: 50
      # Интервал проверки (в тиках)
      # 1 секунда = 20 тиков
      # По умолчанию: 200, рекомендуемый диапазон: 100-400
      check-interval: 200
      # Радиус вокруг моба для проверки наличия игроков (в блоках)
      # По умолчанию: 10, рекомендуемый диапазон: 5-20
      player-radius: 10

    # Ограничение плотности мобов вокруг спавнера
    # Уровень оптимизации: Высокий
    density-limit:
      # Включен ли параметр? (true/false)
      enabled: true
      # Радиус проверки (в блоках)
      # По умолчанию: 25, рекомендуемый диапазон: 10-50
      radius: 25
      # Максимальное количество мобов в радиусе
      # По умолчанию: 20, рекомендуемый диапазон: 10-50
      max-mobs: 20
      # Режим ограничения:
      # - ALL: Все мобы в радиусе (Уровень оптимизации: Высокий)
      # - SAME_TYPE: Только мобы того же типа (Уровень оптимизации: Средний)
      # - SPAWNER_OWNED: Только мобы, принадлежащие этому спавнеру (Уровень оптимизации: Низкий)
      mode: SPAWNER_OWNED

    # Заморозка интеллекта мобов
    # Отключает ИИ мобов для снижения нагрузки
    # Уровень оптимизации: Высокий
    freeze-ai:
      # Включен ли параметр? (true/false)
      enabled: false

    # Запрет спавна мобов, если в радиусе нет игроков
    # Уровень оптимизации: Высокий
    require-player:
      # Включен ли параметр? (true/false)
      enabled: true
      # Радиус для проверки игроков (в блоках)
      # По умолчанию: 50, рекомендуемый диапазон: 30-100
      radius: 50

    # Запрет спавна в непрогруженных чанках
    # Уровень оптимизации: Высокий
    require-chunk-loaded:
      # Включен ли параметр? (true/false)
      enabled: true

    # Удаление мобов, если в радиусе нет игроков
    # Уровень оптимизации: Высокий
    cleanup-no-players:
      # Включен ли параметр? (true/false)
      enabled: true
      # Радиус проверки игроков (в блоках)
      # По умолчанию: 30, рекомендуемый диапазон: 20-60
      player-radius: 30
      # Время до удаления мобов (в секундах)
      # 0 = мгновенное удаление, по умолчанию: 10, рекомендуемый диапазон: 0-60
      delay-seconds: 10
      # Интервал проверки (в тиках)
      # По умолчанию: 200, рекомендуемый диапазон: 100-400
      check-interval: 200
      # Максимальное количество спавнеров, проверяемых за тик
      # По умолчанию: 10, рекомендуемый диапазон: 5-20
      max-spawners-per-tick: 10
      # Радиус от игрока для проверки мобов спавнеров (в блоках)
      # "-1" = проверять все спавнеры в мире, по умолчанию: 64, рекомендуемый диапазон: 32-128
      mob-player-radius: -1

  # Ограничение общего количества мобов в мире
  # Уровень оптимизации: Высокий
  world-mob-limit:
    # Включен ли параметр? (true/false)
    enabled: false
    # Максимальное количество мобов во всём мире
    # По умолчанию: 500, рекомендуемый диапазон: 200-1000
    max-mobs: 500
    # Действие при превышении лимита:
    # - PAUSE: Приостанавливать спавн новых мобов
    # - PRIORITIZE_ACTIVE: Отдавать приоритет спавнерам в активных чанках
    # - RANDOM: Случайно выбирать спавнеры для спавна
    overflow-action: PAUSE

  # Динамическая регулировка частоты спавна
  # Замедляет спавн при низком TPS или большом количестве игроков
  # Уровень оптимизации: Высокий
  spawn-rate:
    # Включен ли параметр? (true/false)
    enabled: true
    # Диапазон множителя кулдауна спавна
    # 1.0 = стандартная частота, 2.0 = спавн в 2 раза реже
    # Рекомендуемый диапазон: 1.0-3.0
    cooldown-multiplier:
      min: 1.0
      max: 2.0

    # Регулировка по TPS сервера
    tps-scaling:
      # Включен ли параметр? (true/false)
      enabled: true
      # Порог TPS, ниже которого спавн замедляется
      # По умолчанию: 16.0, рекомендуемый диапазон: 10.0-18.0
      low-tps: 16.0
      # Множитель при низком TPS
      # По умолчанию: 1.8, рекомендуемый диапазон: 1.0-3.0
      low-tps-multiplier: 1.8
      # Множитель при нормальном TPS
      # По умолчанию: 1.0, рекомендуемый диапазон: 0.5-1.5
      normal-tps-multiplier: 1.0

    # Регулировка по количеству игроков
    player-scaling:
      # Включен ли параметр? (true/false)
      enabled: false
      # Радиус для подсчёта игроков (в блоках)
      # По умолчанию: 32, рекомендуемый диапазон: 16-64
      radius: 32
      # Увеличение множителя за каждого игрока
      # Например, 0.25 = +25% к кулдауну за игрока
      # По умолчанию: 0.25, рекомендуемый диапазон: 0.1-0.5
      multiplier-step: 0.25
      # Максимальное количество игроков для расчёта
      # По умолчанию: 10, рекомендуемый диапазон: 10-20
      max-players: 15
      # Режим комбинирования множителей
      # - MAX: Используется максимальный множитель
      # - AVERAGE: Используется среднее значение
      combination: MAX

  # Асинхронная обработка спавнеров
  # Выполняет некоторые проверки спавнеров в асинхронном потоке
  # Уровень оптимизации: Высокий
  async-spawner-processing:
    # Включен ли параметр? (true/false)
    enabled: true
    # Какие операции выполнять асинхронно
    # - BLOCK_CHECK: Проверка типа блока
    # - SYNC_PARAMETERS: Синхронизация параметров спавнера
    # - HOLOGRAM_UPDATE: Обновление голограмм
    async-operations:
      - BLOCK_CHECK
      - SYNC_PARAMETERS
    # Максимальное количество спавнеров, обрабатываемых асинхронно за тик
    # По умолчанию: 20, рекомендуемый диапазон: 10-50
    max-spawners-per-tick: 20
    # Интервал асинхронной обработки (в тиках)
    # По умолчанию: 10, рекомендуемый диапазон: 5-20
    interval: 10

  # Оптимизация для управления чанками со спавнерами
  # Уровень оптимизации: Высокий
  chunks:
    # Ограничение количества одновременно обрабатываемых чанков
    # Уровень оптимизации: Высокий
    processing-limit:
      # Включен ли параметр? (true/false)
      enabled: true
      # Максимальное количество чанков за тик
      # По умолчанию: 5, рекомендуемый диапазон: 3-10
      max-chunks-per-tick: 5

    # Управление выгрузкой чанков со спавнерами
    # Выгружает чанки при отсутствии игроков или низком TPS
    # Уровень оптимизации: Высокий
    unload-chunks:
      # Включен ли параметр? (true/false)
      enabled: true
      # Радиус для проверки игроков (в блоках)
      # По умолчанию: 128, рекомендуемый диапазон: 64-256
      player-radius: 128
      # Интервал проверки чанков (в тиках)
      # По умолчанию: 600, рекомендуемый диапазон: 200-1200
      check-interval: 600
      # Минимальный TPS для выгрузки чанков
      # Если TPS ниже, чанки выгружаются быстрее
      # По умолчанию: 14.0, рекомендуемый диапазон: 10.0-16.0
      min-tps: 14.0

    # Ограничение загрузки новых чанков
    # Ограничивает количество чанков, загружаемых за один раз при прогрузке мира
    # Уровень оптимизации: Высокий
    chunk-load-limit:
      # Включен ли параметр? (true/false)
      enabled: true
      # Максимальное количество чанков, загружаемых за один тик
      # По умолчанию: 3, рекомендуемый диапазон: 1-5
      max-chunks-per-tick: 3
      # Задержка между загрузками чанков (в тиках)
      # По умолчанию: 10, рекомендуемый диапазон: 5-20
      delay-between-loads: 10
      # Приоритет загрузки чанков с игроками
      # Если включено, чанки с игроками загружаются в первую очередь
      # Уровень оптимизации: Средний
      prioritize-player-chunks: true

    # Ограничение проверки спавнеров в чанках
    # Уменьшает количество проверок спавнеров в новых чанках
    # Уровень оптимизации: Высокий
    spawner-check-limit:
      # Включен ли параметр? (true/false)
      enabled: true
      # Максимальное количество спавнеров, проверяемых в чанке за один тик
      # По умолчанию: 10, рекомендуемый диапазон: 5-20
      max-spawners-per-chunk: 10
      # Интервал проверки спавнеров в новых чанках (в тиках)
      # По умолчанию: 20, рекомендуемый диапазон: 10-40
      check-interval: 20
      # Проверять спавнеры только в активных чанках? (true/false)
      # Если true, проверяет только чанки с игроками в радиусе
      active-chunks-only: true
      # Радиус для определения активных чанков (в блоках)
      # По умолчанию: 64, рекомендуемый диапазон: 32-128
      active-chunk-radius: 64

    # Кэширование проверок радиуса игроков
    # Использует кэш для оптимизации поиска игроков
    # Уровень оптимизации: Средний
    player-radius-cache:
      # Включен ли параметр? (true/false)
      enabled: true
      # Интервал обновления кэша (в тиках)
      # По умолчанию: 10, рекомендуемый диапазон: 5-20
      update-interval: 10
      # Динамическая регулировка интервала обновления
      dynamic-interval:
        # Включен ли параметр? (true/false)
        enabled: true
        # Минимальный TPS, при котором интервал увеличивается
        low-tps-threshold: 15.0
        # Множитель интервала при низком TPS
        low-tps-multiplier: 1.5
        # Максимальный интервал (в тиках)
        max-interval: 20
      # Радиус кэширования (в чанках)
      # Ограничивает проверку игроков в радиусе от спавнеров
      radius: 8
      # Режим кэширования
      # - FULL: кэшировать все чанки с игроками
      # - SPAWNER_ONLY: кэшировать только чанки со спавнерами
      # - PLAYER_ONLY: кэшировать только чанки с игроками
      # - ADAPTIVE: переключаться между режимами
      mode: ADAPTIVE
      # Максимальное число кэшируемых чанков
      max-chunks: 1000

#
# Рекомендации по настройке параметров optimization.yml для оптимизации плагина
# под различные характеристики сервера
#
# Ниже приведены рекомендации по настройке каждого параметра в зависимости от характеристик
# сервера (CPU, RAM) и поведения, описанного пользователем: сервер с 6 ГБ RAM и 200% CPU
# испытывает задержки в прогрузке чанков (1-2 секунды), а сервер с 10 ГБ RAM работает стабильно
# с быстрой прогрузкой чанков. Эти рекомендации помогут минимизировать задержки и нагрузку
#
# Текущие параметры по умолчанию установлены для сервера со средними характеристиками
# (примерно 8 ГБ RAM, 2-4 ядра CPU с частотой 3.0+ ГГц). Они обеспечивают баланс
# между производительностью и функциональностью, но могут быть не оптимальны для
# серверов с меньшими (6 ГБ RAM, 200% CPU) или большими (10 ГБ RAM и выше) ресурсами
#
# === database ===
# - batch-processing.size:
#   Для сервера с 6 ГБ RAM: Установите 20-30, чтобы снизить нагрузку на базу данных
#   при ограниченных ресурсах. Меньший размер пакета уменьшает пиковую нагрузку на CPU
#   Для сервера с 10 ГБ RAM: Можно установить 50-70 для более быстрой обработки,
#   так как ресурсов достаточно
# - batch-processing.deduplication:
#   Рекомендуется включить (true) для обоих случаев. Это уменьшает количество
#   операций записи, что полезно при любой нагрузке
# - batch-processing.index-owner:
#   Для сервера с 6 ГБ RAM: Отключите (false), чтобы минимизировать затраты на
#   индексацию, так как это может замедлить запись при ограниченной памяти
#   Для сервера с 10 ГБ RAM: Включите (true), если плагин часто выполняет поиск
#   спавнеров по владельцу, так как это ускорит запросы без значительных затрат
#
# === holograms ===
# - visibility.limit.enabled:
#   Включите (true) для обоих серверов, чтобы ограничить видимость голограмм и
#   снизить нагрузку на рендеринг
# - visibility.limit.radius:
#   Для сервера с 6 ГБ RAM: Установите 10-15 блоков, чтобы уменьшить количество
#   отображаемых голограмм и снизить нагрузку
#   Для сервера с 10 ГБ RAM: Можно установить 20-25 блоков для лучшей видимости
#   без значительного влияния на производительность
# - visibility.no-update.enabled:
#   Включите (true) для обоих серверов. Это предотвращает обновление голограмм,
#   если рядом нет игроков, что снижает нагрузку
# - visibility.no-update.radius:
#   Для сервера с 6 ГБ RAM: Установите 10-15 блоков, чтобы минимизировать проверки
#   Для сервера с 10 ГБ RAM: Установите 20 блоков для баланса между оптимизацией
#   и функциональностью
# - cleanup.enabled:
#   Включите (true) для обоих серверов, чтобы удалять устаревшие голограммы
# - cleanup.interval:
#   Для сервера с 6 ГБ RAM: Установите 1800-2400 тиков (90-120 секунд), чтобы
#   реже выполнять очистку и снизить нагрузку
#   Для сервера с 10 ГБ RAM: Установите 600-1200 тиков (30-60 секунд) для более
#   частой очистки и поддержания актуальности
# - cleanup.loaded-chunks-only:
#   Включите (true) для обоих серверов, чтобы ограничить проверки загруженными
#   чанками и снизить нагрузку на CPU
#
# === mobs ===
# - cleanup.enabled:
#   Включите (true) для обоих серверов, чтобы удалять мобов, которые находятся
#   далеко от спавнеров, снижая общее количество сущностей
# - cleanup.max-distance:
#   Для сервера с 6 ГБ RAM: Установите 30-40 блоков, чтобы минимизировать количество
#   мобов в памяти
#   Для сервера с 10 ГБ RAM: Установите 50-60 блоков, чтобы сохранить больше мобов
#   для геймплея
# - cleanup.check-interval:
#   Для сервера с 6 ГБ RAM: Установите 300-400 тиков (15-20 секунд), чтобы реже
#   проверять мобов и снизить нагрузку
#   Для сервера с 10 ГБ RAM: Установите 100-200 тиков (5-10 секунд) для более
#   частой очистки
# - cleanup.player-radius:
#   Для сервера с 6 ГБ RAM: Установите 5-10 блоков, чтобы быстрее удалять мобов
#   при отсутствии игроков
#   Для сервера с 10 ГБ RAM: Установите 10-15 блоков для сохранения мобов дольше
# - density-limit.enabled:
#   Включите (true) для обоих серверов, чтобы ограничить плотность мобов и снизить
#   нагрузку на сервер
# - density-limit.radius:
#   Для сервера с 6 ГБ RAM: Установите 15-20 блоков, чтобы ограничить область
#   проверки и снизить нагрузку
#   Для сервера с 10 ГБ RAM: Установите 25-30 блоков для более комфортного геймплея
# - density-limit.max-mobs:
#   Для сервера с 6 ГБ RAM: Установите 10-15 мобов, чтобы минимизировать нагрузку
#   Для сервера с 10 ГБ RAM: Установите 20-25 мобов для более насыщенного спавна
# - density-limit.mode:
#   Для сервера с 6 ГБ RAM: Установите SPAWNER_OWNED, чтобы проверять только мобов
#   конкретного спавнера, минимизируя вычисления
#   Для сервера с 10 ГБ RAM: Можно установить SAME_TYPE или ALL для более гибкого
#   контроля, если производительность позволяет
# - freeze-ai.enabled:
#   Для сервера с 6 ГБ RAM: Включите (true), чтобы отключить ИИ мобов и снизить
#   нагрузку на CPU
#   Для сервера с 10 ГБ RAM: Можно оставить выключенным (false), если геймплей
#   требует активного ИИ мобов
# - require-player.enabled:
#   Включите (true) для обоих серверов, чтобы спавнить мобов только при наличии
#   игроков, что значительно снижает нагрузку
# - require-player.radius:
#   Для сервера с 6 ГБ RAM: Установите 30-40 блоков, чтобы ограничить спавн и
#   снизить нагрузку
#   Для сервера с 10 ГБ RAM: Установите 50-60 блоков для более широкого радиуса
#   спавна
# - require-chunk-loaded.enabled:
#   Включите (true) для обоих серверов, чтобы предотвратить спавн в непрогруженных
#   чанках, что улучшает стабильность
# - cleanup-no-players.enabled:
#   Включите (true) для обоих серверов, чтобы удалять мобов при отсутствии игроков
# - cleanup-no-players.player-radius:
#   Для сервера с 6 ГБ RAM: Установите 20-25 блоков, чтобы быстрее удалять мобов
#   Для сервера с 10 ГБ RAM: Установите 30-40 блоков для сохранения мобов дольше
# - cleanup-no-players.delay-seconds:
#   Для сервера с 6 ГБ RAM: Установите 5-10 секунд для быстрого удаления мобов
#   Для сервера с 10 ГБ RAM: Установите 10-15 секунд для более плавного геймплея
# - cleanup-no-players.check-interval:
#   Для сервера с 6 ГБ RAM: Установите 300-400 тиков (15-20 секунд), чтобы реже
#   проверять мобов
#   Для сервера с 10 ГБ RAM: Установите 100-200 тиков (5-10 секунд) для частой
#   очистки
# - cleanup-no-players.max-spawners-per-tick:
#   Для сервера с 6 ГБ RAM: Установите 5-10 спавнеров, чтобы ограничить проверки
#   Для сервера с 10 ГБ RAM: Установите 10-15 спавнеров для более быстрой обработки
# - cleanup-no-players.mob-player-radius:
#   Для сервера с 6 ГБ RAM: Установите 32-64 блоков, чтобы ограничить проверки
#   Для сервера с 10 ГБ RAM: Установите -1 (все спавнеры) или 64-128 блоков, если
#   производительность позволяет
#
# === world-mob-limit ===
# - enabled:
#   Для сервера с 6 ГБ RAM: Включите (true), чтобы ограничить общее количество
#   мобов и снизить нагрузку
#   Для сервера с 10 ГБ RAM: Можно отключить (false), если геймплей требует больше
#   мобов
# - max-mobs:
#   Для сервера с 6 ГБ RAM: Установите 200-300 мобов, чтобы минимизировать нагрузку
#   Для сервера с 10 ГБ RAM: Установите 400-600 мобов для более насыщенного мира
# - overflow-action:
#   Для сервера с 6 ГБ RAM: Установите PAUSE, чтобы приостановить спавн при
#   превышении лимита
#   Для сервера с 10 ГБ RAM: Установите PRIORITIZE_ACTIVE, чтобы отдавать
#   приоритет активным чанкам
#
# === spawn-rate ===
# - enabled:
#   Включите (true) для обоих серверов, чтобы динамически регулировать спавн
# - cooldown-multiplier.min:
#   Для обоих серверов: Установите 1.0 для стандартной частоты спавна
# - cooldown-multiplier.max:
#   Для сервера с 6 ГБ RAM: Установите 2.0-2.5, чтобы замедлить спавн при
#   высокой нагрузке
#   Для сервера с 10 ГБ RAM: Установите 1.5-2.0 для меньшего замедления
# - tps-scaling.enabled:
#   Включите (true) для обоих серверов, чтобы регулировать спавн по TPS
# - tps-scaling.low-tps:
#   Для сервера с 6 ГБ RAM: Установите 14.0-15.0, чтобы раньше замедлять спавн
#   Для сервера с 10 ГБ RAM: Установите 16.0-17.0, так как сервер справляется лучше
# - tps-scaling.low-tps-multiplier:
#   Для сервера с 6 ГБ RAM: Установите 2.0-2.5 для сильного замедления спавна
#   Для сервера с 10 ГБ RAM: Установите 1.5-1.8 для умеренного замедления
# - tps-scaling.normal-tps-multiplier:
#   Для обоих серверов: Установите 0.8-1.0 для нормальной работы при высоком TPS
# - player-scaling.enabled:
#   Для сервера с 6 ГБ RAM: Отключите (false), чтобы не увеличивать нагрузку
#   дополнительными проверками
#   Для сервера с 10 ГБ RAM: Включите (true), если нужно учитывать количество игроков
# - player-scaling.radius:
#   Для сервера с 10 ГБ RAM: Установите 32-48 блоков для проверки игроков
# - player-scaling.multiplier-step:
#   Для сервера с 10 ГБ RAM: Установите 0.1-0.2 для умеренного увеличения кулдауна
# - player-scaling.max-players:
#   Для сервера с 10 ГБ RAM: Установите 10-15 игроков для ограничения проверок
# - player-scaling.combination:
#   Для сервера с 10 ГБ RAM: Установите AVERAGE для более плавной регулировки
#
# === async-spawner-processing ===
# - enabled:
#   Включите (true) для обоих серверов, чтобы снизить нагрузку на основной поток
# - async-operations:
#   Для сервера с 6 ГБ RAM: Установите [BLOCK_CHECK, SYNC_PARAMETERS], чтобы
#   минимизировать асинхронные задачи и избежать проблем с синхронизацией
#   Для сервера с 10 ГБ RAM: Установите [BLOCK_CHECK, SYNC_PARAMETERS, HOLOGRAM_UPDATE]
#   для максимальной оптимизации
# - max-spawners-per-tick:
#   Для сервера с 6 ГБ RAM: Установите 10-15 спавнеров, чтобы ограничить нагрузку
#   Для сервера с 10 ГБ RAM: Установите 20-30 спавнеров для более быстрой обработки
# - interval:
#   Для сервера с 6 ГБ RAM: Установите 15-20 тиков, чтобы реже выполнять проверки
#   Для сервера с 10 ГБ RAM: Установите 5-10 тиков для более частой обработки
#
# === chunks ===
# - processing-limit.enabled:
#   Включите (true) для обоих серверов, чтобы ограничить обработку чанков
# - processing-limit.max-chunks-per-tick:
#   Для сервера с 6 ГБ RAM: Установите 3-4 чанка, чтобы минимизировать задержки
#   при прогрузке
#   Для сервера с 10 ГБ RAM: Установите 5-7 чанков для более быстрой прогрузки
# - unload-chunks.enabled:
#   Включите (true) для обоих серверов, чтобы выгружать неактивные чанки
# - unload-chunks.player-radius:
#   Для сервера с 6 ГБ RAM: Установите 64-96 блоков, чтобы быстрее выгружать чанки
#   Для сервера с 10 ГБ RAM: Установите 128-192 блока для сохранения чанков дольше
# - unload-chunks.check-interval:
#   Для сервера с 6 ГБ RAM: Установите 800-1200 тиков (40-60 секунд), чтобы реже
#   проверять чанки
#   Для сервера с 10 ГБ RAM: Установите 400-600 тиков (20-30 секунд) для частой
#   проверки
# - unload-chunks.min-tps:
#   Для сервера с 6 ГБ RAM: Установите 12.0-14.0, чтобы раньше выгружать чанки
#   Для сервера с 10 ГБ RAM: Установите 14.0-16.0 для менее агрессивной выгрузки
# - chunk-load-limit.enabled:
#   Включите (true) для обоих серверов, чтобы устранить задержки при прогрузке чанков
# - chunk-load-limit.max-chunks-per-tick:
#   Для сервера с 6 ГБ RAM: Установите 1-2 чанка, чтобы минимизировать задержки
#   (1-2 секунды, как указано)
#   Для сервера с 10 ГБ RAM: Установите 3-4 чанка, так как сервер справляется лучше
# - chunk-load-limit.delay-between-loads:
#   Для сервера с 6 ГБ RAM: Установите 15-20 тиков, чтобы увеличить паузу между
#   загрузками и снизить нагрузку
#   Для сервера с 10 ГБ RAM: Установите 5-10 тиков для более быстрой прогрузки
# - chunk-load-limit.prioritize-player-chunks:
#   Включите (true) для обоих серверов, чтобы ускорить прогрузку чанков с игроками
# - spawner-check-limit.enabled:
#   Включите (true) для обоих серверов, чтобы ограничить проверки спавнеров
# - spawner-check-limit.max-spawners-per-chunk:
#   Для сервера с 6 ГБ RAM: Установите 5-8 спавнеров, чтобы снизить нагрузку
#   Для сервера с 10 ГБ RAM: Установите 10-15 спавнеров для более быстрой обработки
# - spawner-check-limit.check-interval:
#   Для сервера с 6 ГБ RAM: Установите 30-40 тиков, чтобы реже проверять спавнеры
#   Для сервера с 10 ГБ RAM: Установите 10-20 тиков для частой проверки
# - spawner-check-limit.active-chunks-only:
#   Включите (true) для обоих серверов, чтобы обрабатывать только активные чанки
# - spawner-check-limit.active-chunk-radius:
#   Для сервера с 6 ГБ RAM: Установите 32-48 блоков, чтобы ограничить проверки
#   Для сервера с 10 ГБ RAM: Установите 64-96 блоков для более широкого охвата
# - player-radius-cache.enabled:
#   Включите (true) для обоих серверов, чтобы кэшировать проверки игроков
# - player-radius-cache.update-interval:
#   Для сервера с 6 ГБ RAM: Установите 15-20 тиков, чтобы реже обновлять кэш
#   Для сервера с 10 ГБ RAM: Установите 5-10 тиков для частого обновления
# - player-radius-cache.dynamic-interval.enabled:
#   Включите (true) для обоих серверов, чтобы адаптировать интервал к TPS
# - player-radius-cache.dynamic-interval.low-tps-threshold:
#   Для сервера с 6 ГБ RAM: Установите 14.0-15.0, чтобы раньше увеличивать интервал
#   Для сервера с 10 ГБ RAM: Установите 16.0-17.0 для менее агрессивной регулировки
# - player-radius-cache.dynamic-interval.low-tps-multiplier:
#   Для сервера с 6 ГБ RAM: Установите 1.5-2.0 для сильного увеличения интервала
#   Для сервера с 10 ГБ RAM: Установите 1.2-1.5 для умеренного увеличения
# - player-radius-cache.dynamic-interval.max-interval:
#   Для сервера с 6 ГБ RAM: Установите 25-30 тиков, чтобы ограничить частоту
#   Для сервера с 10 ГБ RAM: Установите 15-20 тиков для более частого обновления
# - player-radius-cache.radius:
#   Для сервера с 6 ГБ RAM: Установите 4-6 чанков, чтобы ограничить проверки
#   Для сервера с 10 ГБ RAM: Установите 8-10 чанков для более широкого охвата
# - player-radius-cache.mode:
#   Для сервера с 6 ГБ RAM: Установите SPAWNER_ONLY или PLAYER_ONLY, чтобы
#   минимизировать кэшируемые чанки
#   Для сервера с 10 ГБ RAM: Установите ADAPTIVE или FULL для максимальной
#   эффективности
# - player-radius-cache.max-chunks:
#   Для сервера с 6 ГБ RAM: Установите 500-700 чанков, чтобы ограничить память
#   Для сервера с 10 ГБ RAM: Установите 1000-1500 чанков для более полного кэша
#
# === Общие рекомендации ===
# Для сервера с 6 ГБ RAM и задержками при прогрузке чанков (1-2 секунды):
# - Сосредоточьтесь на минимизации проверок и обработок, используя меньшие радиусы,
#   более редкие интервалы и ограничения на количество спавнеров/чанков за тик
#   Включите параметры, такие как require-player, require-chunk-loaded, и
#   cleanup-no-players, чтобы минимизировать спавн и очистку мобов
# - Используйте SPAWNER_OWNED для density-limit.mode и отключите player-scaling,
#   чтобы избежать лишних вычислений
#
# Для сервера с 10 ГБ RAM и стабильной прогрузкой чанков:
# - Можно использовать более агрессивные настройки (больше спавнеров/чанков за тик,
#   меньшие интервалы, большие радиусы), так как сервер справляется с нагрузкой
#   Включите player-scaling и index-owner, если геймплей требует сложных проверок
# - Используйте ADAPTIVE или FULL для player-radius-cache.mode, чтобы максимально
#   использовать доступную память
#
# Эти настройки помогут сбалансировать производительность и функциональность плагина,
# устраняя задержки при прогрузке чанков на сервере с 6 ГБ RAM и поддерживая
# стабильную работу на сервере с 10 ГБ RAM
  • Исправлен баг в обработке события входа игрока, из-за которого возникала ошибка, связанная с некорректной загрузкой голограмм спавнеров. Теперь голограммы обновляются стабильно, обеспечивая правильную работу плагина без сбоев
  • Исправлен баг, из-за которого плагин выдавал ошибку при попытке проверить расстояние до игроков, находящихся в другом мире
  • Исправлен баг, из-за которого голограммы спавнеров создавали спам в консоли при использовании ProtocolLib. Теперь логирование статуса ProtocolLib происходит один раз при инициализации, а голограммы работают стабильно
  • Более оптимизирован класс, отвечающий за голограммы. Теперь при большом скоплении спавнеров в одном месте, голограммы не будут сильно нагружать сервер
  • Исправлен баг, связанный с тем, что каким-то образом мобы из спавнера не спавнились. Ошибка возникла из-за неправильного кода, который неправильно вычислял радиус игроков и затем сохранял эти данные
  • Исправлен очень серьёзный баг, из-за которого спавнер после смены типа моба продолжал спавнить старый тип мобов. Теперь при изменении типа моба все данные спавнера сбрасываются, и он корректно спавнит только новый тип мобов
  • Улучшено логирование в консоль: удалены логи, которые бесконечно спамили в консоль, замены и объединены некоторые логи в классе, управляющим голограммами
  • Добавлен новый параметр в конфиге "explosion-spawners", позволяющий включить и выключить взрывоустойчивость от любых взрывов для спавнеров спавнеров
  • Добавлен новый параметр "protocollib", для включения/выключения плагина ProtocolLib для лучшей оптимизации и упрощения голограмм)

YAML:
#
#  █░█ █▀█ █▀▀ █▀█ ▄▀█ █▀▄ █▀▀ █▀ █▀█ ▄▀█ █░█░█ █▄░█ █▀▀ █▀█ █▀
#  █▄█ █▀▀ █▄█ █▀▄ █▀█ █▄▀ ██▄ ▄█ █▀▀ █▀█ ▀▄▀▄▀ █░▀█ ██▄ █▀▄ ▄█
#
#                               By   MilkyWay   for   GornaWorld.fun   and   sale
#

# Настройки параметров плагина
settings:

  # Включение вывода логов плагина в консоль для отладки ошибок
  logs-in-console:
    # Активны ли логи? (true/false)
    enabled: false

  # Список миров, где плагин не будет работать
  disable-worlds:
    # Включён ли запрет для указанных миров? (true/false)
    enabled: false
    # Названия миров
    worlds:
      - "CustomWorld"
      - "CustomWorld2"
      - "CustomWorld_3"

  # Удалять ли яйцо призыва моба из инвентаря игрока при его установке в спавнер
  consume-spawn-egg:
    # Включено ли удаление яйца? (true/false)
    # Если true, яйцо будет удаляться из основной или дополнительной руки игрока после установки
    # Если false, яйцо останется в инвентаре игрока
    enabled: true

  # Ограничение изменения яйца в спавнере в чужих регионах WorldGuard
  restrict-spawner-egg-change:
    # Включено ли ограничение? (true/false)
    enabled: true
    # Право, позволяющее обойти ограничение
    bypass-permission: "upgradespawners.bypass.egg-change"
    message:
      enabled: false
      message: "&cВы не можете изменить яйцо в спавнере в этом регионе!"

  # Ограничение открытия меню спавнера в чужих регионах WorldGuard
  restrict-spawner-menu-access:
    # Включено ли ограничение? (true/false)
    enabled: true
    # Право, позволяющее обойти ограничение
    bypass-permission: "upgradespawners.bypass.menu-access"
    message:
      enabled: false
      message: "&cВы не можете открыть меню спавнера в этом регионе!"

  # Включение взрывоустойчивости спавнеров
  explosion-spawners:
    # Включена ли взрывоустойчивость? (true/false)
    # (Если true, спавнеры нельзя будет разрушить взрывами или любым другим способом)
    # (Если false, спавнеры можно будет разрушать как обычно)
    enabled: false

  # Интеграция с плагином PlaceholderAPI для использования его плейсхолдеров
  placeholderapi:
    # (Рекомендуется выключить данный параметр для снижения нагрузки, если вы не используете его нигде)
    enabled: true

  # Интеграция с плагином ProtocolLib позволяет использовать его методы для создания голограммя
  # (Для использования данного параметра должен обязательно установлен плагин ProtocolLib)
  protocollib:
    # (Рекомендуется выключить данный параметр для лучшей оптимизации и упрощения голограмм)
    enabled: true

  # Учёт только убийств мобов, совершённых игроками, для прокачки спавнера
  count-only-player-kills:
    # Включён ли режим учёта только убийств игроками? (true/false)
    # Если true, спавнер будет засчитывать только мобов, убитых игроками напрямую
    # Если false, будут учитываться все смерти мобов, включая падение, лаву, других мобов и т.д.
    enabled: true

  # Время хранения данных удалённых спавнеров перед их окончательным удалением из памяти
  # Укажите 0, чтобы отключить автоматическое удаление (данные будут храниться до перезапуска сервера)
  removed-spawners-timeout:
    # Время в секундах, после которого данные спавнера будут удалены из временного хранилища, если спавнер не был восстановлен
    # (Рекомендуется значение 60-600 секунд)
    time: 300

  # Время ожидания подтверждения для команды очистки базы данных (/us cleardb)
  # Укажите 0, чтобы отключить таймер (подтверждение будет активно до ручного выполнения или перезапуска сервера)
  cleardb-confirmation-timeout:
    # Время в секундах, после которого запрос на подтверждение очистки базы данных будет отменён
    time: 30

  # Сбрасывать ли уровень спавнера при установке нового яйца призыва в спавнер
  reset-level-on-new-egg:
    # Включён ли сброс уровня? (true/false)
    enabled: true

  # Сбрасывать ли время до спавна мобов на значение текущего уровня при повышении уровня спавнера
  reset-cooldown-on-level-up:
    # Включён ли сброс времени до спавна? (true/false)
    enabled: true

  # Количество попыток найти место для спавна мобов
  spawn-attempts:
    # Сколько раз пытаться найти координаты? (Рекомендуется 5–20)
    count: 10

  # Настройки частиц при спавне мобов из спавнера
  particles:
    # Включены ли частицы? (true/false)
    enabled: true
    # Тип частиц (доступные: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Particle.html)
    type: "SMOKE_NORMAL"
    # Сколько частиц отображать?
    count: 100
    # Расстояние разброса частиц по осям X, Y, Z
    offset-x: 0.5
    offset-y: 0.5
    offset-z: 0.5

  # Ограничение на количество спавнеров для каждого игрока
  limit-spawners-the-players:
    # Активен ли лимит? (true/false)
    enabled: true
    # Максимальное число спавнеров на игрока
    max-spawners: 5
    # Сообщение игроку при превышении лимита
    message: "&cСтоп! &fВы &cне можете &fпоставить более &c{limit-spawners} &fспанеров!"
    # Право, позволяющее обойти лимит
    bypass-permission: upgradespawners.bypass.limit-spawners

  # Ограничение по высоте установки спавнеров
  limit-coordinates-y-spawners:
    # Активен ли лимит высоты? (true/false)
    enabled: true
    # Минимальная допустимая высота (Y)
    min-y: -30
    # Сообщение при установке ниже минимума
    message-min: "&cСтоп! &fВы &cне можете &fпоставить спавнер ниже &c{limit-min-y} &fвысоты!"
    # Максимальная допустимая высота (Y)
    max-y: 180
    # Сообщение при установке выше максимума
    message-max: "&cСтоп! &fВы &cне можете &fпоставить спавнер выше &c{limit-max-y} &fвысоты!"
    # Право, позволяющее игнорировать лимит высоты
    bypass-permission: upgradespawners.bypass.limit-coordinates-y

  # Настройки голограмм над спавнерами
  holograms:

    # Голограмма для спавнера с установленным мобом
    active-mob:
      # Показывать голограмму? (true/false)
      enabled: true
      # Текст голограммы (поддерживает плейсхолдеры {level}, {time})
      text:
        - "&6▸ &fУровень: &e{level}"
        - "&6▸ &fСпавн через: &e{time}с."
      # Смещение голограммы относительно спавнера (X, Y, Z)
      offset:
        x: 0.5
        y: 1.2
        z: 0.5
      # Расстояние между строками текста
      line-spacing: 0.3
      # Как часто обновлять голограмму? (в секундах)
      update-interval: 1

    # Голограмма для пустого спавнера (работает с версии 1.19.3 и выше)
    empty-mob:
      # Показывать голограмму? (true/false)
      enabled: true
      # Текст голограммы (поддерживает плейсхолдер {level})
      text:
        - "&6▸ &fУровень: &e{level}"
        - "&6▸ &fСпавнер пуст"
      # Смещение голограммы относительно спавнера (X, Y, Z)
      offset:
        x: 0.5
        y: 1.2
        z: 0.5
      # Расстояние между строками текста
      line-spacing: 0.3
      # Как часто обновлять голограмму? (в секундах)
      update-interval: 1

    # Голограмма для приостановленного спавнера
    stop-spawner:
      # Показывать голограмму? (true/false)
      enabled: true
      # Текст голограммы (поддерживает плейсхолдер {level})
      text:
        - "&6▸ &fУровень: &e{level}"
        - "&6▸ &fСпавнер приостановлен"
      # Смещение голограммы относительно спавнера (X, Y, Z)
      offset:
        x: 0.5
        y: 1.2
        z: 0.5
      # Расстояние между строками текста
      line-spacing: 0.3
      # Как часто обновлять голограмму? (в секундах)
      update-interval: 1

  # Радиус, в котором убийство мобов засчитывается для прокачки спавнера
  radius-kill-mobs-spawner:
    # Расстояние в блоках
    radius: 20

  # Радиус, в котором игроки получают сообщение о повышении уровня спавнера
  radius-message-level-up-spawner:
    # Расстояние в блоках
    radius: 20

# Настройка сообщений плагина
# Чтобы убрать сообщение, оставьте его пустым
messages:
  spawners-messages:
    spawner-level-up: "&aСпавнер в {blocks} блоков от вас повысился до {level} уровня!"
    spawner-max-level: "&aСпавнер в {blocks} блоков от вас достиг максимального {level} уровня!"
  plugin-messages:
    reload:
      config: "&aКонфиг успешно перезагружен за {time}мс.!"
      spawners: "&aВсе спавнера успешно перезагружены за {time}мс.!"
      all: "&aВесь плагин успешно перезагружен за {time}мс.!"
      save: "&aУспешно сохранено {count} спавнеров!"
    no-console: "&cТолько игрок может использовать данную команду!"
    no-found-player: "&cИгрок {player} не найден!"
    no-permission: "&cНедостаточно прав!"
    spawner-menu-closed: "&cМеню спавнера было закрыто из-за перезагрузки, пожалуйста подождите..."
    spawner-egg-change-denied: "&cВы не можете изменить яйцо в спавнере в этом регионе!"
    spawner-menu-access-denied: "&cВы не можете открыть меню спавнера в этом регионе!"
    usage-commands:
      - ""
      - " &aКоманды плагина:"
      - ""
      - "   &6/us reload (all/config/spawners) &f- Перезагрузить что-либо в плагине"
      - "   &6/us logs [on/off] &f- Включить/выключить логи"
      - "   &6/us tpspawner [Айди] (Никнейм) &f- Телепортироваться к любому спавнеру"
      - "   &6/us getid &f- Получить айди спавнера, если смотреть на него"
      - "   &6/us setlevel [Уровень] (Айди/all) (-nocd) &f- Установить уровень спавнера"
      - "   &6/us toggle [stop/continue] (Айди/all) &f- Приостановить/продолжить работу спавнера(ов)"
      - "   &6/us delete (Айди) &f- Удалить спавнер из базы данных"
      - "   &6/us cleardb &f- Очистить всю базу данных"
      - "   &6/us openmenu [Айди] &f- Очистить всю базу данных"
      - ""
    logs:
      enabled: "&aЛоги: включены"
      already-enabled: "&cЛоги уже включены!"
      disabled: "&aЛоги: выключены"
      already-disabled: "&cЛоги уже выключены!"
    tpspawner:
      success:
        - "&aИгрок {player} телепортирован к спавнеру с айди {id-spawner}!"
        - "&aКоординаты: {x-spawner} {y-spawner} {z-spawner}, Мир: {world-spawner}"
      no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
      incorrect-id: "&cУкажите корректный айди спавнера!"
    getid:
      success: "&aАйди данного спавнера: {id-spawner}"
      not-found: "&cЭтот спавнер не зарегистрирован в базе данных!"
      no-spawner: "&cВы должны смотреть на спавнер!"
    setlevel:
      success: "&aУровень спавнера с айди {spawner-id} успешно обновлён до {level}!"
      success-no-cooldown: "&aУровень спавнера с айди {spawner-id} обновлён до {level} без сброса таймера!"
      invalid-level: "&cУкажите корректный уровень!"
      no-spawner: "&cВы должны смотреть на спавнер!"
      level-too-high: "&cУровень {level} превышает максимальный ({max-level})!"
      no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
      incorrect-id: "&cУкажите корректный айди спавнера!"
      success-all: "&aУровень всех спавнеров изменён на {level}! (Всего их: {amount-all-spawners})"
      success-all-no-cooldown: "&aУровень всех спавнеров изменён на {level} без сброса таймера! (Всего их: {amount-all-spawners})"
    toggle:
      success-stop: "&aСпавнер с айди {spawner-id} успешно приостановлен в работе!"
      success-stop-all: "&aВсе спавнера успешно приостановлены в работе! (Всего их: {amount-all-spawners})"
      success-continue: "&aСпавнер с айди {spawner-id} успешно продолжен в работе!"
      success-continue-all: "&aВсе спавнера успешно продолжены в работе! (Всего их: {amount-all-spawners})"
      no-spawner: "&cВы должны смотреть на спавнер!"
      no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
      incorrect-id: "&cУкажите корректный айди спавнера!"
      already-stop: "&cДанный спавнер уже приостановлен в работе!"
      already-continue: "&cДанный спавнер уже продолжен в работе!"
      already-stop-all: "&cВсе спавнера уже приостановлены в работе!"
      already-continue-all: "&cВсе спавнера уже продолжены в работе!"
    delete:
      success: "&aСпавнер с айди {id-spawner} успешно удалён!"
      not-found: "&cЭтот спавнер не зарегистрирован в базе данных!"
      no-spawner: "&cВы должны смотреть на спавнер!"
      no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
      incorrect-id: "&cУкажите корректный айди спавнера!"
    cleardb:
      confirm-message:
        - "&a▌&6"
        - "&a▌&6  &fВы точно хотите &aочистить &fбазу данных?"
        - "&a▌&6"
        - "&a▌&6              {confirm-button}"
        - "&a▌&6  "
      confirm-button: "&a[Подтвердить]"
      confirm-hover: "&fНажмите, чтобы &aочистить &fвсю базу данных \nУ вас есть &a30сек.&f, чтобы &aподтвердить &fоперацию"
      must-click: "&cНажмите на кнопку &a[Подтвердить]&c, чтобы очистить базу данных!"
      success:
        - "&aБаза данных очищена за {time}мс.!"
        - "&aВсего очищено спавнеров: {clear-total-spawners}"
      no-spawners: "&cБаза данных уже полностью пуста!"
      error: "&cПроизошла ошибка при очистке базы данных спавнеров! Подробности в консоли."
      time-up: "&cВремя на подтверждение вышло, команда отменена..."
      already-confirmed: "&cВы уже подтвердили очистку или время истекло!"
  openmenu:
    success: "&aМеню спавнера с айди {id-spawner} успешно открыто!"
    no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
    incorrect-id: "&cУкажите корректный айди спавнера!"
  • Исправлены незначительные недочёты/баги в классах плагина
  • Более оптимизированы некоторые классы для быстрой и эффективной работы
  • Улучшена базу данных, чтобы снизить нагрузку на сервер
  • Оптимизирован класс, отвечающий за управление и распределение команд. Ранее он создавал значительную нагрузку на сервер (около 1,5%), но теперь полностью оптимизирован
  • Оптимизирован класс, управляющий базой данных. Он тоже создавал большую нагрузку (около 1,2%), но теперь работает эффективнее
  • Оптимизирован класс, контролирующий все спавнера в мире. Раньше он тоже сильно нагружал сервер (около 3,3%), но теперь функционирует лучше
  • Исправлен баг, связанный с тем, что команда для перезагрузки всех спавнеров /us reload spawners обновляла только те спавнеры, которые находились в загруженных чанках рядом с игроками, а не все спавнеры из базы данных
  • Исправлен очень критический баг, связанный с тем, что если сначала удалить базу данных вручную, а затем ввести команду /us reload all, сервер переставал работать и выдавал бесконечные ошибки в консоль. После этого сервер нельзя было выключить иначе, как принудительно, что приводило к потере данных
  • Исправлен баг, из-за которого голограммы объединялись, если спавнеры находились слишком близко друг к другу
  • Исправлен баг, связанный с тем, что при установке нового яйца призыва моба, у тебя вместо одного яйца забирались сразу все
  • Исправлен баг, связанный с тем, что при нехватке прав на открытие меню спавнера, игроку отправлялось два сообщения о недостатке прав, вместо одного

  • Добавлены новые функции в конфиг, связанные с поддержой плагинов WorldEdit и WorldGuard:
  1. Новый параметр "restrict-spawner-egg-change" отвечает за блокировку установки нового яйца призыва в спавнер в чужом регионе (Пермишен для обхода функции устанавливается в этом же параметре)
  2. Новый параметр "restrict-spawner-menu-access" отвечает за блокировку открытия меню в чужом регионе (Пермишен для обхода функции устанавливается в этом же параметре)

  • Улучшен optimization.yml:
  1. Улучшена читаемость самого файла, стало более понятнее
  2. Добавлен новый параметр "dynamic-spawn-rate", отвечающий за динамическую регулировку частоты спавна мобов при больших лагах и низком tps
  3. Улучшен параметр "limit-mobs-radius": добавился мод лимита мобов "mode", в котором можно выбрать ограничения спавна мобов
  4. Добавлен новый параметр "world-mob-density", ограничивающий кол-во всех мобов в мире
  5. Улучшен параметр player-radius-cache, для более лучшего кэширования радиуса игроков
  6. Исправлен баг, связанный с пропаданием видимости голограммы, если один игрок находиться далеко от спавнера, а другой игрок - близко к спавнеру (Параметр "limit-visibility")
  7. Исправлен баг, связанный с тем, что параметр "dont-spawn-if-not-player" не работал и спавнил мобов даже тогда, когда игроков не было в радиусе, также баг, связанный с тем, что если игрок выйдет с сервера, то через некоторое время, зайдя на сервер, голограмма над спавнеров пропадёт и больше не появиться


Новая конфигурация:
YAML:
#
#  █░█ █▀█ █▀▀ █▀█ ▄▀█ █▀▄ █▀▀ █▀ █▀█ ▄▀█ █░█░█ █▄░█ █▀▀ █▀█ █▀
#  █▄█ █▀▀ █▄█ █▀▄ █▀█ █▄▀ ██▄ ▄█ █▀▀ █▀█ ▀▄▀▄▀ █░▀█ ██▄ █▀▄ ▄█
#
#                               By   MilkyWay   for   GornaWorld.fun   and   sale
#

# Настройки параметров плагина
settings:
 
  # Включение вывода логов плагина в консоль для отладки ошибок
  logs-in-console:
    # Активны ли логи? (true/false)
    enabled: false
 
  # Список миров, где плагин не будет работать
  disable-worlds:
    # Включён ли запрет для указанных миров? (true/false)
    enabled: false
    # Названия миров
    worlds:
      - "CustomWorld"
      - "CustomWorld2"
      - "CustomWorld_3"

  # Удалять ли яйцо призыва моба из инвентаря игрока при его установке в спавнер
  consume-spawn-egg:
    # Включено ли удаление яйца? (true/false)
    # Если true, яйцо будет удаляться из основной или дополнительной руки игрока после установки
    # Если false, яйцо останется в инвентаре игрока
    enabled: true

  # Ограничение изменения яйца в спавнере в чужих регионах WorldGuard
  restrict-spawner-egg-change:
    # Включено ли ограничение? (true/false)
    enabled: true
    # Право, позволяющее обойти ограничение
    bypass-permission: "upgradespawners.bypass.egg-change"
    message:
      enabled: false
      message: "&cВы не можете изменить яйцо в спавнере в этом регионе!"

  # Ограничение открытия меню спавнера в чужих регионах WorldGuard
  restrict-spawner-menu-access:
    # Включено ли ограничение? (true/false)
    enabled: true
    # Право, позволяющее обойти ограничение
    bypass-permission: "upgradespawners.bypass.menu-access"
    message:
      enabled: false
      message: "&cВы не можете открыть меню спавнера в этом регионе!"

  # Интеграция с плагином PlaceholderAPI для использования его плейсхолдеров
  placeholderapi:
    # (Рекомендуется выключить данный параметр для снижения нагрузки, если вы не используете его нигде)
    enabled: true

  # Учёт только убийств мобов, совершённых игроками, для прокачки спавнера
  count-only-player-kills:
    # Включён ли режим учёта только убийств игроками? (true/false)
    # Если true, спавнер будет засчитывать только мобов, убитых игроками напрямую
    # Если false, будут учитываться все смерти мобов, включая падение, лаву, других мобов и т.д.
    enabled: true
 
  # Время хранения данных удалённых спавнеров перед их окончательным удалением из памяти
  # Укажите 0, чтобы отключить автоматическое удаление (данные будут храниться до перезапуска сервера)
  removed-spawners-timeout:
    # Время в секундах, после которого данные спавнера будут удалены из временного хранилища, если спавнер не был восстановлен
    # (Рекомендуется значение 60-600 секунд)
    time: 300
 
  # Время ожидания подтверждения для команды очистки базы данных (/us cleardb)
  # Укажите 0, чтобы отключить таймер (подтверждение будет активно до ручного выполнения или перезапуска сервера)
  cleardb-confirmation-timeout:
    # Время в секундах, после которого запрос на подтверждение очистки базы данных будет отменён
    time: 30
 
  # Сбрасывать ли уровень спавнера при установке нового яйца призыва в спавнер
  reset-level-on-new-egg:
    # Включён ли сброс уровня? (true/false)
    enabled: true
 
  # Сбрасывать ли время до спавна мобов на значение текущего уровня при повышении уровня спавнера
  reset-cooldown-on-level-up:
    # Включён ли сброс времени до спавна? (true/false)
    enabled: true
 
  # Количество попыток найти место для спавна мобов
  spawn-attempts:
    # Сколько раз пытаться найти координаты? (Рекомендуется 5–20)
    count: 10
 
  # Настройки частиц при спавне мобов из спавнера
  particles:
    # Включены ли частицы? (true/false)
    enabled: true
    # Тип частиц (доступные: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Particle.html)
    type: "SMOKE_NORMAL"
    # Сколько частиц отображать?
    count: 100
    # Расстояние разброса частиц по осям X, Y, Z
    offset-x: 0.5
    offset-y: 0.5
    offset-z: 0.5
 
  # Ограничение на количество спавнеров для каждого игрока
  limit-spawners-the-players:
    # Активен ли лимит? (true/false)
    enabled: true
    # Максимальное число спавнеров на игрока
    max-spawners: 5
    # Сообщение игроку при превышении лимита
    message: "&cСтоп! &fВы &cне можете &fпоставить более &c{limit-spawners} &fспанеров!"
    # Право, позволяющее обойти лимит
    bypass-permission: upgradespawners.bypass.limit-spawners
 
  # Ограничение по высоте установки спавнеров
  limit-coordinates-y-spawners:
    # Активен ли лимит высоты? (true/false)
    enabled: true
    # Минимальная допустимая высота (Y)
    min-y: -30
    # Сообщение при установке ниже минимума
    message-min: "&cСтоп! &fВы &cне можете &fпоставить спавнер ниже &c{limit-min-y} &fвысоты!"
    # Максимальная допустимая высота (Y)
    max-y: 180
    # Сообщение при установке выше максимума
    message-max: "&cСтоп! &fВы &cне можете &fпоставить спавнер выше &c{limit-max-y} &fвысоты!"
    # Право, позволяющее игнорировать лимит высоты
    bypass-permission: upgradespawners.bypass.limit-coordinates-y
 
  # Настройки голограмм над спавнерами
  holograms:
 
    # Голограмма для спавнера с установленным мобом
    active-mob:
      # Показывать голограмму? (true/false)
      enabled: true
      # Текст голограммы (поддерживает плейсхолдеры {level}, {time})
      text:
        - "&6▸ &fУровень: &e{level}"
        - "&6▸ &fСпавн через: &e{time}с."
      # Смещение голограммы относительно спавнера (X, Y, Z)
      offset:
        x: 0.5
        y: 1.2
        z: 0.5
      # Расстояние между строками текста
      line-spacing: 0.3
      # Как часто обновлять голограмму? (в секундах)
      update-interval: 1
 
    # Голограмма для пустого спавнера (работает с версии 1.19.3 и выше)
    empty-mob:
      # Показывать голограмму? (true/false)
      enabled: true
      # Текст голограммы (поддерживает плейсхолдер {level})
      text:
        - "&6▸ &fУровень: &e{level}"
        - "&6▸ &fСпавнер пуст"
      # Смещение голограммы относительно спавнера (X, Y, Z)
      offset:
        x: 0.5
        y: 1.2
        z: 0.5
      # Расстояние между строками текста
      line-spacing: 0.3
      # Как часто обновлять голограмму? (в секундах)
      update-interval: 1
 
    # Голограмма для приостановленного спавнера
    stop-spawner:
      # Показывать голограмму? (true/false)
      enabled: true
      # Текст голограммы (поддерживает плейсхолдер {level})
      text:
        - "&6▸ &fУровень: &e{level}"
        - "&6▸ &fСпавнер приостановлен"
      # Смещение голограммы относительно спавнера (X, Y, Z)
      offset:
        x: 0.5
        y: 1.2
        z: 0.5
      # Расстояние между строками текста
      line-spacing: 0.3
      # Как часто обновлять голограмму? (в секундах)
      update-interval: 1
 
  # Радиус, в котором убийство мобов засчитывается для прокачки спавнера
  radius-kill-mobs-spawner:
    # Расстояние в блоках
    radius: 20
 
  # Радиус, в котором игроки получают сообщение о повышении уровня спавнера
  radius-message-level-up-spawner:
    # Расстояние в блоках
    radius: 20

# Настройка сообщений плагина
# Чтобы убрать сообщение, оставьте его пустым
messages:
  spawners-messages:
    spawner-level-up: "&aСпавнер в {blocks} блоков от вас повысился до {level} уровня!"
    spawner-max-level: "&aСпавнер в {blocks} блоков от вас достиг максимального {level} уровня!"
  plugin-messages:
    reload:
      config: "&aКонфиг успешно перезагружен за {time}мс.!"
      spawners: "&aВсе спавнера успешно перезагружены за {time}мс.!"
      all: "&aВесь плагин успешно перезагружен за {time}мс.!"
    no-console: "&cТолько игрок может использовать данную команду!"
    no-found-player: "&cИгрок {player} не найден!"
    no-permission: "&cНедостаточно прав!"
    spawner-menu-closed: "&cМеню спавнера было закрыто из-за перезагрузки, пожалуйста подождите..."
    spawner-egg-change-denied: "&cВы не можете изменить яйцо в спавнере в этом регионе!"
    spawner-menu-access-denied: "&cВы не можете открыть меню спавнера в этом регионе!"
    usage-commands:
      - ""
      - " &aКоманды плагина:"
      - ""
      - "   &6/us reload (all/config/spawners) &f- Перезагрузить что-либо в плагине"
      - "   &6/us logs [on/off] &f- Включить/выключить логи"
      - "   &6/us tpspawner [Айди] (Никнейм) &f- Телепортироваться к любому спавнеру"
      - "   &6/us getid &f- Получить айди спавнера, если смотреть на него"
      - "   &6/us setlevel [Уровень] (Айди/all) (-nocd) &f- Установить уровень спавнера"
      - "   &6/us toggle [stop/continue] (Айди/all) &f- Приостановить/продолжить работу спавнера(ов)"
      - "   &6/us delete (Айди) &f- Удалить спавнер из базы данных"
      - "   &6/us cleardb &f- Очистить всю базу данных"
      - "   &6/us openmenu [Айди] &f- Очистить всю базу данных"
      - ""
    logs:
      enabled: "&aЛоги: включены"
      already-enabled: "&cЛоги уже включены!"
      disabled: "&aЛоги: выключены"
      already-disabled: "&cЛоги уже выключены!"
    tpspawner:
      success:
        - "&aИгрок {player} телепортирован к спавнеру с айди {id-spawner}!"
        - "&aКоординаты: {x-spawner} {y-spawner} {z-spawner}, Мир: {world-spawner}"
      no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
      incorrect-id: "&cУкажите корректный айди спавнера!"
    getid:
      success: "&aАйди данного спавнера: {id-spawner}"
      not-found: "&cЭтот спавнер не зарегистрирован в базе данных!"
      no-spawner: "&cВы должны смотреть на спавнер!"
    setlevel:
      success: "&aУровень спавнера с айди {spawner-id} успешно обновлён до {level}!"
      success-no-cooldown: "&aУровень спавнера с айди {spawner-id} обновлён до {level} без сброса таймера!"
      invalid-level: "&cУкажите корректный уровень!"
      no-spawner: "&cВы должны смотреть на спавнер!"
      level-too-high: "&cУровень {level} превышает максимальный ({max-level})!"
      no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
      incorrect-id: "&cУкажите корректный айди спавнера!"
      success-all: "&aУровень всех спавнеров изменён на {level}! (Всего их: {amount-all-spawners})"
      success-all-no-cooldown: "&aУровень всех спавнеров изменён на {level} без сброса таймера! (Всего их: {amount-all-spawners})"
    toggle:
      success-stop: "&aСпавнер с айди {spawner-id} успешно приостановлен в работе!"
      success-stop-all: "&aВсе спавнера успешно приостановлены в работе! (Всего их: {amount-all-spawners})"
      success-continue: "&aСпавнер с айди {spawner-id} успешно продолжен в работе!"
      success-continue-all: "&aВсе спавнера успешно продолжены в работе! (Всего их: {amount-all-spawners})"
      no-spawner: "&cВы должны смотреть на спавнер!"
      no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
      incorrect-id: "&cУкажите корректный айди спавнера!"
      already-stop: "&cДанный спавнер уже приостановлен в работе!"
      already-continue: "&cДанный спавнер уже продолжен в работе!"
      already-stop-all: "&cВсе спавнера уже приостановлены в работе!"
      already-continue-all: "&cВсе спавнера уже продолжены в работе!"
    delete:
      success: "&aСпавнер с айди {id-spawner} успешно удалён!"
      not-found: "&cЭтот спавнер не зарегистрирован в базе данных!"
      no-spawner: "&cВы должны смотреть на спавнер!"
      no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
      incorrect-id: "&cУкажите корректный айди спавнера!"
    cleardb:
      confirm-message:
        - "&a▌&6"
        - "&a▌&6  &fВы точно хотите &aочистить &fбазу данных?"
        - "&a▌&6"
        - "&a▌&6              {confirm-button}"
        - "&a▌&6  "
      confirm-button: "&a[Подтвердить]"
      confirm-hover: "&fНажмите, чтобы &aочистить &fвсю базу данных \nУ вас есть &a30сек.&f, чтобы &aподтвердить &fоперацию"
      must-click: "&cНажмите на кнопку &a[Подтвердить]&c, чтобы очистить базу данных!"
      success:
        - "&aБаза данных очищена за {time}мс.!"
        - "&aВсего очищено спавнеров: {clear-total-spawners}"
      no-spawners: "&cБаза данных уже полностью пуста!"
      error: "&cПроизошла ошибка при очистке базы данных спавнеров! Подробности в консоли."
      time-up: "&cВремя на подтверждение вышло, команда отменена..."
      already-confirmed: "&cВы уже подтвердили очистку или время истекло!"
  openmenu:
    success: "&aМеню спавнера с айди {id-spawner} успешно открыто!"
    no-found-id: "&cСпавнер с айди {id-spawner} не найден!"
    incorrect-id: "&cУкажите корректный айди спавнера!"

Новый optimization.yml:
YAML:
#
#  █░█ █▀█ █▀▀ █▀█ ▄▀█ █▀▄ █▀▀ █▀ █▀█ ▄▀█ █░█░█ █▄░█ █▀▀ █▀█ █▀
#  █▄█ █▀▀ █▄█ █▀▄ █▀█ █▄▀ ██▄ ▄█ █▀▀ █▀█ ▀▄▀▄▀ █░▀█ ██▄ █▀▄ ▄█
#
#                               By   MilkyWay   for   GornaWorld.fun   and   sale
#

# Настройки оптимизации для снижения нагрузки на сервер
optimization:
 
# Оптимизация базы данных
  # Настройки для повышения производительности работы с базой данных
  # Уровень оптимизации: Высокий
  database:
# Параметры пакетной обработки
    batch-processing:
# Размер пакета для пакетной записи
      # Определяет, сколько операций записи объединяется в одну транзакцию
      # По умолчанию: 50, рекомендуемый диапазон: 10-100
      size: 50
# Включение дедупликации операций в очереди
      # Если включено, повторные обновления одного спавнера перезаписывают предыдущие
      # Уменьшает нагрузку на базу данных
      # Уровень оптимизации: Средний
      deduplication: true
# Индексация для ускорения запросов
    # Создание индекса по полю "owner" для ускорения запросов
    # Включайте, если плагин часто ищет спавнеры по владельцу
    # Может увеличить время записи, но ускорит поиск
    # Уровень оптимизации: Низкий
    index-owner: false

# Оптимизация голограмм
  # Контроль отображения и обновления голограмм для снижения нагрузки
  # Уровень оптимизации: Средний - Высокий
  holograms:
 
# Управление видимостью и обновлением
    visibility:
# Ограничение видимости голограмм
      # Голограммы скрываются, если игрок находится дальше указанного радиуса
      # Уровень оптимизации: Средний
      limit:
 enabled: true
# Радиус видимости (в блоках)
        # По умолчанию: 20, рекомендуемый диапазон: 10-40
        radius: 20
 
# Остановка обновления голограмм вне радиуса
      # Если включено, голограммы не обновляются, если игроков нет в радиусе
      # Уровень оптимизации: Высокий
      no-update:
 enabled: true
# Радиус для проверки игроков (в блоках)
        # По умолчанию: 20, рекомендуемый диапазон: 10-40
        radius: 20

# Управление мобами
  # Настройки для контроля спавна и удаления мобов
  # Уровень оптимизации: Высокий
  mobs:
 
# Удаление мобов с замороженным интеллектом, находящихся далеко от спавнера
    # Работает только если включён параметр "freeze-ai"
    # Уровень оптимизации: Средний
    cleanup:
 enabled: true
# Максимальное расстояние от спавнера (в блоках)
      # По умолчанию: 50, рекомендуемый диапазон: 30-100
      max-distance: 50
# Интервал проверки (в тиках)
      # 1 секунда = 20 тиков
      # По умолчанию: 200, рекомендуемый диапазон: 100-400
      check-interval: 200
# Радиус вокруг моба для проверки наличия игроков (в блоках)
      # По умолчанию: 10, рекомендуемый диапазон: 5-20
      player-radius: 10
 
# Ограничение плотности мобов вокруг спавнера
    # Уровень оптимизации: Высокий
    density-limit:
 enabled: true
# Радиус проверки (в блоках)
      # По умолчанию: 25, рекомендуемый диапазон: 10-50
      radius: 25
# Максимальное количество мобов в радиусе
      # По умолчанию: 20, рекомендуемый диапазон: 10-50
      max-mobs: 20
# Режим ограничения:
      # - ALL: Все мобы в радиусе (Уровень оптимизации: Высокий)
      # - SAME_TYPE: Только мобы того же типа (Уровень оптимизации: Средний)
      # - SPAWNER_OWNED: Только мобы, принадлежащие этому спавнеру (Уровень оптимизации: Низкий)
      mode: SPAWNER_OWNED
 
# Заморозка интеллекта мобов
    # Отключает ИИ мобов для снижения нагрузки
    # Уровень оптимизации: Высокий
    freeze-ai:
 enabled: true
 
# Запрет спавна мобов, если в радиусе нет игроков
    # Уровень оптимизации: Высокий
    require-player:
 enabled: true
# Радиус для проверки игроков (в блоках)
      # По умолчанию: 50, рекомендуемый диапазон: 30-100
      radius: 50
 
# Запрет спавна в непрогруженных чанках
    # Уровень оптимизации: Высокий
    require-chunk-loaded:
 enabled: true

# Ограничение общего количества мобов в мире
  # Уровень оптимизации: Высокий
  world-mob-limit:
 enabled: false
# Максимальное количество мобов во всём мире
    # По умолчанию: 500, рекомендуемый диапазон: 200-1000
    max-mobs: 500
# Действие при превышении лимита:
    # - PAUSE: Приостанавливать спавн новых мобов
    # - PRIORITIZE_ACTIVE: Отдавать приоритет спавнерам в активных чанках
    # - RANDOM: Случайно выбирать спавнеры для спавна
    overflow-action: PAUSE

# Динамическая регулировка частоты спавна
  # Замедляет спавн при низком TPS или большом количестве игроков
  # Уровень оптимизации: Высокий
  spawn-rate:
 enabled: true
# Диапазон множителя кулдауна спавна
    # 1.0 = стандартная частота, 2.0 = спавн в 2 раза реже
    # Рекомендуемый диапазон: 1.0-3.0
    cooldown-multiplier:
 min: 1.0
 max: 2.0
 
# Регулировка по TPS сервера
    tps-scaling:
 enabled: true
# Порог TPS, ниже которого спавн замедляется
      # По умолчанию: 16.0, рекомендуемый диапазон: 10.0-18.0
      low-tps: 16.0
# Множитель при низком TPS
      # По умолчанию: 1.8, рекомендуемый диапазон: 1.0-3.0
      low-tps-multiplier: 1.8
# Множитель при нормальном TPS
      # По умолчанию: 1.0, рекомендуемый диапазон: 0.5-1.5
      normal-tps-multiplier: 1.0
 
# Регулировка по количеству игроков
    player-scaling:
 enabled: false
# Радиус для подсчёта игроков (в блоках)
      # По умолчанию: 32, рекомендуемый диапазон: 16-64
      radius: 32
# Увеличение множителя за каждого игрока
      # Например, 0.25 = +25% к кулдауну за игрока
      # По умолчанию: 0.25, рекомендуемый диапазон: 0.1-0.5
      multiplier-step: 0.25
# Максимальное количество игроков для расчёта
      # По умолчанию: 10, рекомендуемый диапазон: 10-20
      max-players: 15
# Режим комбинирования множителей
    # - MAX: Используется максимальный множитель
    # - AVERAGE: Используется среднее значение
    combination: MAX

# Управление чанками со спавнерами
  # Выгружает чанки при отсутствии игроков или низком TPS
  # Уровень оптимизации: Высокий
  chunks:
 enabled: true
# Радиус для проверки игроков (в блоках)
    # По умолчанию: 128, рекомендуемый диапазон: 64-256
    player-radius: 128
# Интервал проверки чанков (в тиках)
    # По умолчанию: 600, рекомендуемый диапазон: 200-1200
    check-interval: 600
# Минимальный TPS для выгрузки чанков
    # Если TPS ниже, чанки выгружаются быстрее
    # По умолчанию: 14.0, рекомендуемый диапазон: 10.0-16.0
    min-tps: 14.0

# Кэширование проверок радиуса игроков
  # Использует кэш для оптимизации поиска игроков
  # Уровень оптимизации: Средний
  player-radius-cache:
 enabled: true
# Интервал обновления кэша (в тиках)
    # По умолчанию: 10, рекомендуемый диапазон: 5-20
    update-interval: 10
# Динамическая регулировка интервала обновления
    dynamic-interval:
 enabled: true
# Минимальный TPS, при котором интервал увеличивается
      low-tps-threshold: 15.0
# Множитель интервала при низком TPS
      low-tps-multiplier: 1.5
# Максимальный интервал (в тиках)
      max-interval: 20
# Радиус кэширования (в чанках)
    # Ограничивает проверку игроков в радиусе от спавнеров
    radius: 5
# Режим кэширования
    # - FULL: кэшировать все чанки с игроками
    # - SPAWNER_ONLY: кэшировать только чанки со спавнерами
    # - PLAYER_ONLY: кэшировать только чанки с игроками
    # - ADAPTIVE: переключаться между режимами
    mode: ADAPTIVE
# Максимальное число кэшируемых чанков
    max-chunks: 1000
  • Добавлен новый параметр в конфиг "consume-spawn-egg", отвечающий за удаление яйцо призыва моба из инвентаря игрока при его установке в спавнер
  • Исправлен баг, связанный с тем, что плейсхолдер "{spawner-max-level}" не работал в меню, если сам спавнер пустой
  • Исправлен баг, связанный с неправильным отображением голограммы на координатах "y"
  • Заменены некоторые параметры в самом коде плагина на их лучшую версию с полной оптимизацией и читабельностью
  • Исправлен очень серьёзный баг, связанный с тем, что полная статистика всех прогруженных спавнеров в мирах полностью сбрасывалась, при перезагрузке именно сервера
- Исправлена серьёзная ошибка, связанная с загрузкой плагина PlaceholderApi, которая бесконечно спамила в консоль с предупреждением
  • Исправлены ошибки в конфиге, в сообщениях
  • Исправлена ошибка, связанная с занесением всех спавнеров в базу данных
  • Добавлены новые параметры в файле с оптимизацией, оптимизирующие базу данных
  • Добавлена новая команда для очищения всей базы данных от спавнеров - /us cleardb
  • Улучшен и оптимизирован параметр, отвечающий за поиск подходящего места для спавна мобов из спавнера
Назад
Сверху Снизу