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

LocateMore

Находит N ближайших структур, биомов или POI вместо только самого близкого. Точный порядок по расстоянию, полностью асинхронно: сервер продолжает тикать. Также исправляет ванильный /locate, который не возвращает истинно ближайший объект (MC-138887).

Fabric
Загрузчики
Fabric
Скачиваний на Modrinth
652
Подписчиков на Modrinth
2
версия
41
Обновлён
19 октября 202619 окт.
Опубликован
в 2026
100 mansions, cold and warm — The 100 nearest mansions, out to 51,000 blocks. First search of the session, then the same search again on the warm session memo. · свайп

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

Работает на Fabric
Для Minecraft 26.1–26.3
Ставится только на сервер; игрокам ставить не нужно
Последняя версия — 1.21.0 от 19 октября 2026
Нужен Fabric API
Лицензия MIT — бесплатно
Где нужен
В игрене нуженНа сервереобязателен

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

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

Находит N ближайших структур, биомов или POI вместо одной ближайшей. Точный порядок по расстоянию. Сервер продолжает тикать.

/locate structure minecraft:mansion 20
/locate biome minecraft:mushroom_fields 3
/locate poi #minecraft:village 5

Ванильный /locate блокирует поток сервера и возвращает один результат, и этот результат не всегда ближайший. LocateMore добавляет к ванильной команде необязательное количество от 1 до 100 и пропускает ванильный поиск ближайшей структуры через тот же движок, так что обычный /locate, глаза Эндера, карты исследователя и другие моды тоже получают истинно ближайшую структуру, не блокируя тик. Результаты сыплются в чат, начиная с ближайшего, каждая строка телепортирует по клику, а прогресс показывает боссбар.

Почему это быстро

Ваниль раскручивает спираль наружу и перепроверяет пересекающиеся области. LocateMore начинает с сида: сид определяет единственные чанки, где может зародиться каждая структура, и движок обходит ровно эти кандидаты в истинном порядке по расстоянию, проверяя каждый теми же проверками, что и ваниль. Кандидаты в негенерированном мире обычно решаются чистой математикой (та же математика точек генерации и взвешенный выбор из набора, которые выполнила бы сама генерация, — каждый подтверждён арбитром, прежде чем ему доверились, и отозван на сессию, если арбитр когда-либо не согласится), так что для них не загружается и не генерируется ни один чанк. Результаты совпадают с ванильными; их просто больше и раньше.

Замеры (release-сборка, чистый мир, сид 20260821, количество 20; warm — тот же поиск ещё раз):

структураcoldwarm
mansion1.7 s0.06 s
ancient_city0.10 s
monument1.5 s
jungle_pyramid3.7 s0.10 s
#village (тег, мультинабор)0.17 s
fortress (Nether, мультинабор)0.04 s

Ваниль в том же мире: 10 секунд заблокированных тиков ради 13 из 20. Каждый релиз перед выпуском сверяется координата за координатой с реальной генерацией на обеих поддерживаемых версиях (test/run-both.sh).

Биомы и POI тоже

/locate biome сэмплирует ту же сетку, что и ваниль, через тот же сэмплер климата, но вне потока и в точном порядке по расстоянию (ванильная спираль лишь приблизительно ближайшая). N результатов — это N различных пятен: попадание в пределах biomeSeparationBlocks (по умолчанию 512) от уже принятого подавляется. Радиус по умолчанию 12800, вдвое больше ванильного, поскольку дополнительная дальность — чистая математика.

/locate poi ищет по ВСЕМУ исследованному миру вместо ванильного радиуса в 256 блоков, читая хранилище poi вне потока и никогда не закрепляя данные poi в памяти так, как это делает ванильный запрос. POI — это состояние мира, поэтому неисследованный мир искать нельзя; изменения в памяти, ещё не записанные на диск, учитываются, а попадания перепроверяются по живой памяти перед выводом.

API для других модов

LocateMoreApi.findNearest(level, structures, origin, 5).thenAccept(result -> {
    for (LocateMoreApi.StructureHit hit : result.hits()) {
        // hit.pos(), hit.structure(), hit.distance()
    }
});

com.rasmus.locatemore.api — это контракт; все остальные пакеты внутренние. Вызывай в потоке сервера; future завершается там же, попадания в точном порядке по расстоянию, с флагами complete и orderingGuaranteed для случаев обрезки по бюджету и нерешённых случаев. SearchOptions понижает бюджеты для каждого вызова, отключает генерацию чанков (mathOnly()) и исключает предыдущие попадания.

Ограничения

  • Обычный /locate намеренно возвращает истинно ближайшую структуру, чего ваниль иногда не делает (MC-138887). Для точного соответствия ванили (практика спидраннеров, инструменты для сидов): /gamerule locatemore:exact_locate false, для каждого мира, на лету; improveVanillaLocate в config/locatemore.json — это общий рубильник для сервера.
  • Мультинаборным структурам в негенерированном мире нужен их кандидатный чанк, сгенерированный до первой стадии, точно как при ванильном locate; каждая проба добавляет от 4 до 12 КБ к сохранению, и сводка сообщает их количество. Однонаборным структурам пробы не нужны.
  • Состояние поиска не сохраняется между сессиями; перезагрузка датапака прерывает запущенные поиски и очищает памятку сессии. Метки — намеренное исключение: это закладки в собственных данных игрока, и они никогда не влияют на результат поиска.
  • Границы по умолчанию: радиус 1 000 000 блоков, 60 с реального времени, 50 000 проверок кандидатов, 2 одновременных поиска. Частичные результаты сообщают об этом. Всё это лежит в config/locatemore.json.

Команды

командачто делает
`/locate structure <id|#tag> [min_distance]`асинхронный поиск, стримит N ближайших (опционально не ближе указанного расстояния)
`/locate biome <id|#tag> [min_distance]`асинхронный поиск биомов, N отдельных участков
`/locate poi <id|#tag> [min_distance]`асинхронный поиск poi по всей исследованной местности
`/locate near structure|biome structure|biome [radius]`ближайший a, рядом с которым в пределах radius (по умолчанию 512) есть b, например деревня рядом с пустыней (в смешанных парах структура идёт первой)
`/locate mark //locate marks//locate unmark `сохранить точку, где ты стоишь / список твоих меток / удалить одну; в каждой строке те же кликабельные координаты и кнопки, что и в результатах поиска, а при смерти автоматически ставится метка death (deathMark в конфиге отключает это на всём сервере)
/locate track <mark|x y z name>живое расстояние + стрелка в action bar, самоочищается
/locate compass <mark|x y z name>именованный компас, указывающий на точку
`/locate verify `ловушка дрейфа: сравнение теневого парсинга с ванильным на 20 чанках
/locate pruneудалить пустые файлы регионов (ванильный путь сканирования всё равно их оставляет, MC-311323)
/gamerule locatemore:exact_locateпереключатель для ванильных мест вызова, отдельно для каждого мира

Требуются права оператора, как и для ванильного /locate. Каждая подкоманда также существует под /locatemore, и именно этот алиас мод прав (LuckPerms и т. п.) может выдать узел за узлом: locatemore.track, locatemore.compass, locatemore.mark, locatemore.prune, locatemore.verify, locatemore.near (ванильный корень /locate требует уровень оператора 2, прежде чем вообще рассматривать подкоманды). Теги структур и все измерения работают. Ванильные клиенты на выделенном сервере видят корректный вывод, потому что каждая строка использует ванильные ключи перевода.

Версии

Один jar работает на 26.1.2 и 26.2. Fabric, требует Fabric API. Лицензия MIT. Серверная сторона: установлен на сервере — ванильные клиенты получают всё; в одиночной игре достаточно установки на клиент.

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

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

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

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

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

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

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

Лицензия и источник
MIT Licenseможно свободно использовать и распространять с указанием автора
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

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