
A* Pathfinding
Датапак A* Pathfinding добавляет в Minecraft продвинутую систему поиска пути для любых сущностей. Мобы и NPC смогут обходить препятствия и находить оптимальный маршрут к цели.
A Pathfinding* - это датапак для Minecraft, который реализует алгоритм поиска пути A* (A-star) для любых сущностей. В ванильной игре мобы двигаются прямолинейно и часто застревают в блоках или падают с обрывов. Этот датапак решает проблему: теперь вы можете заставить любую сущность (моба, игрока или маркер) самостоятельно прокладывать маршрут к заданной точке, обходя стены, ямы и другие преграды.
Проект пригодится создателям приключенческих карт, кастомных мобов, систем навигации для NPC или просто тем, кто хочет сделать поведение существ более умным. Всё работает через функции и теги - никаких модов, только датапак.
Возможности
- Построение пути от текущей позиции сущности до указанной цели.
- Учёт проходимости блоков через теги.
- Настройка максимальной длины пути, высоты шага и глубины падения.
- Система штрафов за опасные или нежелательные блоки.
- Возможность расширения через собственные функции оценки стоимости.
Использование
Вызовите функцию astar:_ от имени сущности, которая должна найти путь. Цель задаётся через контекст выполнения (например, позиция в @s). После вызова появятся маркеры с тегом astar, указывающие маршрут.
Пример:
execute as @s at @p[distance=1..] run function astar:_
Если цель плавает в воздухе или недостижима - путь не будет построен (функция вернёт неудачу).
Важно: рекомендуется установить высокое значение геймрула maxCommandChainLength, иначе при длинных маршрутах часть маркеров может пропасть. Либо ограничьте максимальную дистанцию пути до ~10 блоков.
Настройка
Конфигурация хранится в объективе astar.config.
maxDistance- максимальная дистанция поиска (по умолчанию 100 = 10 блоков).maxStepHeight- максимальная высота шага вверх (по умолчанию 1).maxFallDistance- максимальная высота падения за шаг (отрицательное значение, по умолчанию -3).
Пример:
scoreboard players set maxDistance astar.config 200
scoreboard players set maxStepHeight astar.config 2
scoreboard players set maxFallDistance astar.config -5
Чтобы сбросить настройки перед своей логикой, выполните:
function astar:default_config
scoreboard players reset * astar.config
Блочные теги
Датапак использует теги блоков для определения проходимости:
#astar:climbable- блоки, по которым можно карабкаться (например, лестницы).#astar:obstructs_floor- блоки, по которым можно ходить, но нельзя спускаться (например, заборы).#astar:impassable_floor- непроходимые блоки на уровне пола.#astar:impassable_wall- непроходимые блоки на уровне стены.
Штрафы за блоки
Можно задать штрафы для блоков, чтобы алгоритм избегал опасных зон:
#astar:penalty/damage- 160 (например, лава).#astar:penalty/danger- 80 (например, кактусы).#astar:penalty/disliked- 80 (любые нежелательные блоки).
Штрафы увеличивают стоимость прохода через такие блоки, поэтому алгоритм будет искать альтернативные маршруты.
Расширение логики
Вы можете добавить свою функцию в тег #astar:eval_node, чтобы модифицировать стоимость узла. Для этого используйте:
kill @s- сделать узел непроходимым.scoreboard players add/remove @s astar.f <число>- изменить стоимость.
Пример кода
# код: loop.mcfunction:
data modify storage code:pathfinding points append from entity @s Pos
kill @s
execute as @n[type=marker,tag=astar] at @s run function code:loop
# код: main.mcfunction:
execute store success score found my_score at @n[tag=target] if function astar:_ as @n[type=marker,tag=astar,sort=furthest] at @s run function code:loop
execute unless score found my_score matches 1 run function code:set_direct_target # Идти напрямую к цели, если путь не найден
Скачайте датапак A* Pathfinding и добавьте интеллектуальную навигацию в свой мир Minecraft!
Как запустить датапак A* Pathfinding на сервере?
Датапак A* Pathfinding удобнее всего раскрывается на общем сервере: установили один раз - и вся компания играет с новыми механиками. Создать сервер Майнкрафт с датапаком A* Pathfinding можно за пару минут вместе с BungeeHost.
