Files
MinecraftConsoles/Minecraft.World/PathNavigation.h
daoge b3feddfef3 feat: TU19 (Dec 2014) Features & Content (#155)
* try to resolve merge conflict

* feat: TU19 (Dec 2014) Features & Content (#32)

* December 2014 files

* Working release build

* Fix compilation issues

* Add sound to Windows64Media

* Add DLC content and force Tutorial DLC

* Revert "Add DLC content and force Tutorial DLC"

This reverts commit 97a4399472.

* Disable broken light packing

* Disable breakpoint during DLC texture map load

Allows DLC loading but the DLC textures are still broken

* Fix post build not working

* ...

* fix vs2022 build

* fix cmake build

---------

Co-authored-by: Loki <lokirautio@gmail.com>
2026-03-03 03:04:10 +08:00

68 lines
1.6 KiB
C++

#pragma once
class Mob;
class Level;
class Path;
class PathNavigation
{
private:
Mob *mob;
Level *level;
Path *path;
double speedModifier;
AttributeInstance *dist;
bool avoidSun;
int _tick;
int lastStuckCheck;
Vec3 *lastStuckCheckPos;
bool _canPassDoors;
bool _canOpenDoors;
bool avoidWater;
bool canFloat;
public:
PathNavigation(Mob *mob, Level *level);
~PathNavigation();
void setAvoidWater(bool avoidWater);
bool getAvoidWater();
void setCanOpenDoors(bool canOpenDoors);
bool canPassDoors();
void setCanPassDoors(bool canPass);
bool canOpenDoors();
void setAvoidSun(bool avoidSun);
void setSpeedModifier(double speedModifier);
void setCanFloat(bool canFloat);
float getMaxDist();
Path *createPath(double x, double y, double z);
bool moveTo(double x, double y, double z, double speedModifier);
Path *createPath(shared_ptr<Entity> target);
bool moveTo(shared_ptr<Entity> target, double speedModifier);
bool moveTo(Path *newPath, double speedModifier);
Path *getPath();
void tick();
private:
void updatePath();
public:
bool isDone();
void stop();
private:
Vec3 *getTempMobPos();
int getSurfaceY();
bool canUpdatePath();
bool isInLiquid();
void trimPathFromSun();
bool canMoveDirectly(Vec3 *startPos, Vec3 *stopPos, int sx, int sy, int sz);
bool canWalkOn(int x, int y, int z, int sx, int sy, int sz, Vec3 *startPos, double goalDirX, double goalDirZ);
bool canWalkAbove(int startX, int startY, int startZ, int sx, int sy, int sz, Vec3 *startPos, double goalDirX, double goalDirZ);
public:
// 4J Added override to update ai elements when loading entity from schematics
void setLevel(Level *level);
};