LeviLamina
Loading...
Searching...
No Matches
SpawnPlacements.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/shared_types/legacy/Difficulty.h"
7#include "mc/world/level/chunk/EntityPredicateToken.h"
8#include "mc/world/level/chunk/EntitySpawnReason.h"
9#include "mc/world/level/chunk/FinalizeMobToken.h"
10#include "mc/world/level/chunk/HeightmapToken.h"
11#include "mc/world/level/chunk/ObstructionPredicateToken.h"
12#include "mc/world/level/chunk/PlacementTypeToken.h"
13
14// auto generated forward declare list
15// clang-format off
16class Block;
17class BlockPos;
18class BlockSource;
19class IRandom;
20class Mob;
21namespace br::spawn { class PlacementType; }
22namespace br::spawn { struct EntityType; }
23namespace br::spawn::transform { class PropertyBag; }
24// clang-format on
25
26namespace br::spawn {
27
28class SpawnPlacements {
29public:
30 // SpawnPlacements inner types declare
31 // clang-format off
32 struct EntityRecord;
33 class PlacementRecord;
34 // clang-format on
35
36 // SpawnPlacements inner types define
37 struct EntityRecord {
38 public:
39 // member variables
40 // NOLINTBEGIN
41 ::ll::TypedStorage<1, 1, ::br::spawn::HeightmapToken> mHeightmap;
42 ::ll::TypedStorage<2, 2, ::br::spawn::PlacementTypeToken> mPlacement;
43 ::ll::TypedStorage<2, 2, ::br::spawn::EntityPredicateToken> mEntity;
44 ::ll::TypedStorage<2, 2, ::br::spawn::ObstructionPredicateToken> mObstruction;
45 ::ll::TypedStorage<2, 2, ::br::spawn::FinalizeMobToken> mFinalizeMob;
46 // NOLINTEND
47 };
48
49 class PlacementRecord {
50 public:
51 // member variables
52 // NOLINTBEGIN
53 ::ll::TypedStorage<8, 8, ::br::spawn::SpawnPlacements&> mParent;
54 ::ll::TypedStorage<8, 8, uint64> mIdx;
55 // NOLINTEND
56
57 public:
58 // prevent constructor by default
59 PlacementRecord& operator=(PlacementRecord const&);
60 PlacementRecord(PlacementRecord const&);
61 PlacementRecord();
62
63 public:
64 // member functions
65 // NOLINTBEGIN
66 MCAPI ::br::spawn::SpawnPlacements::PlacementRecord& finalizeMob(::br::spawn::FinalizeMobToken token);
67
68 MCAPI ::br::spawn::SpawnPlacements::PlacementRecord& obstruction(::br::spawn::ObstructionPredicateToken token);
69 // NOLINTEND
70 };
71
72public:
73 // member variables
74 // NOLINTBEGIN
75 ::ll::TypedStorage<8, 24, ::std::vector<::std::tuple<::std::string, ::br::spawn::SpawnPlacements::EntityRecord>>>
76 mEntityRecords;
77 ::ll::TypedStorage<
78 8,
79 24,
80 ::std::vector<::std::tuple<
81 ::std::string,
82 ::std::function<bool(
85 ::br::spawn::EntitySpawnReason&,
88 )>>>>
89 mEntityPredicates;
90 ::ll::TypedStorage<
91 8,
92 24,
93 ::std::vector<::std::tuple<
94 ::std::string,
95 ::std::function<bool(::BlockSource&, ::Mob const&, ::br::spawn::EntityType const&)>>>>
96 mObstructionPredicates;
97 ::ll::TypedStorage<
98 8,
99 24,
100 ::std::vector<::std::tuple<
101 ::std::string,
102 ::std::function<void(
103 ::BlockSource const&,
104 ::SharedTypes::Legacy::Difficulty,
105 ::br::spawn::EntitySpawnReason,
106 ::Mob&,
107 ::IRandom&,
109 )>>>>
110 mFinalizeMobTransform;
111 ::ll::TypedStorage<8, 24, ::std::vector<::std::tuple<::std::string, ::std::function<bool(::Block const&)>>>>
112 mHeightmapTypes;
113 ::ll::TypedStorage<8, 24, ::std::vector<::std::tuple<::std::string, ::std::unique_ptr<::br::spawn::PlacementType>>>>
114 mPlacementTypes;
115 ::ll::
116 TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::tuple<::br::spawn::EntityPredicateToken, bool>>>
117 mReloadableEntitySpawnKeys;
118 ::ll::TypedStorage<
119 8,
120 64,
121 ::std::unordered_map<::std::string, ::std::tuple<::br::spawn::ObstructionPredicateToken, bool>>>
122 mReloadableObstructionKeys;
123 // NOLINTEND
124
125public:
126 // member functions
127 // NOLINTBEGIN
128 MCAPI SpawnPlacements();
129
130 MCAPI void clearReloadablePredicates();
131
132 MCAPI ::br::spawn::EntityPredicateToken findEntityPredicate(::std::string_view key) const;
133
134 MCAPI ::br::spawn::HeightmapToken findHeightmap(::std::string_view key) const;
135
136 MCAPI ::br::spawn::ObstructionPredicateToken findObstruction(::std::string_view key) const;
137
138 MCAPI ::br::spawn::PlacementTypeToken findPlacementType(::std::string_view key) const;
139
140 MCAPI bool isEntityPredicateKeyRecordable(::std::string_view key) const;
141
142 MCAPI bool isObstructionPredicateKeyRecordable(::std::string_view key) const;
143
144 MCAPI ::br::spawn::SpawnPlacements::PlacementRecord record(
145 ::std::string_view typeId,
146 ::br::spawn::PlacementTypeToken placementType,
147 ::br::spawn::HeightmapToken heightmap,
148 ::br::spawn::EntityPredicateToken spawnPlacement
149 );
150
151 MCAPI ::br::spawn::EntityPredicateToken record(
152 ::std::string_view key,
153 ::std::function<bool(
156 ::br::spawn::EntitySpawnReason&,
158 ::IRandom&
159 )> predicate
160 );
161
162 MCAPI ::br::spawn::ObstructionPredicateToken record(
163 ::std::string_view key,
164 ::std::function<bool(::BlockSource&, ::Mob const&, ::br::spawn::EntityType const&)> predicate
165 );
166
167 MCAPI ::br::spawn::EntityPredicateToken recordReloadable(
168 ::std::string_view key,
169 ::std::function<bool(
172 ::br::spawn::EntitySpawnReason&,
174 ::IRandom&
175 )> predicate
176 );
177
178 MCAPI ::br::spawn::ObstructionPredicateToken recordReloadable(
179 ::std::string_view key,
180 ::std::function<bool(::BlockSource&, ::Mob const&, ::br::spawn::EntityType const&)> predicate
181 );
182
183 MCAPI ~SpawnPlacements();
184 // NOLINTEND
185
186public:
187 // constructor thunks
188 // NOLINTBEGIN
189 MCAPI void* $ctor();
190 // NOLINTEND
191
192public:
193 // destructor thunk
194 // NOLINTBEGIN
195 MCAPI void $dtor();
196 // NOLINTEND
197};
198
199} // namespace br::spawn
Definition BlockPos.h:21
Definition BlockSource.h:73
Definition Block.h:69
Definition IRandom.h:10
Definition Mob.h:57
Definition PlacementType.h:14
Definition SpawnPlacements.h:49
Definition PropertyBag.h:7
Definition EntityType.h:17
Definition SpawnPlacements.h:37