61 enum class GatewayTask : uchar {
70 ::ll::TypedStorage<8, 8, ::BlockSource*> mRegion;
71 ::ll::TypedStorage<8, 24, ::std::vector<int>> mGateways;
72 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BlockPatternBuilder>> mExitPortalPattern;
73 ::ll::TypedStorage<4, 4, int> mNumCrystalsAlive;
74 ::ll::TypedStorage<4, 4, int> mTicksSinceCrystalsScanned;
75 ::ll::TypedStorage<4, 4, int> mTicksSincePortalScanned;
76 ::ll::TypedStorage<4, 4, int> mTicksSinceLastPlayerScan;
77 ::ll::TypedStorage<1, 1, bool> mDragonKilled;
78 ::ll::TypedStorage<1, 1, bool> mPreviouslyKilled;
79 ::ll::TypedStorage<1, 1, bool> mDragonSpawned;
80 ::ll::TypedStorage<8, 8, ::ActorUniqueID> mDragonUUID;
81 ::ll::TypedStorage<4, 12, ::BlockPos> mPortalLocation;
82 ::ll::TypedStorage<4, 12, ::BlockPos const> mDragonSpawnPos;
83 ::ll::TypedStorage<4, 4, ::RespawnAnimation> mRespawnStage;
84 ::ll::TypedStorage<4, 4, int> mRespawnTime;
85 ::ll::TypedStorage<8, 24, ::std::vector<::ActorUniqueID>> mRespawnCrystals;
86 ::ll::TypedStorage<1, 1, ::EndDragonFightVersion> mFightVersion;
87 ::ll::TypedStorage<8, 32, ::EndDragonFight::GateWayGenerator> mEntryGenerator;
88 ::ll::TypedStorage<8, 32, ::EndDragonFight::GateWayGenerator> mExitGenerator;
89 ::ll::TypedStorage<1, 1, ::EndDragonFight::GatewayTask> mBuildingOrVerifyingEndGatewayPair;
93 ::std::deque<::std::tuple<
94 ::EndDragonFight::GatewayTask,
113 MCAPI
void _createNewDragon();
115 MCAPI ::BuildMatch _findExitPortal();
121 MCAPI ::ActorSoundIdentifier _makeSoundIdentifier()
const;
123 MCAPI
void _placeAndLinkNewGatewayPair();
125 MCAPI
bool _setEndGatewayBlockActorExitPosition(
133 MCAPI
void _setRespawnStage(::RespawnAnimation stage);
135 MCAPI
void _spawnExitPortal(
bool activated);
137 MCAPI
void _spawnNewGatewayChunksTask(
139 ::EndDragonFight::GatewayTask,
144 MCAPI
void _spawnNewGatewayPair();
146 MCAPI
void _tickRespawnAnimation(::std::vector<::ActorUniqueID>
const& crystalIDs,
int time);
148 MCAPI
void _updateCrystalCount();
150 MCAPI
void _verifyExitPositionsTask(
152 ::EndDragonFight::GatewayTask,
161 MCAPI
void resetSpikeCrystals();
165 MCAPI
void spawnNewGatewayChunks(
::BlockPos const& pos,
bool placeEntryBlocks,
bool placeExitBlocks);
169 MCAPI
void tryRespawn();
177 MCAPI static ::BlockPos
const& DEFAULT_PORTAL_LOCATION();