LeviLamina
Loading...
Searching...
No Matches
Spawner.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/world/actor/spawn_category/Type.h"
7#include "mc/world/level/SpawnBlockRequirements.h"
8#include "mc/world/level/chunk/LevelChunk.h"
9#include "mc/world/level/material/MaterialType.h"
10
11// auto generated forward declare list
12// clang-format off
13class Actor;
15class Biome;
16class BlockPos;
17class BlockSource;
18class ChunkPos;
19class IRandom;
21class ItemActor;
22class ItemStack;
23class LevelChunk;
25class Mob;
26class MobSpawnRules;
27class Random;
29class SpawnConditions;
31class Vec3;
33struct ActorUniqueID;
34struct SpawnSettings;
35namespace br::spawn { class EntityTypeCache; }
36namespace br::spawn { struct State; }
37// clang-format on
38
39class Spawner {
40public:
41 // Spawner inner types define
42 using MobSpawnedCallback = ::std::function<void(::Mob&)>;
43
44 using SpawnMobClusterCallback = ::std::function<void(::BlockPos const&, ::SpawnConditions&)>;
45
46 using SpawnStructureMobCallback =
47 ::std::function<void(::BlockPos const&, ::LevelChunk::SpawningArea const&, ::SpawnConditions const&)>;
48
49 using GetSpawningAreasCallback =
50 ::std::function<::gsl::span<::LevelChunk::SpawningArea const>(::LevelChunk const&)>;
51
52 using AncientCityPredicate = ::std::function<bool(::BlockSource const&, ::BlockPos)>;
53
54 using SpawnTickCallback = ::std::function<void(::BlockPos, ::SpawnConditions)>;
55
56public:
57 // virtual functions
58 // NOLINTBEGIN
59 // vIndex: 0
60 virtual ~Spawner();
61
62 // vIndex: 1
63 virtual void initializeServerSide(::ResourcePackManager&, ::IWorldRegistriesProvider&) = 0;
64
65 // vIndex: 2
66 virtual ::SpawnSettings const& getSpawnSettings() const = 0;
67
68 // vIndex: 3
69 virtual void setSpawnSettings(::SpawnSettings const&) = 0;
70
71 // vIndex: 4
72 virtual ::ActorSpawnRuleGroup const* getSpawnRules() const = 0;
73
74 // vIndex: 5
75 virtual ::ActorSpawnRuleGroup* getSpawnRulesMutable() const = 0;
76
77 // vIndex: 6
78 virtual ::SpawnGroupRegistry const* getSpawnGroupRegistry() const = 0;
79
80 // vIndex: 7
81 virtual ::br::spawn::EntityTypeCache* getEntityTypeCache() const = 0;
82
83 // vIndex: 8
84 virtual ::Mob* spawnMob(
85 ::BlockSource& region,
87 ::Actor* spawner,
88 ::Vec3 const& pos,
89 bool naturalSpawn,
90 bool surface,
91 bool fromSpawner
92 );
93
94 // vIndex: 9
95 virtual ::ItemActor*
96 spawnItem(::BlockSource& region, ::ItemStack const& inst, ::Actor* spawner, ::Vec3 const& pos, int throwTime);
97
98 // vIndex: 10
99 virtual ::Actor* spawnProjectile(
100 ::BlockSource& region,
102 ::Actor* spawner,
103 ::Vec3 const& position,
104 ::Vec3 const& direction
105 );
106
107 // vIndex: 11
108 virtual void postProcessSpawnMobs(::BlockSource&, int, int, ::Random&) = 0;
109
110 // vIndex: 12
111 virtual void tick(::BlockSource&, ::LevelChunkVolumeData const&, ::ChunkPos const) = 0;
112
113 // vIndex: 13
114 virtual void tickMobCount() = 0;
115
116 // vIndex: 14
117 virtual void incrementSpawnableTickedMob() = 0;
118
119 // vIndex: 15
120 virtual uint getSpawnableTickedMobCountPrevious() const = 0;
121
122 // vIndex: 16
123 virtual ::std::unordered_set<::ActorUniqueID>
124 spawnMobGroup(::BlockSource&, ::std::string const&, ::Vec3 const&, bool, bool, ::std::function<void(::Mob&)>&&) = 0;
125
126 // vIndex: 17
127 virtual ::std::tuple<::std::array<::SpawnCategory::Type, 8>, uint64>
128 filteredSpawningCategories(::br::spawn::State const&, bool, bool, bool) const;
129
130 // vIndex: 18
131 virtual void
132 spawnForChunk(::BlockSource&, ::LevelChunkVolumeData const&, ::br::spawn::State&, ::gsl::span<::SpawnCategory::Type>, ::IRandom&)
133 const;
134
135 // vIndex: 19
136 virtual void spawnMobsForChunkGeneration(::BlockSource&, ::Biome const&, ::ChunkPos, ::IRandom&) const;
137 // NOLINTEND
138
139public:
140 // static functions
141 // NOLINTBEGIN
142 MCAPI static bool findNextSpawnBlockUnder(
143 ::BlockSource const& region,
144 ::BlockPos& pos,
145 ::std::optional<::MaterialType> materialToSpawnIn,
146 ::SpawnBlockRequirements spawnBlockRequirements
147 );
148
149 MCAPI static bool isSpawnPositionOk(
150 ::MobSpawnRules const& rules,
151 ::BlockSource& region,
152 ::BlockPos const& pos,
153 bool validateDistToPlayer
154 );
155 // NOLINTEND
156
157public:
158 // destructor thunk
159 // NOLINTBEGIN
160 MCAPI void $dtor();
161 // NOLINTEND
162
163public:
164 // virtual function thunks
165 // NOLINTBEGIN
166 MCAPI ::Mob* $spawnMob(
167 ::BlockSource& region,
169 ::Actor* spawner,
170 ::Vec3 const& pos,
171 bool naturalSpawn,
172 bool surface,
173 bool fromSpawner
174 );
175
176 MCAPI ::ItemActor*
177 $spawnItem(::BlockSource& region, ::ItemStack const& inst, ::Actor* spawner, ::Vec3 const& pos, int throwTime);
178
179 MCAPI ::Actor* $spawnProjectile(
180 ::BlockSource& region,
182 ::Actor* spawner,
183 ::Vec3 const& position,
184 ::Vec3 const& direction
185 );
186
187 MCAPI ::std::tuple<::std::array<::SpawnCategory::Type, 8>, uint64>
188 $filteredSpawningCategories(::br::spawn::State const&, bool, bool, bool) const;
189
190 MCFOLD void
191 $spawnForChunk(::BlockSource&, ::LevelChunkVolumeData const&, ::br::spawn::State&, ::gsl::span<::SpawnCategory::Type>, ::IRandom&)
192 const;
193
194 MCFOLD void $spawnMobsForChunkGeneration(::BlockSource&, ::Biome const&, ::ChunkPos, ::IRandom&) const;
195 // NOLINTEND
196
197public:
198 // vftables
199 // NOLINTBEGIN
200 MCAPI static void** $vftable();
201 // NOLINTEND
202};
Definition ActorSpawnRuleGroup.h:17
Definition Actor.h:104
Definition Biome.h:27
Definition BlockPos.h:18
Definition BlockSource.h:67
Definition ChunkPos.h:11
Definition IRandom.h:10
Definition IWorldRegistriesProvider.h:26
Definition ItemActor.h:27
Definition ItemStack.h:25
Definition LevelChunkVolumeData.h:16
Definition LevelChunk.h:73
Definition MobSpawnRules.h:16
Definition Mob.h:47
Definition Random.h:16
Definition ResourcePackManager.h:24
Definition SpawnConditions.h:5
Definition SpawnGroupRegistry.h:15
Definition Spawner.h:39
Definition Vec3.h:10
Definition ActorDefinitionIdentifier.h:13
Definition ActorUniqueID.h:5
Definition LevelChunk.h:120
Definition SpawnSettings.h:14
Definition State.h:12