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;
30class Vec3;
31namespace br::worldgen { struct StructureTemplateBlockPalette; }
32// clang-format on
33
34class StructureTemplate : public ::IStructureTemplate {
35public:
36 LLAPI void placeInWorld(
37 BlockSource& blockSource,
38 BlockPos const& minCorner,
39 Mirror mirror = Mirror::None,
40 Rotation rotation = Rotation::None,
41 bool ignoreBlocks = false,
42 bool ignoreEntities = false
43 ) const;
44
45 LLNDAPI static std::unique_ptr<StructureTemplate> create(std::string_view name, CompoundTag const& tag);
46
47 LLNDAPI static std::unique_ptr<StructureTemplate> create(
48 std::string_view name,
49 BlockSource& blockSource,
50 BoundingBox const& boundingBox,
51 bool ignoreBlocks = false,
52 bool ignoreEntities = false
53 );
54
55public:
56 // member variables
57 // NOLINTBEGIN
58 ::ll::TypedStorage<8, 32, ::std::string> mName;
59 ::ll::TypedStorage<8, 184, ::StructureTemplateData> mStructureTemplateData;
60 ::ll::TypedStorage<1, 1, uchar> mStructureVersion;
61 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry>> mUnknownBlockRegistry;
62 ::ll::TypedStorage<1, 1, bool> mIsRemovable;
63 ::ll::TypedStorage<8, 16, ::std::map<::Block const*, int>> mBlockToIndex;
64 ::ll::TypedStorage<1, 1, bool> mNeedsOptimize;
65 // NOLINTEND
66
67public:
68 // prevent constructor by default
69 StructureTemplate& operator=(StructureTemplate const&);
70 StructureTemplate(StructureTemplate const&);
71 StructureTemplate();
72
73public:
74 // virtual functions
75 // NOLINTBEGIN
76 virtual ~StructureTemplate() /*override*/;
77
78 virtual bool load(::CompoundTag const& tag);
79
80 virtual ::std::unique_ptr<::CompoundTag> save() const;
81
82 virtual void clear();
83
84 virtual ::BoundingBox
85 getTransformedBounds(::BlockPos loadPosition, ::StructureSettings const& structureSettings) const;
86
87 virtual void fillEmpty(::BlockPos const& size);
88
89 virtual ::NeighborAwareBlockUpdateType shouldHandleUpgradeForBlock(::Block const& block) const /*override*/;
90
91 virtual bool _allowReadBlock(::BlockPos const& position, ::Block const& block) const;
92
93 virtual bool _allowReadActor(::Actor const& actor) const;
94
95 virtual ::BlockPos rawSize() const /*override*/;
96
97 virtual ::br::worldgen::StructureTemplateBlockPalette randomPalette(::BlockPos randomPosSeed) const
98 /*override*/;
99 // NOLINTEND
100
101public:
102 // member functions
103 // NOLINTBEGIN
104 MCAPI StructureTemplate(::StructureTemplate&& other);
105
106 MCAPI explicit StructureTemplate(::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry> unknownBlockRegistry);
107
108 MCAPI StructureTemplate(
109 ::std::string_view name,
111 );
112
113 MCAPI StructureTemplate(
114 ::StructureTemplate const& temp,
116 );
117
118 MCAPI void _fillBlockInfo(
119 ::BlockSource& region,
120 ::BlockPos const& minCorner,
121 ::BlockPos const& maxCorner,
122 ::BlockPos const& size
123 );
124
125 MCAPI void _fillEntityList(::BlockSource& region, ::BlockPos const& minCorner, ::BlockPos const& maxCorner);
126
127 MCAPI int _getOrCreateIndex(
128 ::Block const& block,
129 ::std::map<::Block const*, int>& indexMap,
131 );
132
133 MCAPI void _placeEntitiesInWorld(
134 ::BlockSource& region,
135 ::DataLoadHelper& dataLoadHelper,
136 bool shouldReloadActorEquipment,
137 ::std::optional<::BoundingBox> overlapBB
138 ) const;
139
140 MCAPI void _placeNextBlockSegmentInWorld(
141 ::BlockSource& region,
142 uint64 startPlacement,
143 uint64 endPlacement,
144 ::StructureSettings const& structureSettings,
145 ::DataLoadHelper& dataLoadHelper,
146 ::StructureBlockPalette const& structureBlockPalette,
147 ::BlockPalette const& globalBlockPalette,
148 ::BlockPos position,
149 ::BlockPos const& offset,
150 ::Vec3 const& pivot,
151 ::Rotation rotation,
152 ::Mirror mirror,
153 float integrityValue,
154 uint integritySeed,
156 bool updateItemData,
157 bool ignoreJigsawBlocks
158 ) const;
159
160 MCAPI void fillFromWorld(
161 ::BlockSource& region,
162 ::BlockPos const& capturePosition,
163 ::StructureSettings const& structureSettings
164 );
165
166 MCAPI ::std::vector<::JigsawStructureBlockInfo> getJigsawMarkers() const;
167
168 MCAPI bool const isWaterlogged(::BlockPos const& pos) const;
169
170 MCAPI ::StructureTemplate& operator=(::StructureTemplate&& other);
171
172 MCAPI bool operator==(::StructureTemplate const& other) const;
173
174 MCAPI void optimizePalette(::std::string const& paletteName);
175
176 MCAPI void placeEntitiesInWorld(
177 ::BlockSource& region,
178 ::BlockPos const& position,
179 ::StructureSettings const& structureSettings,
180 ::BoundingBox overlapBB
181 ) const;
182
183 MCAPI void placeInWorld(
184 ::BlockSource& region,
185 ::BlockPalette const& globalBlockPalette,
186 ::BlockPos const& position,
187 ::StructureSettings const& structureSettings,
188 ::StructureTelemetryServerData* telemetryServerData,
189 bool updateItemData
190 ) const;
191
192 MCAPI bool setBlock(::BlockPos const& pos, ::Block const* block, bool waterlogged);
193
194 MCAPI bool structureTemplateDataIsValid(
195 ::BlockSource const& region,
196 ::std::string const& structureName,
197 ::BlockPos const& capturePosition,
198 ::StructureSettings const& structureSettings
199 ) const;
200 // NOLINTEND
201
202public:
203 // static functions
204 // NOLINTBEGIN
205 MCAPI static ::Block const& _mapToRotation(::Block const& curr, ::Rotation rotation);
206
207#ifdef LL_PLAT_C
208 MCAPI static ::std::vector<::std::unique_ptr<::LevelChunk>> constructTransformedLevelChunks(
209 ::Dimension& targetDimension,
210 ::StructureSettings const& settings,
211 ::StructureTemplateData const& structureTemplateData,
213 );
214#endif
215
216 MCAPI static ::Block const* tryGetBlockAtPos(
217 ::BlockPos const& pos,
218 ::StructureTemplateData const& structureTemplateData,
220 );
221 // NOLINTEND
222
223public:
224 // constructor thunks
225 // NOLINTBEGIN
226 MCAPI void* $ctor(::StructureTemplate&& other);
227
228 MCAPI void* $ctor(::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry> unknownBlockRegistry);
229
230 MCAPI void*
231 $ctor(::std::string_view name, ::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry> unknownBlockRegistry);
232
233 MCAPI void* $ctor(
234 ::StructureTemplate const& temp,
236 );
237 // NOLINTEND
238
239public:
240 // destructor thunk
241 // NOLINTBEGIN
242 MCAPI void $dtor();
243 // NOLINTEND
244
245public:
246 // virtual function thunks
247 // NOLINTBEGIN
248 MCAPI bool $load(::CompoundTag const& tag);
249
250 MCAPI ::std::unique_ptr<::CompoundTag> $save() const;
251
252 MCAPI void $clear();
253
254 MCAPI ::BoundingBox
255 $getTransformedBounds(::BlockPos loadPosition, ::StructureSettings const& structureSettings) const;
256
257 MCAPI void $fillEmpty(::BlockPos const& size);
258
259 MCAPI ::NeighborAwareBlockUpdateType $shouldHandleUpgradeForBlock(::Block const& block) const;
260
261 MCAPI bool $_allowReadBlock(::BlockPos const& position, ::Block const& block) const;
262
263 MCAPI bool $_allowReadActor(::Actor const& actor) const;
264
265 MCAPI ::BlockPos $rawSize() const;
266
267 MCAPI ::br::worldgen::StructureTemplateBlockPalette $randomPalette(::BlockPos randomPosSeed) const;
268
269
270 // NOLINTEND
271
272public:
273 // vftables
274 // NOLINTBEGIN
275 MCNAPI static void** $vftable();
276 // NOLINTEND
277};
Definition Actor.h:113
Definition NonOwnerPointer.h:9
Definition BlockPalette.h:18
Definition BlockPos.h:17
Definition BlockSource.h:71
Definition Block.h:41
Definition BoundingBox.h:13
Definition CompoundTag.h:18
Definition DataLoadHelper.h:20
Definition Dimension.h:86
Definition IStructureTemplate.h:15
Definition IUnknownBlockTypeRegistry.h:14
Definition JigsawStructureBlockInfo.h:14
Definition LevelChunk.h:77
Definition StructureBlockPalette.h:17
Definition StructureSettings.h:18
Definition StructureTelemetryServerData.h:8
Definition StructureTemplateData.h:17
static MCAPI void ** $vftable()
Definition Vec3.h:10
Definition StructureTemplateBlockPalette.h:11