
FarmControl
Плагин FarmControl для Minecraft ограничивает размеры мобоферм, снижает нагрузку на сервер и управляет поведением мобов. Гибкая настройка и низкое влияние на производительность.
FarmControl - это плагин для Minecraft-серверов, который решает одну из самых больных проблем: лаги от мобоферм. Если у вас на сервере народ развёл десятки загонов с коровами, курами или жителями, то каждый тик сервер тратит кучу ресурсов на их ИИ, коллизии и бессмысленное движение. FarmControl как раз и нужен, чтобы взять это всё под контроль - ограничить количество мобов, отключить им лишнее поведение или даже убить лишних, если ферма выходит за рамки.
Плагин работает с минимальной нагрузкой: почти вся обработка идёт асинхронно, так что сам он не станет источником проблем. Идеально подходит для серверов на Bukkit/Spigot, где производительность важнее всего.
Особенности
- Ограничение размера ферм - можно задать максимальное количество мобов одного типа в определённом радиусе.
- Снижение коллизий и движения - мобы в фермах перестают толкаться и бегать туда-сюда, что экономит тики.
- Отключение ИИ или осознанности - если ферма большая, плагин может убрать у мобов вообще весь интеллект, оставив их просто стоять.
- Гибкая настройка - куча параметров в config.yml и profiles.yml, можно сделать как мягкие ограничения (отключить разведение), так и жёсткие (убить лишних).
- Реактивный режим - можно настроить, чтобы плагин включал жёсткие меры только когда серверу плохо (MSPT подскочил), и сам откатывал их, когда всё нормализуется.
- Профили действий - через profiles.yml задаёшь группы мобов и что с ними делать: убить, отключить размножение, убрать коллизии и т.д.
- Исключения - можно не трогать прирученных, именованных, в любовном режиме, на поводке и т.п.
Установка
Всё просто: скачиваете jar-файл плагина и кидаете в папку /plugins своего сервера. После перезапуска в папке FarmControl появятся config.yml и profiles.yml - их надо отредактировать под себя. По умолчанию плагин уже включён и будет убирать случайное движение и коллизии у животных на фермах (10+ мобов в радиусе 5 блоков).
Конфигурация
Разберёмся с настройками. Основной конфиг config.yml отвечает за глобальные параметры: частоту проверок, реактивный режим, исключения, настройки действий. А profiles.yml - это уже сами профили: какие группы мобов, при каких условиях и какие действия к ним применять.
Вот пример config.yml (ссылки на страницу плагина и GitHub удалены, всё остальное в оригинале, но комментарии переведены):
config.yml
# Конфигурация для FarmControl.
# Пожалуйста, не меняйте это!
version: 7
# Каждые сколько тиков выполнять проверку профилей / цикл действий?
cycle-period: 600
# Сколько тиков ждать перед началом проверок после запуска плагина?
# * Полезно в 'реактивном' режиме, чтобы игнорировать производительность сервера
# в первые минуты после перезапуска.
start-up-delay: 0
# Эти настройки можно задавать отдельно для каждого мира.
# * Если мир не указан или настройка отсутствует, используются значения из раздела default.
world-settings:
default:
# Какие профили (из profiles.yml) должны запускаться?
profiles:
# Эти профили работают постоянно.
proactive:
- soft-nerf-animal-farms
# - soft-limit-animal-farms
# - soft-limit-villager-breeders
# - trim-animal-farms
# - trim-sparse-animal-farms
# Эти профили запускаются только когда сервер тормозит, и постепенно откатываются,
# когда производительность улучшается (см. настройки реактивного режима).
# * Лучше вообще не допускать падения производительности, чем потом гасить,
# но бывают случаи, когда этот режим удобен (например, позволить игрокам
# строить огромные фермы, но при просадках банить им мобов).
reactive:
# - hard-nerf-animal-farms
# - freeze-animal-farms
# Настройки реактивного режима.
reactive-mode-settings:
# При каком MSPT активировать реактивный режим?
trigger-mspt-threshold: 45.0
# Ниже какого MSPT деактивировать реактивный режим и откатывать действия?
untrigger-mspt-threshold: 35.0
# Как плагин должен откатывать действия, когда реактивный режим выключен.
untrigger-settings:
# Сколько циклов после выключения реактивного режима должно пройти
# прежде чем начнётся откат?
minimum-cycles-before-undo: 10
# Сколько мобов максимум может быть откатано за один цикл?
maximum-undos-per-cycle: 40
# Насколько сильно каждый тип моба влияет на лимит maximum-undos-per-cycle?
# * Пример: если maximum-undos-per-cycle = 40, а entity-undo-weight для жителей = 5,
# то за цикл откатят не более 8 жителей (5*8=40).
# * Если тип моба не указан, используется значение default.
entity-undo-weight:
default: 1
villager: 5
# Настройки исключений: каких мобов НЕ трогать.
exclusion-settings:
# Не трогать прирученных мобов?
tamed: true
# Не трогать именованных мобов (с биркой)?
named: true
# Не трогать мобов в режиме любви (размножение)?
love-mode: true
# Не трогать мобов на поводке?
leashed: true
# Не трогать лидеров патрулей?
patrol-leader: false
# Не трогать мобов младше этого возраста (в тиках)?
younger-than: 0
# Типы мобов, к которым не применяются действия.
type:
# - villager
# Мобы, у которых есть определённая метадата, исключаются из обработки.
# * Некоторые плагины добавляют метадату к мобам. Это позволяет исключить их.
metadata:
- Elitemob
- Elitemobs_NPC
- Supermob
- infernalMetadata
- NPC
- shopkeeper
# Настройки свойств действий.
action-settings:
# Когда следует откатывать действие (undo). Можно задать для каждого действия отдельно.
undo-on:
default:
# Откатывать при взаимодействии с мобом?
interact: false
# При нанесении урона?
damage: false
# Когда моб становится целью другого моба (например, зомби целится в жителя)?
target: false
# Когда моб соблазняется предметом (например, корова идёт на пшеницу)?
tempt: false
remove-ai:
interact: true
damage: true
target: true
remove-awareness:
interact: true
damage: true
target: true
disable-collisions:
tempt: true
disable-breeding:
interact: false
tempt: false
# Настройки отслеживания MSPT.
mspt-tracker-settings:
# Сколько тиков собирать длительности для расчёта MSPT?
# * Слишком большое значение сделает MSPT медленно реагирующим.
# * Слишком маленькое сделает MSPT нестабильным.
collection-period: 1200
А вот profiles.yml - это мозг плагина. Тут вы задаёте группы мобов (по типу, категории, расстоянию) и что с ними делать. Например, можно сделать профиль, который убьёт всех лишних кур, если их больше 50 в радиусе 160 блоков. Или отключить разведение, если в одном месте собралось 20 коров.
profiles.yml
# Подробнее о создании профилей смотрите в Wiki.
profiles:
# Убрать случайное движение и отключить коллизии у животных на фермах
soft-nerf-animal-farms:
group:
types:
- "category:animal"
count: 15
distance: 5
actions:
- remove-random-movement
- disable-collisions
# Полностью убрать осознанность у животных на фермах
hard-nerf-animal-farms:
group:
types:
- "category:animal"
count: 15
distance: 5
actions:
- remove-awareness
- disable-collisions
# Заморозить ИИ животных на фермах
freeze-animal-farms:
group:
types:
- "category:animal"
count: 15
distance: 5
actions:
- remove-ai
- disable-collisions
# Отключить размножение, если в радиусе 5 блоков больше 20 животных одного типа
soft-limit-animal-farms:
group:
types:
- "category:animal"
count: 20
distance: 5
pure: true
actions:
- disable-breeding
# Отключить размножение жителей, если их больше 20 в радиусе 10 блоков
soft-limit-villager-breeders:
group:
types:
- "villager"
count: 20
distance: 10
actions:
- disable-breeding
# Не больше 21 животного одного типа в радиусе 5 блоков - лишних убить
trim-animal-farms:
group:
types:
- "category:animal"
count: 21
distance: 5
pure: true
actions:
- kill
# Не больше 51 животного одного типа в радиусе 160 блоков - лишних убить
trim-sparse-animal-farms:
group:
types:
- "category:animal"
count: 51
distance: 160
pure: true
actions:
- kill
# Не больше 10 жителей на чанк - лишних убить
trim-villager-chunks:
group:
types:
- "villager"
count: 11
distance: same-chunk
actions:
- kill
(Ссылка на Wiki удалена, но принцип понятен: копируете любой профиль и подгоняете под свои нужды.)
Команды
Основная команда: /farmcontrol <подкоманда>. Права: farmcontrol.command.<подкоманда>.
/farmcontrol reload- перезагрузить конфигурацию плагина./farmcontrol status <мир>- показать статус указанного мира (количество проверок, активные профили и т.д.)./farmcontrol history- отобразить недавние действия плагина (сколько мобов убито, заморожено и т.п.)./farmcontrol notify- включить/выключить уведомления о действиях плагина.
Метрики
Плагин использует bStats для сбора анонимной статистики (версии, количество игроков, загруженные модули). Если хотите отключить, отредактируйте config.yml в папке bStats внутри папки plugins.
Короче, FarmControl - вещь полезная. Если у вас на сервере Майнкрафт кто-то любит строить огромные мобофермы, а сервер от этого начинает тормозить, то этот плагин - то, что надо. Настраивается гибко, почти не ест ресурсов, а результат - стабильный TPS и довольные игроки. Скачайте FarmControl и оптимизируйте свой сервер!
