#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; unordered_map cachedPortals; vector cachedPortalKeys; public: PortalForcer(ServerLevel *level); ~PortalForcer(); void force(shared_ptr e, double xOriginal, double yOriginal, double zOriginal, float yRotOriginal); bool findPortal(shared_ptr e, double xOriginal, double yOriginal, double zOriginal, float yRotOriginal); bool createPortal(shared_ptr e); void tick(int64_t time); };