33 enum class GatewayTask : uchar {
43 ::ll::TypedStorage<1, 1, bool> mPlaceNewBlocks;
44 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ChunkViewSource>> mSource;
45 ::ll::TypedStorage<4, 12, ::BlockPos> mPosition;
64 ::ll::TypedStorage<8, 8, ::BlockSource*> mRegion;
65 ::ll::TypedStorage<8, 24, ::std::vector<int>> mGateways;
66 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BlockPatternMatcher const>> mExitPortalPattern;
67 ::ll::TypedStorage<4, 4, int> mNumCrystalsAlive;
68 ::ll::TypedStorage<4, 4, int> mTicksSinceCrystalsScanned;
69 ::ll::TypedStorage<4, 4, int> mTicksSincePortalScanned;
70 ::ll::TypedStorage<4, 4, int> mTicksSinceLastPlayerScan;
71 ::ll::TypedStorage<1, 1, bool> mDragonKilled;
72 ::ll::TypedStorage<1, 1, bool> mPreviouslyKilled;
73 ::ll::TypedStorage<1, 1, bool> mDragonSpawned;
74 ::ll::TypedStorage<8, 8, ::ActorUniqueID> mDragonUUID;
75 ::ll::TypedStorage<4, 12, ::BlockPos> mPortalLocation;
76 ::ll::TypedStorage<4, 12, ::BlockPos const> mDragonSpawnPos;
77 ::ll::TypedStorage<4, 4, ::RespawnAnimation> mRespawnStage;
78 ::ll::TypedStorage<4, 4, int> mRespawnTime;
79 ::ll::TypedStorage<8, 24, ::std::vector<::ActorUniqueID>> mRespawnCrystals;
80 ::ll::TypedStorage<1, 1, ::EndDragonFightVersion> mFightVersion;
81 ::ll::TypedStorage<8, 32, ::EndDragonFight::GateWayGenerator> mEntryGenerator;
82 ::ll::TypedStorage<8, 32, ::EndDragonFight::GateWayGenerator> mExitGenerator;
83 ::ll::TypedStorage<1, 1, ::EndDragonFight::GatewayTask> mBuildingOrVerifyingEndGatewayPair;
87 ::std::deque<::std::tuple<
88 ::EndDragonFight::GatewayTask,
107 MCAPI
void _createNewDragon();
109 MCAPI ::BuildMatch _findExitPortal();
115 MCAPI ::ActorSoundIdentifier _makeSoundIdentifier()
const;
117 MCAPI
void _placeAndLinkNewGatewayPair();
119 MCAPI
bool _setEndGatewayBlockActorExitPosition(
127 MCAPI
void _setRespawnStage(::RespawnAnimation stage);
129 MCAPI
void _spawnExitPortal(
bool activated);
131 MCAPI
void _spawnNewGatewayChunksTask(
133 ::EndDragonFight::GatewayTask,
138 MCAPI
void _spawnNewGatewayPair();
140 MCAPI
void _tickRespawnAnimation(::std::vector<::ActorUniqueID>
const& crystalIDs,
int time);
142 MCAPI
void _updateCrystalCount();
144 MCAPI
void _verifyExitPositionsTask(
146 ::EndDragonFight::GatewayTask,
155 MCAPI
void resetSpikeCrystals();
159 MCAPI
void spawnNewGatewayChunks(
::BlockPos const& pos,
bool placeEntryBlocks,
bool placeExitBlocks);
163 MCAPI
void tryRespawn();
165 MCAPI ~EndDragonFight();
171 MCAPI static ::BlockPos
const& DEFAULT_PORTAL_LOCATION();