#pragma once class Random; class PortalForcer { public: class PortalPosition : public Pos { public: int64_t lastUsed; PortalPosition(int x, int y, int z, int64_t time); }; private: ServerLevel* level; Random* random; std::unordered_map cachedPortals; std::vector cachedPortalKeys; public: PortalForcer(ServerLevel* level); ~PortalForcer(); void force(std::shared_ptr e, double xOriginal, double yOriginal, double zOriginal, float yRotOriginal); bool findPortal(std::shared_ptr e, double xOriginal, double yOriginal, double zOriginal, float yRotOriginal); bool createPortal(std::shared_ptr e); void tick(int64_t time); };