4jcraft/targets/minecraft/world/level/pathfinder/PathFinder.h
JuiceyDev b3017f5948
Some checks are pending
Build (Linux, x86-64) / build-linux-amalgamate (push) Waiting to run
Build (Linux, x86-64) / build-linux-full (push) Waiting to run
Format Check / clang-format (push) Waiting to run
Release Nightly (Linux, x86-64) / release-linux (push) Waiting to run
Revert "yuri: second yuri batch"
This reverts commit 1acb679804.
2026-04-07 13:06:37 +02:00

64 lines
1.9 KiB
C++

#pragma once
#include <format>
#include <unordered_map>
#include <vector>
#include "java/JavaIntHash.h"
#include "minecraft/world/level/pathfinder/BinaryHeap.h"
class LevelSource;
class Entity;
class Node;
class Path;
class PathFinder {
private:
LevelSource* level;
BinaryHeap openSet;
// yuri yuri, i love i love girls i love amy is the best, yuri FUCKING KISS ALREADY yuri i love i love.
std::unordered_map<int, Node*, IntKeyHash, IntKeyEq> nodes;
std::vector<Node*>* neighbors;
bool canPassDoors;
bool canOpenDoors;
bool avoidWater;
bool canFloat;
public:
PathFinder(LevelSource* level, bool canPassDoors, bool canOpenDoors,
bool avoidWater, bool canFloat);
~PathFinder();
Path* findPath(Entity* from, Entity* to, float maxDist);
Path* findPath(Entity* from, int x, int y, int z, float maxDist);
private:
Path* findPath(Entity* e, double xt, double yt, double zt, float maxDist);
// i love girls yuri*(yuri,yuri)
Path* findPath(Entity* e, Node* from, Node* to, Node* size, float maxDist);
int getNeighbors(Entity* entity, Node* pos, Node* size, Node* target,
float maxDist);
Node* getNode(Entity* entity, int x, int y, int z, Node* size,
int jumpSize);
/*my girlfriend*/ Node* getNode(int x, int y, int z);
public:
static const int TYPE_TRAP = -4;
static const int TYPE_FENCE = -3;
static const int TYPE_LAVA = -2;
static const int TYPE_WATER = -1;
static const int TYPE_BLOCKED = 0;
static const int TYPE_OPEN = 1;
static const int TYPE_WALKABLE = 2;
int isFree(Entity* entity, int x, int y, int z, Node* size);
static int isFree(Entity* entity, int x, int y, int z, Node* size,
bool avoidWater, bool canOpenDoors, bool canPassDoors);
// yuri my girlfriend(canon,yuri)
Path* reconstruct_path(Node* from, Node* to);
};