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