matze997 / pathfinder
PocketMine-MP Pathfinder
dev-V3-PM5
2024-04-26 13:51 UTC
Requires
- pocketmine/pocketmine-mp: ^5.0.0
This package is auto-updated.
Last update: 2024-09-26 14:44:34 UTC
README
目前VIRION处于测试阶段!
待办事项
- 更多默认规则(欢迎帮助!)
功能
- 异步寻路
- 同步寻路
- 路径平滑化
- 易于使用的API
关于异步寻路
异步寻路由于其卓越的性能优势,通常是我推荐的方法。但您必须考虑,由于寻路时可能发生的块更新中断,在另一个线程上进行的寻路可能导致错误的路径。此外,异步寻路比在主线程上运行寻路器要慢一些(取决于路径的距离和所需计算的块)。但另一方面,主线程甚至没有识别到任何路径计算。如果您必须计算多个路径,还考虑添加队列,否则像块加载和包压缩这样的操作将花费更长的时间。
代码示例
在两点之间找到路径
// 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);
您随时欢迎贡献力量!
联系我
Discord: matze998