Skip to content
LeviMC
English
AutoLightDark
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, 184, ::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 MCNAPI StructureTemplate(::StructureTemplate&& other);
106
108
109 MCAPI StructureTemplate(
110 ::std::string_view name,
112 );
113
115 ::StructureTemplate const& temp,
117 );
118
119 MCNAPI void _fillBlockInfo(
120 ::BlockSource& region,
121 ::BlockPos const& minCorner,
122 ::BlockPos const& maxCorner,
123 ::BlockPos const& size
124 );
125
126 MCNAPI void _fillEntityList(::BlockSource& region, ::BlockPos const& minCorner, ::BlockPos const& maxCorner);
127
129 ::Block const& block,
130 ::std::map<::Block const*, int>& indexMap,
132 );
133
135 ::BlockSource& region,
136 ::DataLoadHelper& dataLoadHelper,
137 bool shouldReloadActorEquipment,
138 ::std::optional<::BoundingBox> overlapBB
139 ) const;
140
142 ::BlockSource& region,
143 uint64 startPlacement,
144 uint64 endPlacement,
145 ::StructureSettings const& structureSettings,
146 ::DataLoadHelper& dataLoadHelper,
147 ::StructureBlockPalette const& structureBlockPalette,
148 ::BlockPalette const& globalBlockPalette,
149 ::BlockPos position,
150 ::BlockPos const& offset,
151 ::Vec3 const& pivot,
152 ::Rotation rotation,
153 ::Mirror mirror,
154 float integrityValue,
155 uint integritySeed,
157 bool updateItemData,
158 bool ignoreJigsawBlocks
159 ) const;
160
161 MCAPI void fillFromWorld(
162 ::BlockSource& region,
163 ::BlockPos const& capturePosition,
164 ::StructureSettings const& structureSettings
165 );
166
167 MCNAPI ::std::vector<::JigsawStructureBlockInfo> getJigsawMarkers() const;
168
169 MCAPI bool const isWaterlogged(::BlockPos const& pos) const;
170
171 MCAPI ::StructureTemplate& operator=(::StructureTemplate&& other);
172
173 MCNAPI bool operator==(::StructureTemplate const& other) const;
174
175 MCNAPI void optimizePalette(::std::string const& paletteName);
176
178 ::BlockSource& region,
179 ::BlockPos const& position,
180 ::StructureSettings const& structureSettings,
181 ::BoundingBox overlapBB
182 ) const;
183
184 MCAPI void placeInWorld(
185 ::BlockSource& region,
186 ::BlockPalette const& globalBlockPalette,
187 ::BlockPos const& position,
188 ::StructureSettings const& structureSettings,
189 ::StructureTelemetryServerData* telemetryServerData,
190 bool updateItemData
191 ) const;
192
193#ifdef LL_PLAT_C
194 MCNAPI void placeNextSegmentInWorld(
195 ::StructureAnimationData& structureAnimationData,
196 ::BlockPalette const& globalBlockPalette
197 ) const;
198#endif
199
200 MCNAPI bool setBlock(::BlockPos const& pos, ::Block const* block, bool waterlogged);
201
203 ::BlockSource const& region,
204 ::std::string const& structureName,
205 ::BlockPos const& capturePosition,
206 ::StructureSettings const& structureSettings
207 ) const;
208 // NOLINTEND
209
210public:
211 // static functions
212 // NOLINTBEGIN
213 MCNAPI static ::Block const& _mapToRotation(::Block const& curr, ::Rotation rotation);
214
215#ifdef LL_PLAT_C
216 MCNAPI static ::std::vector<::std::unique_ptr<::LevelChunk>> constructTransformedLevelChunks(
217 ::Dimension& targetDimension,
218 ::StructureSettings const& settings,
219 ::StructureTemplateData const& structureTemplateData,
221 );
222#endif
223
224 MCAPI static ::Block const* tryGetBlockAtPos(
225 ::BlockPos const& pos,
226 ::StructureTemplateData const& structureTemplateData,
228 );
229 // NOLINTEND
230
231public:
232 // constructor thunks
233 // NOLINTBEGIN
234 MCNAPI void* $ctor(::StructureTemplate&& other);
235
237
238 MCAPI void*
239 $ctor(::std::string_view name, ::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry> unknownBlockRegistry);
240
241 MCNAPI void* $ctor(
242 ::StructureTemplate const& temp,
244 );
245 // NOLINTEND
246
247public:
248 // destructor thunk
249 // NOLINTBEGIN
250 MCAPI void $dtor();
251 // NOLINTEND
252
253public:
254 // virtual function thunks
255 // NOLINTBEGIN
256 MCAPI bool $load(::CompoundTag const& tag);
257
258 MCNAPI ::std::unique_ptr<::CompoundTag> $save() const;
259
260 MCNAPI void $clear();
261
262 MCNAPI ::BoundingBox
263 $getTransformedBounds(::BlockPos loadPosition, ::StructureSettings const& structureSettings) const;
264
265 MCNAPI void $fillEmpty(::BlockPos const& size);
266
267 MCNAPI ::NeighborAwareBlockUpdateType $shouldHandleUpgradeForBlock(::Block const& block) const;
268
269 MCNAPI bool $_allowReadBlock(::BlockPos const& position, ::Block const& block) const;
270
271 MCNAPI bool $_allowReadActor(::Actor const& actor) const;
272
273 MCNAPI ::BlockPos $rawSize() const;
274
275 MCNAPI ::br::worldgen::StructureTemplateBlockPalette $randomPalette(::BlockPos randomPosSeed) const;
276
277
278 // NOLINTEND
279
280public:
281 // vftables
282 // NOLINTBEGIN
283 MCNAPI static void** $vftable();
284 // NOLINTEND
285};
Definition Actor.h:116
Definition NonOwnerPointer.h:9
Definition BlockPalette.h:18
Definition BlockPos.h:14
Definition BlockSource.h:72
Definition Block.h:42
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:76
Definition StructureAnimationData.h:16
Definition StructureBlockPalette.h:17
Definition StructureSettings.h:18
Definition StructureTelemetryServerData.h:8
Definition StructureTemplateData.h:18
MCAPI void optimizePalette(::std::string const &paletteName)
static MCAPI void ** $vftable()
MCAPI ::std::vector<::JigsawStructureBlockInfo > getJigsawMarkers() const
MCAPI void _placeNextBlockSegmentInWorld(::BlockSource &region, uint64 startPlacement, uint64 endPlacement, ::StructureSettings const &structureSettings, ::DataLoadHelper &dataLoadHelper, ::StructureBlockPalette const &structureBlockPalette, ::BlockPalette const &globalBlockPalette, ::BlockPos position, ::BlockPos const &offset, ::Vec3 const &pivot, ::Rotation rotation, ::Mirror mirror, float integrityValue, uint integritySeed, ::StructureTelemetryServerData *, bool updateItemData, bool ignoreJigsawBlocks) const
MCAPI void _fillBlockInfo(::BlockSource &region, ::BlockPos const &minCorner, ::BlockPos const &maxCorner, ::BlockPos const &size)
MCAPI::BoundingBox $getTransformedBounds(::BlockPos loadPosition, ::StructureSettings const &structureSettings) const
MCAPI StructureTemplate(::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry > unknownBlockRegistry)
MCAPI void placeEntitiesInWorld(::BlockSource &region, ::BlockPos const &position, ::StructureSettings const &structureSettings, ::BoundingBox overlapBB) const
MCAPI void * $ctor(::StructureTemplate const &temp, ::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry > unknownBlockRegistry)
MCAPI bool setBlock(::BlockPos const &pos, ::Block const *block, bool waterlogged)
MCAPI::NeighborAwareBlockUpdateType $shouldHandleUpgradeForBlock(::Block const &block) const
MCAPI ::std::unique_ptr<::CompoundTag > $save() const
MCAPI void _placeEntitiesInWorld(::BlockSource &region, ::DataLoadHelper &dataLoadHelper, bool shouldReloadActorEquipment, ::std::optional<::BoundingBox > overlapBB) const
MCAPI int _getOrCreateIndex(::Block const &block, ::std::map<::Block const *, int > &indexMap, ::StructureBlockPalette &palette)
MCAPI bool structureTemplateDataIsValid(::BlockSource const &region, ::std::string const &structureName, ::BlockPos const &capturePosition, ::StructureSettings const &structureSettings) const
MCAPI bool $_allowReadActor(::Actor const &actor) const
MCAPI void * $ctor(::StructureTemplate &&other)
MCAPI void $fillEmpty(::BlockPos const &size)
MCAPI StructureTemplate(::StructureTemplate &&other)
MCAPI bool operator==(::StructureTemplate const &other) const
MCAPI void $clear()
MCAPI::br::worldgen::StructureTemplateBlockPalette $randomPalette(::BlockPos randomPosSeed) const
MCAPI void * $ctor(::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry > unknownBlockRegistry)
static MCAPI ::Block const & _mapToRotation(::Block const &curr, ::Rotation rotation)
MCAPI StructureTemplate(::StructureTemplate const &temp, ::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry > unknownBlockRegistry)
MCAPI void _fillEntityList(::BlockSource &region, ::BlockPos const &minCorner, ::BlockPos const &maxCorner)
MCAPI::BlockPos $rawSize() const
MCAPI bool $_allowReadBlock(::BlockPos const &position, ::Block const &block) const
Definition Vec3.h:10
Definition StructureTemplateBlockPalette.h:11