matze/pathfinder
Composer 安装命令:
composer require matze/pathfinder
包简介
PocketMine-MP Pathfinder
README 文档
README
VIRION IS CURRENTLY IN ALPHA PHASE!
TO-DO:
- More default rules (Help is appreciated!)
Features:
- Async Pathfinding
- Sync Pathfinding
- Path smoothing
- Easy to use API
About asynchron pathfinding:
Async pathfinding is always the method I recommend due to it´s huge performance benefit. But you have to consider that pathfinding on another thread can lead to wrong paths due to block updates during pathfinding. Additionally, async pathfinding takes a bit longer then running the pathfinder on the main thread (Depends on the distance and chunks required to compute the path). But on the other hand the main thread doesn´t even recognize any path computation. You also consider adding a queue if many paths have to be calculated, otherwise stuff like chunk loading & packet compression will take longer.
Code examples:
Finding a path between two points:
// Set some settings $settings = \matze\pathfinder\setting\Settings::get() ->setPathSmoothing(false) ->setMaxTravelDistanceDown(2) ->setMaxTravelDistanceUp(1); // Initialize pathfinder $pathfinder = new \matze\pathfinder\Pathfinder([ // Rules will be executed from PRIORITY_HIGHEST to PRIORITY_LOWEST new \matze\pathfinder\rule\default\EntitySizeRule(new \pocketmine\entity\EntitySizeInfo(2, 1), \matze\pathfinder\rule\Rule::PRIORITY_NORMAL),//Define rules and set priorities ], $settings); // Find path synchron $result = $pathfinder->findPath($from, $to, $world, $timeout); if($result === null) { //Path not found } else { //Path found } // Find path asynchron $pathfinder->findPathAsync($from, $to, $world, function(?\matze\pathfinder\result\PathResult $result): void { if($result === null) { //Path not found } else { //Path found } }, $timeout);
You´re always welcome to contribute!
Contact me:
Discord: matze998
统计信息
- 总下载量: 433
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 45
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: gpl-3.0-or-later
- 更新时间: 2024-03-14