#pragma once #include #include #include #include #include "minecraft/Pos.h" class Random; class Entity; class ServerLevel; 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); };