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

Blindspot

Minecraft Fabric мод, нацеленный на исправление множества мелких проблем с производительностью.

Fabric
Загрузчики
Fabric
Скачиваний на Modrinth
798
Подписчиков на Modrinth
0
версий
5
Обновлён
7 октября 20267 окт.
Опубликован
в 2026

Коротко о моде

Работает на Fabric
Для Minecraft 26.1–26.3
Ставится только в игру; на сервер ставить не нужно
Последняя версия — 0.3.0+26.1 от 7 октября 2026
Лицензия LGPL-3.0-only — бесплатно
Где нужен
В игреобязателенНа серверене нужен

Ставится только в игру; на сервер ставить не нужно

Версии игры26.1–26.3
Описание переведено автоматическиПоказать оригинал (EN)

GitHub GitHub Release GitHub Issues License

Minecraft Fabric мод, который исправляет мелкие, незамеченные проблемы производительности на стороне клиента, не охваченные крупными модами оптимизации.

Требования

  • Minecraft 26.1.x, 26.2 или 26.3
  • Fabric Loader >= 0.19.5

Fabric API не требуется.

Возможности

  • Оптимизация списка друзей (Minecraft 26.2 и новее): кэширует список друзей вместо его перестроения при каждом вызове.
  • Оптимизация боковой панели таблицы очков: кэширует отсортированные записи боковой панели вместо сканирования и сортировки всех очков каждый кадр.
  • Оптимизация списка игроков (Tab): кэширует порядок игроков в списке вместо повторной сортировки всех игроков каждый кадр, пока список открыт.

Оптимизация списка друзей не входит в версию для 26.1, потому что в Minecraft 26.1 нет списка друзей.

Технические подробности и глубокое погружение

Накладные расходы на проверку присутствия в списке друзей

Только Minecraft 26.2 и новее.

Ванильный PlayerSocialManager.getFriends() преобразует весь список друзей в новый список через Stream при каждом вызове, хотя сами данные меняются только при поступлении нового списка друзей. Пока список друзей включён, PresenceHandler.tick() вызывает его один раз за отрисованный кадр (вызов идёт из Minecraft.runTick, а не из игрового тика 20 раз в секунду). Стоимость одного вызова мала, но это повторяющаяся работа, дающая каждый раз один и тот же результат.

Blindspot кэширует результат и пересчитывает его только тогда, когда ванильная игра сохраняет новые данные о друзьях.

Боковая панель таблицы очков перестраивается каждый кадр

Чтобы нарисовать боковую панель, ванильная игра вызывает Scoreboard.listPlayerScores() каждый кадр. Он проходит по всем держателям очков, известным таблице очков, а не только по тем, что на отображаемой цели. Затем он отфильтровывает скрытые записи, сортирует их все и оставляет топ-15. При тысячах записей это сканирование и сортировка выполняются каждый кадр, даже если ни одно очко не изменилось. В тесте с примерно 5 000 записей очков на клиенте боковая панель занимала около 0,9–1,3 мс на кадр в ванили и около 0,06–0,08 мс с Blindspot.

Blindspot хранит итоговый отфильтрованный, отсортированный и ограниченный список и передаёт его в ванильный конвейер вместо полного списка очков. Чтобы знать, когда этот список устарел, Blindspot добавляет к таблице очков счётчики версий, которые меняются при создании, изменении или удалении очка, а также при изменении состава команды. Список перестраивается собственным кодом ванили только тогда, когда изменился один из этих счётчиков или отображается другая цель. Всё после этого шага по-прежнему выполняется каждый кадр точно так же, как в ванили: цвета и префиксы команд, форматы чисел, ширина текста. Поэтому изменения шрифта, языка и ресурспаков ведут себя так же, как без мода.

Список игроков (Tab) пересортировывается каждый кадр

Пока список игроков открыт, ваниль сортирует всех перечисленных игроков каждый кадр. Каждое сравнение ищет команды обоих игроков в таблице очков. Порядок зависит только от порядка списка, заданного сервером, режима наблюдателя, команды и имени игрока, которые меняются редко.

Blindspot кэширует отсортированный порядок и позволяет ванили перестраивать его только тогда, когда игрок добавлен в список или удалён из него, изменён игровой режим или порядок в списке игрока, либо изменён состав команды. Обновления пинга, отображаемые имена и скины не влияют на порядок и не вызывают перестроение. Сами строки (имена, пинг, очки, сердца) по-прежнему рисуются ванилью каждый кадр.

Проверка кэшей

Запустите игру с аргументом JVM -Dblindspot.verifyCaches=true, чтобы Blindspot вычислял ванильный результат параллельно с каждым попаданием в кэш сайдбара и списка игроков и сравнивал их. В логе тогда отображается любое несовпадение и, каждые 1 000 проверок, процент попаданий. Каждая проверка выполняет полное ванильное вычисление вдобавок к кэшу, так что игра работает медленнее, чем без Blindspot, пока эта функция включена. Она предназначена только для тестирования и баг-репортов.

Совместимость

Blindspot не меняет то, что отрисовывается, что отправляется на сервер или принимается от него, или как симулируется мир. Его хуки в код сайдбара, списка игроков, таблицы очков и обработки пакетов только кэшируют результаты, которые vanilla вычислил бы в любом случае, или отмечают, когда эти результаты меняются.

Протестировано вместе с Sodium 0.9.2 и Lithium 0.26.2 на Minecraft 26.3, в одиночной и многопользовательской игре. Не тестировалось со всеми модами.

Моды, которые полностью заменяют ванильный код сайдбара или списка игроков, могут конфликтовать с ним. Blindspot настроен так, что такой конфликт обычно проявляется как краш при запуске, а не как незаметно неверные результаты в игре. Если вы столкнётесь с таким, пожалуйста, откройте issue на GitHub с вашим логом.

Исходный код и участие

Blindspot — открытый исходный код под LGPL-3.0-only. Исходный код на GitHub.

Нашли ещё одну небольшую, упущенную из виду проблему производительности вроде этих? Не стесняйтесь открыть issue или pull request там.

Частые вопросы

Как установить Blindspot?

Установите Fabric под свою версию Minecraft, скачайте Blindspot под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть Blindspot?

У Blindspot есть сборки для Minecraft 26.1–26.3.

Нужен ли Blindspot на сервере?

Ставится только в игру; на сервер ставить не нужно

Лицензия и источник
GNU Lesser General Public License v3.0 onlyможно использовать и распространять; изменённые версии — под той же лицензией и с исходным кодом
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее