40 enum class SpawningLogicState :
int {
42 WaitingForPlayers = 1,
44 WaitingForRewardEjection = 3,
54 ::ll::TypedStorage<1, 1, bool> haveTrialOmen;
55 ::ll::TypedStorage<8, 24, ::std::vector<::ActorUniqueID>> foundPlayers;
75 ::ll::TypedStorage<8, 152, ::ItemStack> itemStack;
95 ::ll::TypedStorage<8, 24, ::std::vector<::ActorUniqueID>> mDetectedPlayers;
96 ::ll::TypedStorage<8, 24, ::std::vector<::ActorUniqueID>> mCurrentMobs;
97 ::ll::TypedStorage<8, 8, uint64> mCooldownEndsAt;
98 ::ll::TypedStorage<8, 8, uint64> mNextMobSpawnsAt;
99 ::ll::TypedStorage<4, 4, int> mTotalMobsSpawned;
100 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::SpawnData>> mNextSpawnData;
101 ::ll::TypedStorage<8, 32, ::std::string> mSelectedLootTableName;
102 ::ll::TypedStorage<8, 24, ::std::vector<::TrialSpawner::WeightedItemStack>> mDispensing;
103 ::ll::TypedStorage<8, 176, ::ActorDefinitionIdentifier> mActorDefId;
104 ::ll::TypedStorage<8, 24, ::WeakEntityRef> mDisplayEntity;
105 ::ll::TypedStorage<4, 4, float> mCurrentSpinSpeed;
106 ::ll::TypedStorage<4, 4, float> mPreviousSpinSpeed;
107 ::ll::TypedStorage<1, 1, bool> mSkipNextMobCleanup;
128 ::ll::TypedStorage<4, 12, ::BlockPos const> mPosition;
129 ::ll::TypedStorage<4, 4, int> mPlayerSearchRange;
130 ::ll::TypedStorage<8, 352, ::TrialSpawner::Data> mData;
131 ::ll::TypedStorage<8, 144, ::TrialSpawnerConfig> mNormalConfig;
132 ::ll::TypedStorage<8, 144, ::TrialSpawnerConfig> mOminousConfig;
133 ::ll::TypedStorage<1, 1, bool> mIsOminous;
134 ::ll::TypedStorage<1, 1, bool> hasSpawnedItemSpawner;
142 MCAPI
void _dispenseItemAboveRandomCombatant(
::BlockSource& region);
144 MCAPI ::TrialSpawner::PlayerScanResult _doPlayerScan(
::BlockSource& region);
148 MCAPI ::std::vector<::TrialSpawner::WeightedItemStack>& _getDispensingItems(
::BlockSource& region);
150 MCAPI ::std::optional<::Vec3>
151 _getPositionToSpawnItemSpawner(
::BlockSource& region, ::std::vector<::ActorUniqueID>
const& eligibleActorIds)
const;
155 MCAPI
void _selectLootTable(
::Level& level);
157 MCAPI
void _sendParticlesForState(
::BlockSource& region,
::BlockPos pos, ::TrialSpawner::SpawningLogicState state);
167 MCAPI
void _tryRegisterNewPlayers(
::BlockSource& region, ::TrialSpawner::SpawningLogicState currentState);
173 MCAPI ::Mob* createAndAddDisplayEntity(
::BlockSource& region);
175 MCAPI ::SpawnData
const* getOrCreateNextSpawnData(
::Random& random);
177 MCAPI ::TrialSpawner::SpawningLogicState getSpawningLogicState(
::BlockSource& region)
const;
181 MCAPI
void removeDisplayEntity();
195 MCAPI
static void _ejectResultItems(
198 ::std::vector<::ItemStack>
const& items,
202 MCAPI static ::std::optional<::Vec3>
205 MCAPI static ::std::vector<::ItemStack> _getRandomLootTableItems(
208 ::DimensionType dimensionType,
209 ::std::string
const& lootTableName
213 MCAPI
static char const* _getSmallFlameParticleName(
bool isOminous);
216 MCAPI
static bool _isAllowedToSpawnInLevel(
::Level& level);
220 MCAPI
static void _removeMobByGameplay(
::Level& level,
::Actor& mob);
225 MCAPI
static void addSpawnParticles(
::Level& level,
::Vec3 pos,
bool isOminous);
227 MCAPI
static void sendEjectItemParticles(
::Level& level,
::BlockPos pos,
bool isOminous);