LeviLamina
Loading...
Searching...
No Matches
NaturalSpawner.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/world/actor/ActorType.h"
7#include "mc/world/actor/spawn_category/Type.h"
8#include "mc/world/level/SpawnSettings.h"
9#include "mc/world/level/Spawner.h"
10#include "mc/world/level/chunk/SpawnPlacements.h"
11
12// auto generated forward declare list
13// clang-format off
15class Biome;
16class BlockPos;
17class BlockSource;
18class ChunkPos;
20class IRandom;
22class Level;
24class Mob;
25class Random;
28class Vec3;
29struct ActorUniqueID;
30namespace br::spawn { class EntityTypeCache; }
31namespace br::spawn { struct State; }
32// clang-format on
33
34class NaturalSpawner : public ::Spawner {
35public:
36 // NaturalSpawner inner types define
37 using AfterSpawnCallback = ::std::function<void(::Mob&, ::LevelChunkVolumeData const&)>;
38
39 using SpawnPredicate = ::std::function<bool(::ActorType, ::BlockPos, ::LevelChunkVolumeData const&)>;
40
41public:
42 // member variables
43 // NOLINTBEGIN
44 ::ll::TypedStorage<8, 8, ::Level&> mLevel;
45 ::ll::TypedStorage<8, 8, ::IMinecraftEventing&> mEventing;
46 ::ll::TypedStorage<8, 48, ::SpawnSettings> mSpawnSettings;
47 ::ll::TypedStorage<8, 272, ::br::spawn::SpawnPlacements> mSpawnPlacements;
48 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ActorSpawnRuleGroup>> mActorSpawnRules;
49 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::SpawnGroupRegistry>> mSpawnGroupRegistry;
50 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::br::spawn::EntityTypeCache>> mEntityTypeCache;
51 // NOLINTEND
52
53public:
54 // prevent constructor by default
55 NaturalSpawner& operator=(NaturalSpawner const&);
56 NaturalSpawner(NaturalSpawner const&);
57 NaturalSpawner();
58
59public:
60 // virtual functions
61 // NOLINTBEGIN
62 virtual ~NaturalSpawner() /*override*/ = default;
63
64 virtual ::std::tuple<::std::array<::SpawnCategory::Type, 8>, uint64>
65 filteredSpawningCategories(::br::spawn::State const&, bool, bool, bool) const /*override*/;
66
67 virtual void spawnForChunk(
71 ::gsl::span<::SpawnCategory::Type>,
73 ) const /*override*/;
74
75 virtual void spawnMobsForChunkGeneration(::BlockSource&, ::Biome const&, ::ChunkPos, ::IRandom&) const /*override*/;
76
77 virtual ::br::spawn::SpawnPlacements& getSpawnPlacements() /*override*/;
78
79 virtual void initializeServerSide(::ResourcePackManager&, ::IWorldRegistriesProvider&) /*override*/;
80
81 virtual ::SpawnSettings const& getSpawnSettings() const /*override*/;
82
83 virtual void setSpawnSettings(::SpawnSettings const&) /*override*/;
84
85 virtual ::ActorSpawnRuleGroup const* getSpawnRules() const /*override*/;
86
87 virtual ::ActorSpawnRuleGroup* getSpawnRulesMutable() const /*override*/;
88
89 virtual ::SpawnGroupRegistry const* getSpawnGroupRegistry() const /*override*/;
90
91 virtual ::br::spawn::EntityTypeCache* getEntityTypeCache() const /*override*/;
92
93 virtual void postProcessSpawnMobs(::BlockSource&, int, int, ::Random&) /*override*/;
94
95 virtual void tick(::BlockSource&, ::LevelChunkVolumeData const&, ::ChunkPos const) /*override*/;
96
97 virtual void tickMobCount() /*override*/;
98
99 virtual void incrementSpawnableTickedMob() /*override*/;
100
101 virtual uint getSpawnableTickedMobCountPrevious() const /*override*/;
102
103 virtual ::std::unordered_set<::ActorUniqueID> spawnMobGroup(
105 ::std::string const&,
106 ::Vec3 const&,
107 bool,
108 bool,
109 ::std::function<void(::Mob&)>&&
110 ) /*override*/;
111 // NOLINTEND
112
113public:
114 // virtual function thunks
115 // NOLINTBEGIN
116
117 // NOLINTEND
118};
Definition ActorSpawnRuleGroup.h:19
Definition Biome.h:23
Definition BlockPos.h:19
Definition BlockSource.h:68
Definition ChunkPos.h:11
Definition IMinecraftEventing.h:137
Definition IRandom.h:13
Definition IWorldRegistriesProvider.h:25
Definition LevelChunkVolumeData.h:18
Definition Level.h:249
Definition Mob.h:50
Definition Random.h:10
Definition ResourcePackManager.h:29
Definition SpawnGroupRegistry.h:19
Definition Spawner.h:40
Definition Vec3.h:10
Definition EntityTypeCache.h:13
Definition ActorUniqueID.h:5
Definition SpawnSettings.h:14
Definition State.h:10