
Capability Fix - Оптимизация производительности возможностей
Данный мод решает одну из ключевых проблем производительности в версии 1.20.1 Forge/NeoForge - неэффективный поиск возможностей (capabilities) на сущностях. Стандартная реализация в этой версии выполняет перебор всех провайдеров возможностей для каждой сущности, что становится крайне медленным при наличии множества модов, добавляющих такие провайдеры.
Решение, предлагаемое этим модом, заключается в использовании кэширования для определённых возможностей. Мод создаёт кэш возможностей для каждой сущности и сохраняет в него данные при первом обращении. Для возможностей, включённых в белый список, последующие запросы будут обрабатываться напрямую из кэша, минуя длительный процесс поиска по всем провайдерам.
Такой подход безопасен только для возможностей, которые остаются доступными на сущностях с момента первого обращения и никогда не удаляются или не переподключаются позже. Типичным примером является возможность API Curios. По умолчанию мод работает на основе белого списка, но вы можете рискнуть и применить его ко всем возможностям через настройки конфигурации.
Рекомендуется использовать этот мод только после подтверждения с помощью spark, что поиск возможностей на сущностях занимает не менее 4% от общего времени сервера (mspt). При полном развёртывании мод способен сократить затраты на поиск возможностей на 75%, что было проверено на модпаке, где изначальные затраты составляли 8% от mspt сервера.
Правильная процедура использования:
- После некоторого времени работы игры выполните команду
/capabilityfix gather_others
. Она покажет, сколько раз каждая возможность запрашивалась. - Откройте файл latest.log, найдите соответствующее сообщение в чате и скопируйте идентификатор возможности в файл конфигурации
capabilityfix-common.toml
. - В игре выполните
/capabilityfix reload_config
для применения изменений в белом списке. - Проверьте функциональность, связанную с этой возможностью, на наличие ошибок. При обнаружении проблем удалите её из белого списка.