LeviLamina
Loading...
Searching...
No Matches
BedrockSpawner.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/world/level/SpawnSettings.h"
7#include "mc/world/level/Spawner.h"
8#include "mc/world/level/chunk/SpawnPlacements.h"
9
10// auto generated forward declare list
11// clang-format off
12class Actor;
14class BlockPos;
15class BlockSource;
16class ChunkPos;
17class HashedString;
20class ItemActor;
21class ItemStack;
22class Level;
24class Mob;
25class MobSpawnRules;
26class MobSpawnerData;
27class Random;
28class Randomize;
30class SpawnConditions;
32class Vec3;
34struct ActorUniqueID;
35struct MobSpawnHerdInfo;
36namespace br::spawn { class EntityTypeCache; }
37// clang-format on
38
39class BedrockSpawner : public ::Spawner {
40public:
41 // member variables
42 // NOLINTBEGIN
43 ::ll::TypedStorage<8, 8, ::Level&> mLevel;
44 ::ll::TypedStorage<8, 8, ::IMinecraftEventing&> mEventing;
45 ::ll::TypedStorage<8, 48, ::SpawnSettings> mSpawnSettings;
46 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ActorSpawnRuleGroup>> mActorSpawnRules;
47 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::SpawnGroupRegistry>> mSpawnGroupRegistry;
48 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::br::spawn::EntityTypeCache>> mEntityTypeCache;
49 ::ll::TypedStorage<8, 272, ::br::spawn::SpawnPlacements> mSpawnPlacements;
50 ::ll::TypedStorage<4, 56, int[2][7]> mBaseTypeCount;
51 ::ll::TypedStorage<8, 128, ::std::unordered_map<::HashedString, int>[2]> mEntityTypeCount;
52 ::ll::TypedStorage<4, 4, int> mTotalEntityCount;
53 ::ll::TypedStorage<4, 4, uint> mSpawnableMobTickCount;
54 ::ll::TypedStorage<4, 4, uint> mSpawnableMobTickCountPrevious;
55 // NOLINTEND
56
57public:
58 // prevent constructor by default
59 BedrockSpawner& operator=(BedrockSpawner const&);
60 BedrockSpawner(BedrockSpawner const&);
61 BedrockSpawner();
62
63public:
64 // virtual functions
65 // NOLINTBEGIN
66 virtual ~BedrockSpawner() /*override*/ = default;
67
68 virtual void initializeServerSide(::ResourcePackManager& rpm, ::IWorldRegistriesProvider& registries) /*override*/;
69
70 virtual ::SpawnSettings const& getSpawnSettings() const /*override*/;
71
72 virtual void setSpawnSettings(::SpawnSettings const& spawnSettings) /*override*/;
73
74 virtual ::ActorSpawnRuleGroup const* getSpawnRules() const /*override*/;
75
76 virtual ::ActorSpawnRuleGroup* getSpawnRulesMutable() const /*override*/;
77
78 virtual ::SpawnGroupRegistry const* getSpawnGroupRegistry() const /*override*/;
79
80 virtual ::br::spawn::EntityTypeCache* getEntityTypeCache() const /*override*/;
81
82 virtual ::ItemActor* spawnItem(
83 ::BlockSource& region,
84 ::ItemStack const& inst,
85 ::Actor* spawner,
86 ::Vec3 const& pos,
87 int throwTime
88 ) /*override*/;
89
90 virtual void postProcessSpawnMobs(::BlockSource& region, int xo, int zo, ::Random& random) /*override*/;
91
92 virtual void tick(
93 ::BlockSource& region,
94 ::LevelChunkVolumeData const& levelChunkVolumeData,
95 ::ChunkPos const chunkPos
96 ) /*override*/;
97
98 virtual void tickMobCount() /*override*/;
99
100 virtual void incrementSpawnableTickedMob() /*override*/;
101
102 virtual uint getSpawnableTickedMobCountPrevious() const /*override*/;
103
104 virtual ::std::unordered_set<::ActorUniqueID> spawnMobGroup(
105 ::BlockSource& region,
106 ::std::string const& spawnGroupId,
107 ::Vec3 const& pos,
108 bool doScatter,
109 bool validateDistToPlayer,
110 ::std::function<void(::Mob&)>&& spawnedCallback
111 ) /*override*/;
112
113 virtual ::br::spawn::SpawnPlacements& getSpawnPlacements() /*override*/;
114 // NOLINTEND
115
116public:
117 // member functions
118 // NOLINTBEGIN
119 MCAPI int
120 _handlePopulationCap(::MobSpawnerData const* mobType, ::SpawnConditions const& conditions, int inSpawnCount);
121
122 MCAPI void _postProcessSpawnMobs(
123 ::BlockSource& region,
124 int xo,
125 int zo,
126 ::Randomize& randomize,
127 bool doMobSpawning,
128 ::std::function<void(::BlockPos const&, ::SpawnConditions&)> const& spawnMobClusterCallback,
129 ::std::function<bool(::BlockSource const&, ::BlockPos)> const& isInsideAncientCity
130 );
131
132 MCAPI void _sendHerdEvents(::MobSpawnHerdInfo const& herdInfo, ::std::vector<::Mob*>& spawnGroup) const;
133
134 MCAPI void _spawnMobCluster(::BlockSource& region, ::BlockPos const& pos, ::SpawnConditions& conditions);
135
136 MCAPI void _spawnMobInCluster(
137 ::BlockSource& region,
139 ::BlockPos const& pos,
140 ::SpawnConditions const& conditions,
141 ::std::vector<::Mob*>& spawnGroup
142 );
143
144 MCAPI void _updateBaseTypeCount(::BlockSource& region, ::ChunkPos const& center);
145
146 MCAPI void _updateGroupPersistence(::MobSpawnRules const& spawnRules, ::std::vector<::Mob*> const& spawnGroup);
147 // NOLINTEND
148
149public:
150 // static functions
151 // NOLINTBEGIN
152 MCAPI static bool _isInsideAncientCity(::BlockSource const& region, ::BlockPos pos);
153 // NOLINTEND
154
155public:
156 // static variables
157 // NOLINTBEGIN
158 MCAPI static ::std::unordered_set<::ChunkPos> const& SPAWN_RING_OFFSETS();
159 // NOLINTEND
160
161public:
162 // virtual function thunks
163 // NOLINTBEGIN
164 MCAPI void $initializeServerSide(::ResourcePackManager& rpm, ::IWorldRegistriesProvider& registries);
165
166 MCFOLD ::SpawnSettings const& $getSpawnSettings() const;
167
168 MCAPI void $setSpawnSettings(::SpawnSettings const& spawnSettings);
169
170 MCFOLD ::ActorSpawnRuleGroup const* $getSpawnRules() const;
171
172 MCFOLD ::ActorSpawnRuleGroup* $getSpawnRulesMutable() const;
173
174 MCFOLD ::SpawnGroupRegistry const* $getSpawnGroupRegistry() const;
175
176 MCFOLD ::br::spawn::EntityTypeCache* $getEntityTypeCache() const;
177
178 MCAPI ::ItemActor*
179 $spawnItem(::BlockSource& region, ::ItemStack const& inst, ::Actor* spawner, ::Vec3 const& pos, int throwTime);
180
181 MCAPI void $postProcessSpawnMobs(::BlockSource& region, int xo, int zo, ::Random& random);
182
183 MCAPI void
184 $tick(::BlockSource& region, ::LevelChunkVolumeData const& levelChunkVolumeData, ::ChunkPos const chunkPos);
185
186 MCAPI void $tickMobCount();
187
188 MCAPI void $incrementSpawnableTickedMob();
189
190 MCAPI uint $getSpawnableTickedMobCountPrevious() const;
191
192 MCAPI ::std::unordered_set<::ActorUniqueID> $spawnMobGroup(
193 ::BlockSource& region,
194 ::std::string const& spawnGroupId,
195 ::Vec3 const& pos,
196 bool doScatter,
197 bool validateDistToPlayer,
198 ::std::function<void(::Mob&)>&& spawnedCallback
199 );
200
201 MCFOLD ::br::spawn::SpawnPlacements& $getSpawnPlacements();
202
203
204 // NOLINTEND
205
206public:
207 // vftables
208 // NOLINTBEGIN
209 MCAPI static void** $vftable();
210 // NOLINTEND
211};
Definition ActorSpawnRuleGroup.h:19
Definition Actor.h:105
Definition BlockPos.h:19
Definition BlockSource.h:68
Definition ChunkPos.h:11
Definition HashedString.h:5
Definition IMinecraftEventing.h:137
Definition IWorldRegistriesProvider.h:25
Definition ItemActor.h:29
Definition ItemStack.h:26
Definition LevelChunkVolumeData.h:18
Definition Level.h:249
Definition MobSpawnRules.h:21
Definition MobSpawnerData.h:17
Definition Mob.h:50
Definition Random.h:10
Definition Randomize.h:13
Definition ResourcePackManager.h:29
Definition SpawnConditions.h:8
Definition SpawnGroupRegistry.h:19
Definition Spawner.h:40
static MCAPI void ** $vftable()
Definition Vec3.h:10
Definition EntityTypeCache.h:13
Definition ActorDefinitionIdentifier.h:15
Definition ActorUniqueID.h:5
Definition MobSpawnHerdInfo.h:5
Definition SpawnSettings.h:14