60 enum class GatewayTask : uchar {
69 ::ll::TypedStorage<8, 8, ::BlockSource*> mRegion;
70 ::ll::TypedStorage<8, 24, ::std::vector<int>> mGateways;
71 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BlockPatternBuilder>> mExitPortalPattern;
72 ::ll::TypedStorage<4, 4, int> mNumCrystalsAlive;
73 ::ll::TypedStorage<4, 4, int> mTicksSinceCrystalsScanned;
74 ::ll::TypedStorage<4, 4, int> mTicksSincePortalScanned;
75 ::ll::TypedStorage<4, 4, int> mTicksSinceLastPlayerScan;
76 ::ll::TypedStorage<1, 1, bool> mDragonKilled;
77 ::ll::TypedStorage<1, 1, bool> mPreviouslyKilled;
78 ::ll::TypedStorage<1, 1, bool> mDragonSpawned;
79 ::ll::TypedStorage<8, 8, ::ActorUniqueID> mDragonUUID;
80 ::ll::TypedStorage<4, 12, ::BlockPos> mPortalLocation;
81 ::ll::TypedStorage<4, 12, ::BlockPos const> mDragonSpawnPos;
82 ::ll::TypedStorage<4, 4, ::RespawnAnimation> mRespawnStage;
83 ::ll::TypedStorage<4, 4, int> mRespawnTime;
84 ::ll::TypedStorage<8, 24, ::std::vector<::ActorUniqueID>> mRespawnCrystals;
85 ::ll::TypedStorage<1, 1, ::EndDragonFightVersion> mFightVersion;
86 ::ll::TypedStorage<8, 32, ::EndDragonFight::GateWayGenerator> mEntryGenerator;
87 ::ll::TypedStorage<8, 32, ::EndDragonFight::GateWayGenerator> mExitGenerator;
88 ::ll::TypedStorage<1, 1, ::EndDragonFight::GatewayTask> mBuildingOrVerifyingEndGatewayPair;
92 ::std::deque<::std::tuple<
93 ::EndDragonFight::GatewayTask,
108 MCAPI
void _createNewDragon();
110 MCAPI ::BuildMatch _findExitPortal();
116 MCAPI
void _placeAndLinkNewGatewayPair();
118 MCAPI
bool _setEndGatewayBlockActorExitPosition(
126 MCAPI
void _setRespawnStage(::RespawnAnimation stage);
128 MCAPI
void _spawnExitPortal(
bool activated);
130 MCAPI
void _spawnNewGatewayChunksTask(::std::tuple<
131 ::EndDragonFight::GatewayTask,
135 MCAPI
void _spawnNewGatewayPair();
137 MCAPI
void _tickRespawnAnimation(::std::vector<::ActorUniqueID>
const& crystalIDs,
int time);
139 MCAPI
void _updateCrystalCount();
141 MCAPI
void _verifyExitPositionsTask(::std::tuple<
142 ::EndDragonFight::GatewayTask,
150 MCAPI
void resetSpikeCrystals();
154 MCAPI
void spawnNewGatewayChunks(
::BlockPos const& pos,
bool placeEntryBlocks,
bool placeExitBlocks);
158 MCAPI
void tryRespawn();
166 MCAPI static ::BlockPos
const& DEFAULT_PORTAL_LOCATION();