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