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 { class SpawnPlacements; }
37namespace br::spawn { struct State; }
38// clang-format on
39
40class Spawner {
41public:
42 // Spawner inner types define
43 using AncientCityPredicate = ::std::function<bool(::BlockSource const&, ::BlockPos)>;
44
45 using GetSpawningAreasCallback =
46 ::std::function<::gsl::span<::LevelChunk::SpawningArea const>(::LevelChunk const&)>;
47
48 using MobSpawnedCallback = ::std::function<void(::Mob&)>;
49
50 using SpawnMobClusterCallback = ::std::function<void(::BlockPos const&, ::SpawnConditions&)>;
51
52 using SpawnStructureMobCallback =
53 ::std::function<void(::BlockPos const&, ::LevelChunk::SpawningArea const&, ::SpawnConditions const&)>;
54
55 using SpawnTickCallback = ::std::function<void(::BlockPos, ::SpawnConditions)>;
56
57public:
58 // virtual functions
59 // NOLINTBEGIN
60 virtual ~Spawner();
61
62 virtual void initializeServerSide(::ResourcePackManager& rpm, ::IWorldRegistriesProvider& registries) = 0;
63
64 virtual ::SpawnSettings const& getSpawnSettings() const = 0;
65
66 virtual void setSpawnSettings(::SpawnSettings const& spawnSettings) = 0;
67
68 virtual ::ActorSpawnRuleGroup const* getSpawnRules() const = 0;
69
70 virtual ::ActorSpawnRuleGroup* getSpawnRulesMutable() const = 0;
71
72 virtual ::SpawnGroupRegistry const* getSpawnGroupRegistry() const = 0;
73
74 virtual ::br::spawn::EntityTypeCache* getEntityTypeCache() const = 0;
75
76 virtual ::Mob* spawnMob(
77 ::BlockSource& region,
79 ::Actor* spawner,
80 ::Vec3 const& pos,
81 bool naturalSpawn,
82 bool surface,
83 bool fromSpawner
84 );
85
86 virtual ::ItemActor*
87 spawnItem(::BlockSource& region, ::ItemStack const& inst, ::Actor* spawner, ::Vec3 const& pos, int throwTime);
88
89 virtual ::Actor* spawnProjectile(
90 ::BlockSource& region,
92 ::Actor* spawner,
93 ::Vec3 const& position,
94 ::Vec3 const& direction
95 );
96
97 virtual void postProcessSpawnMobs(::BlockSource& region, int xo, int zo, ::Random& random) = 0;
98
99 virtual void
100 tick(::BlockSource& region, ::LevelChunkVolumeData const& levelChunkVolumeData, ::ChunkPos const chunkPos) = 0;
101
102 virtual void tickMobCount() = 0;
103
104 virtual void incrementSpawnableTickedMob() = 0;
105
106 virtual uint getSpawnableTickedMobCountPrevious() const = 0;
107
108 virtual ::std::unordered_set<::ActorUniqueID> spawnMobGroup(
109 ::BlockSource& region,
110 ::std::string const& spawnGroupId,
111 ::Vec3 const& pos,
112 bool doScatter,
113 bool validateDistToPlayer,
114 ::std::function<void(::Mob&)>&& spawnedCallback
115 ) = 0;
116
117 virtual ::br::spawn::SpawnPlacements& getSpawnPlacements() = 0;
118
119 virtual ::std::tuple<::std::array<::SpawnCategory::Type, 8>, uint64>
120 filteredSpawningCategories(::br::spawn::State const&, bool, bool, bool) const;
121
122 virtual void spawnForChunk(
126 ::gsl::span<::SpawnCategory::Type>,
127 ::IRandom&
128 ) const;
129
130 virtual void spawnMobsForChunkGeneration(::BlockSource&, ::Biome const&, ::ChunkPos, ::IRandom&) const;
131 // NOLINTEND
132
133public:
134 // static functions
135 // NOLINTBEGIN
136 MCAPI static bool findNextSpawnBlockUnder(
137 ::BlockSource const& region,
138 ::BlockPos& pos,
139 ::std::optional<::MaterialType> materialToSpawnIn,
140 ::SpawnBlockRequirements spawnBlockRequirements
141 );
142
143 MCAPI static bool isSpawnPositionOk(
144 ::MobSpawnRules const& rules,
145 ::BlockSource& region,
146 ::BlockPos const& pos,
147 bool validateDistToPlayer
148 );
149 // NOLINTEND
150
151public:
152 // destructor thunk
153 // NOLINTBEGIN
154 MCAPI void $dtor();
155 // NOLINTEND
156
157public:
158 // virtual function thunks
159 // NOLINTBEGIN
160 MCAPI ::Mob* $spawnMob(
161 ::BlockSource& region,
163 ::Actor* spawner,
164 ::Vec3 const& pos,
165 bool naturalSpawn,
166 bool surface,
167 bool fromSpawner
168 );
169
170 MCAPI ::ItemActor*
171 $spawnItem(::BlockSource& region, ::ItemStack const& inst, ::Actor* spawner, ::Vec3 const& pos, int throwTime);
172
173 MCAPI ::Actor* $spawnProjectile(
174 ::BlockSource& region,
176 ::Actor* spawner,
177 ::Vec3 const& position,
178 ::Vec3 const& direction
179 );
180
181 MCAPI ::std::tuple<::std::array<::SpawnCategory::Type, 8>, uint64>
182 $filteredSpawningCategories(::br::spawn::State const&, bool, bool, bool) const;
183
184 MCFOLD void $spawnForChunk(
188 ::gsl::span<::SpawnCategory::Type>,
189 ::IRandom&
190 ) const;
191
192 MCFOLD void $spawnMobsForChunkGeneration(::BlockSource&, ::Biome const&, ::ChunkPos, ::IRandom&) const;
193
194
195 // NOLINTEND
196
197public:
198 // vftables
199 // NOLINTBEGIN
200 MCNAPI static void** $vftable();
201 // NOLINTEND
202};
Definition ActorSpawnRuleGroup.h:19
Definition Actor.h:106
Definition Biome.h:23
Definition BlockPos.h:19
Definition BlockSource.h:71
Definition ChunkPos.h:11
Definition IRandom.h:10
Definition IWorldRegistriesProvider.h:25
Definition ItemActor.h:30
Definition ItemStack.h:26
Definition LevelChunkVolumeData.h:18
Definition LevelChunk.h:79
Definition MobSpawnRules.h:21
Definition Mob.h:51
Definition Random.h:10
Definition ResourcePackManager.h:30
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 SpawnPlacements.h:28
Definition ActorDefinitionIdentifier.h:15
Definition ActorUniqueID.h:5
Definition LevelChunk.h:115
Definition SpawnSettings.h:14
Definition State.h:10