LeviLamina
Loading...
Searching...
No Matches
StructureTemplate.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/NonOwnerPointer.h"
7#include "mc/util/Mirror.h"
8#include "mc/util/Rotation.h"
9#include "mc/world/level/block/Block.h"
10#include "mc/world/level/chunk/NeighborAwareBlockUpdateType.h"
11#include "mc/world/level/levelgen/structure/IStructureTemplate.h"
12#include "mc/world/level/levelgen/structure/StructureTemplateData.h"
13
14// auto generated forward declare list
15// clang-format off
16class Actor;
17class BlockPalette;
18class BlockPos;
19class BlockSource;
20class BoundingBox;
21class CompoundTag;
22class DataLoadHelper;
23class Dimension;
26class LevelChunk;
31class Vec3;
32namespace br::worldgen { struct StructureTemplateBlockPalette; }
33// clang-format on
34
35class StructureTemplate : public ::IStructureTemplate {
36public:
37 LLAPI void placeInWorld(
38 BlockSource& blockSource,
39 BlockPos const& minCorner,
40 Mirror mirror = Mirror::None,
41 Rotation rotation = Rotation::None,
42 bool ignoreBlocks = false,
43 bool ignoreEntities = false
44 ) const;
45
46 LLNDAPI static std::unique_ptr<StructureTemplate> create(std::string_view name, CompoundTag const& tag);
47
48 LLNDAPI static std::unique_ptr<StructureTemplate> create(
49 std::string_view name,
50 BlockSource& blockSource,
51 BoundingBox const& boundingBox,
52 bool ignoreBlocks = false,
53 bool ignoreEntities = false
54 );
55
56public:
57 // member variables
58 // NOLINTBEGIN
59 ::ll::TypedStorage<8, 32, ::std::string> mName;
60 ::ll::TypedStorage<8, 176, ::StructureTemplateData> mStructureTemplateData;
61 ::ll::TypedStorage<1, 1, uchar> mStructureVersion;
62 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry>> mUnknownBlockRegistry;
63 ::ll::TypedStorage<1, 1, bool> mIsRemovable;
64 ::ll::TypedStorage<8, 16, ::std::map<::Block const*, int>> mBlockToIndex;
65 ::ll::TypedStorage<1, 1, bool> mNeedsOptimize;
66 // NOLINTEND
67
68public:
69 // prevent constructor by default
70 StructureTemplate& operator=(StructureTemplate const&);
71 StructureTemplate(StructureTemplate const&);
72 StructureTemplate();
73
74public:
75 // virtual functions
76 // NOLINTBEGIN
77 virtual ~StructureTemplate() /*override*/;
78
79 virtual bool load(::CompoundTag const& tag);
80
81 virtual ::std::unique_ptr<::CompoundTag> save() const;
82
83 virtual void clear();
84
85 virtual ::BoundingBox
86 getTransformedBounds(::BlockPos loadPosition, ::StructureSettings const& structureSettings) const;
87
88 virtual void fillEmpty(::BlockPos const& size);
89
90 virtual ::NeighborAwareBlockUpdateType shouldHandleUpgradeForBlock(::Block const& block) const /*override*/;
91
92 virtual bool _allowReadBlock(::BlockPos const& position, ::Block const& block) const;
93
94 virtual bool _allowReadActor(::Actor const& actor) const;
95
96 virtual ::BlockPos rawSize() const /*override*/;
97
98 virtual ::br::worldgen::StructureTemplateBlockPalette randomPalette(::BlockPos randomPosSeed) const
99 /*override*/;
100 // NOLINTEND
101
102public:
103 // member functions
104 // NOLINTBEGIN
105 MCAPI StructureTemplate(::StructureTemplate&& other);
106
107 MCAPI explicit StructureTemplate(::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry> unknownBlockRegistry);
108
109 MCAPI StructureTemplate(
110 ::std::string_view name,
112 );
113
114 MCAPI StructureTemplate(
115 ::StructureTemplate const& temp,
117 );
118
119 MCFOLD void _clearStructureData();
120
121 MCAPI void _fillBlockInfo(
122 ::BlockSource& region,
123 ::BlockPos const& minCorner,
124 ::BlockPos const& maxCorner,
125 ::BlockPos const& size
126 );
127
128 MCAPI void _fillEntityList(::BlockSource& region, ::BlockPos const& minCorner, ::BlockPos const& maxCorner);
129
130 MCAPI int _getOrCreateIndex(
131 ::Block const& block,
132 ::std::map<::Block const*, int>& indexMap,
134 );
135
136 MCAPI int _getOrCreateIndex(
137 ::BlockPos position,
138 ::Block const& block,
139 ::std::map<::Block const*, int>& indexMap,
141 );
142
143 MCAPI void _placeEntitiesInWorld(
144 ::BlockSource& region,
145 ::DataLoadHelper& dataLoadHelper,
146 bool shouldReloadActorEquipment,
147 ::std::optional<::BoundingBox> overlapBB
148 ) const;
149
150 MCAPI void _placeNextBlockSegmentInWorld(
151 ::BlockSource& region,
152 uint64 startPlacement,
153 uint64 endPlacement,
154 ::StructureSettings const& structureSettings,
155 ::DataLoadHelper& dataLoadHelper,
156 ::StructureBlockPalette const& structureBlockPalette,
157 ::BlockPalette const& globalBlockPalette,
158 ::BlockPos position,
159 ::BlockPos const& offset,
160 ::Vec3 const& pivot,
161 ::Rotation rotation,
162 ::Mirror mirror,
163 float integrityValue,
164 uint integritySeed,
165 ::StructureTelemetryServerData* updateItemData,
166 bool ignoreJigsawBlocks,
167 bool
168 ) const;
169
170 MCFOLD ::IStructureTemplate const& asStructureTemplate() const;
171
172 MCAPI void fillFromWorld(
173 ::BlockSource& region,
174 ::BlockPos const& capturePosition,
175 ::StructureSettings const& structureSettings
176 );
177
178 MCAPI ::std::vector<::JigsawStructureBlockInfo> getJigsawMarkers() const;
179
180 MCFOLD ::std::string const& getName() const;
181
182 MCFOLD bool getRemovable() const;
183
184 MCFOLD ::BlockPos const& getSize() const;
185
186 MCAPI bool isLoaded() const;
187
188 MCAPI bool const isWaterlogged(::BlockPos const& pos) const;
189
190 MCAPI ::StructureTemplate& operator=(::StructureTemplate&& other);
191
192 MCAPI bool operator==(::StructureTemplate const& other) const;
193
194 MCAPI void optimizePalette(::std::string const& paletteName);
195
196 MCAPI void placeEntitiesInWorld(
197 ::BlockSource& region,
198 ::BlockPos const& position,
199 ::StructureSettings const& structureSettings,
200 ::BoundingBox overlapBB
201 ) const;
202
203 MCAPI void placeInWorld(
204 ::BlockSource& region,
205 ::BlockPalette const& globalBlockPalette,
206 ::BlockPos const& position,
207 ::StructureSettings const& structureSettings,
208 ::StructureTelemetryServerData* telemetryServerData,
209 bool updateItemData
210 ) const;
211
212 MCAPI void placeNextSegmentInWorld(
213 ::StructureAnimationData& structureAnimationData,
214 ::BlockPalette const& globalBlockPalette
215 ) const;
216
217 MCAPI bool setBlock(::BlockPos const& pos, ::Block const* block, bool waterlogged);
218
219 MCAPI void setName(::std::string const& name);
220
221 MCAPI void setStructureTemplateData(::StructureTemplateData const& data);
222
223 MCAPI bool structureTemplateDataIsValid(
224 ::BlockSource const& region,
225 ::std::string const& structureName,
226 ::BlockPos const& capturePosition,
227 ::StructureSettings const& structureSettings
228 ) const;
229
230 MCAPI ::Block const* tryGetBlockAtPos(::BlockPos const& pos) const;
231 // NOLINTEND
232
233public:
234 // static functions
235 // NOLINTBEGIN
236 MCAPI static ::Block const& _mapToRotation(::Block const& curr, ::Rotation rotation);
237
238#ifdef LL_PLAT_C
239 MCAPI static ::std::vector<::std::unique_ptr<::LevelChunk>> constructTransformedLevelChunks(
240 ::Dimension& targetDimension,
241 ::StructureSettings const& settings,
242 ::StructureTemplateData const& structureTemplateData,
244 );
245#endif
246
247 MCAPI static ::Block const* tryGetBlockAtPos(
248 ::BlockPos const& pos,
249 ::StructureTemplateData const& structureTemplateData,
251 );
252 // NOLINTEND
253
254public:
255 // static variables
256 // NOLINTBEGIN
257 MCAPI static int const& NO_BLOCK_INDEX_VALUE();
258 // NOLINTEND
259
260public:
261 // constructor thunks
262 // NOLINTBEGIN
263 MCAPI void* $ctor(::StructureTemplate&& other);
264
265 MCAPI void* $ctor(::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry> unknownBlockRegistry);
266
267 MCAPI void*
268 $ctor(::std::string_view name, ::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry> unknownBlockRegistry);
269
270 MCAPI void* $ctor(
271 ::StructureTemplate const& temp,
273 );
274 // NOLINTEND
275
276public:
277 // destructor thunk
278 // NOLINTBEGIN
279 MCAPI void $dtor();
280 // NOLINTEND
281
282public:
283 // virtual function thunks
284 // NOLINTBEGIN
285 MCAPI bool $load(::CompoundTag const& tag);
286
287 MCAPI ::std::unique_ptr<::CompoundTag> $save() const;
288
289 MCFOLD void $clear();
290
291 MCAPI ::BoundingBox
292 $getTransformedBounds(::BlockPos loadPosition, ::StructureSettings const& structureSettings) const;
293
294 MCAPI void $fillEmpty(::BlockPos const& size);
295
296 MCAPI ::NeighborAwareBlockUpdateType $shouldHandleUpgradeForBlock(::Block const& block) const;
297
298 MCAPI bool $_allowReadBlock(::BlockPos const& position, ::Block const& block) const;
299
300 MCAPI bool $_allowReadActor(::Actor const& actor) const;
301
302 MCAPI ::BlockPos $rawSize() const;
303
304 MCAPI ::br::worldgen::StructureTemplateBlockPalette $randomPalette(::BlockPos randomPosSeed) const;
305
306
307 // NOLINTEND
308
309public:
310 // vftables
311 // NOLINTBEGIN
312 MCNAPI static void** $vftable();
313 // NOLINTEND
314};
Definition Actor.h:123
Definition NonOwnerPointer.h:9
Definition BlockPalette.h:21
Definition BlockPos.h:21
Definition BlockSource.h:72
Definition Block.h:69
Definition BoundingBox.h:13
Definition CompoundTag.h:23
Definition DataLoadHelper.h:20
Definition Dimension.h:88
Definition IStructureTemplate.h:15
Definition IUnknownBlockTypeRegistry.h:14
Definition JigsawStructureBlockInfo.h:14
Definition LevelChunk.h:87
Definition StructureAnimationData.h:16
Definition StructureBlockPalette.h:17
Definition StructureSettings.h:18
Definition StructureTelemetryServerData.h:8
Definition StructureTemplateData.h:16
static MCAPI void ** $vftable()
Definition Vec3.h:10
Definition StructureTemplateBlockPalette.h:18