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