Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
WoodlandMansionPieces.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/BlockPos.h"
10#include "mc/world/level/levelgen/structure/StructurePieceType.h"
11#include "mc/world/level/levelgen/structure/TemplateStructurePiece.h"
12
13// auto generated forward declare list
14// clang-format off
15class BlockSource;
16class BoundingBox;
17class Random;
19class StructurePiece;
20// clang-format on
21
23public:
24 // WoodlandMansionPieces inner types declare
25 // clang-format off
27 struct PlacementData;
28 class SimpleGrid;
31 class MansionGrid;
35 // clang-format on
36
37 // WoodlandMansionPieces inner types define
39 public:
40 // virtual functions
41 // NOLINTBEGIN
42 virtual ~FloorRoomCollection() = default;
43
44 virtual ::std::string get1x1(::Random& random) = 0;
45
46 virtual ::std::string get1x1Secret(::Random& random) = 0;
47
48 virtual ::std::string get1x2SideEntrance(::Random& random, bool isStairsRoom) = 0;
49
50 virtual ::std::string get1x2FrontEntrance(::Random& random, bool isStairsRoom) = 0;
51
52 virtual ::std::string get1x2Secret(::Random& random) = 0;
53
54 virtual ::std::string get2x2(::Random& random) = 0;
55
56 virtual ::std::string get2x2Secret(::Random& random) = 0;
57 // NOLINTEND
58 };
59
61 public:
62 // member variables
63 // NOLINTBEGIN
64 ::ll::TypedStorage<1, 1, ::Rotation> mRotation;
65 ::ll::TypedStorage<4, 12, ::BlockPos> mPosition;
66 ::ll::TypedStorage<8, 32, ::std::string> mWallType;
67 // NOLINTEND
68 };
69
70 class SimpleGrid {
71 public:
72 // member variables
73 // NOLINTBEGIN
74 ::ll::TypedStorage<8, 24, ::std::vector<::std::vector<int>>> mGrid;
75 ::ll::TypedStorage<4, 4, int> mWidth;
76 ::ll::TypedStorage<4, 4, int> mHeight;
77 ::ll::TypedStorage<4, 4, int> mValueIfOutside;
78 // NOLINTEND
79
80 public:
81 // member functions
82 // NOLINTBEGIN
83 MCNAPI bool edgesTo(int x, int y, int ifValue);
84 // NOLINTEND
85 };
86
87 class WoodlandMansionPiece : public ::TemplateStructurePiece {
88 public:
89 // member variables
90 // NOLINTBEGIN
91 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::StructureManager>> mStructureManager;
92 ::ll::TypedStorage<8, 32, ::std::string> mTemplateName;
93 ::ll::TypedStorage<1, 1, ::Rotation> mRotation;
94 ::ll::TypedStorage<1, 1, ::Mirror> mMirror;
95 ::ll::TypedStorage<4, 12, ::BlockPos> mPosition;
96 ::ll::TypedStorage<8, 24, ::std::vector<::BlockPos>> mVindicatorPositions;
97 ::ll::TypedStorage<8, 24, ::std::vector<::BlockPos>> mEvokerPositions;
98 ::ll::TypedStorage<8, 24, ::std::vector<::BlockPos>> mAllayGroupPositions;
99 // NOLINTEND
100
101 public:
102 // prevent constructor by default
103 WoodlandMansionPiece();
104
105 public:
106 // virtual functions
107 // NOLINTBEGIN
108 virtual ::StructurePieceType getType() const /*override*/;
109
110 virtual void
111 postProcessMobsAt(::BlockSource& region, ::Random& random, ::BoundingBox const& chunkBB) /*override*/;
112
113 virtual void _handleDataMarker(
114 ::std::string const& markerId,
115 ::BlockPos const& position,
116 ::BlockSource& region,
117 ::Random& random,
118 ::BoundingBox const& chunkBB
119 ) /*override*/;
120 // NOLINTEND
121
122 public:
123 // member functions
124 // NOLINTBEGIN
126 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
127 ::std::string const& templateName,
128 ::BlockPos const& origin,
129 ::Rotation rotation
130 );
131
133 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
134 ::std::string const& templateName,
135 ::BlockPos const& origin,
136 ::Rotation rotation,
137 ::Mirror mirror
138 );
139 // NOLINTEND
140
141 public:
142 // constructor thunks
143 // NOLINTBEGIN
144 MCNAPI void* $ctor(
145 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
146 ::std::string const& templateName,
147 ::BlockPos const& origin,
148 ::Rotation rotation
149 );
150
151 MCNAPI void* $ctor(
152 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
153 ::std::string const& templateName,
154 ::BlockPos const& origin,
155 ::Rotation rotation,
156 ::Mirror mirror
157 );
158 // NOLINTEND
159
160 public:
161 // virtual function thunks
162 // NOLINTBEGIN
163 MCNAPI ::StructurePieceType $getType() const;
164
165 MCNAPI void $postProcessMobsAt(::BlockSource& region, ::Random& random, ::BoundingBox const& chunkBB);
166
168 ::std::string const& markerId,
169 ::BlockPos const& position,
170 ::BlockSource& region,
171 ::Random& random,
172 ::BoundingBox const& chunkBB
173 );
174
175
176 // NOLINTEND
177 };
178
180 public:
181 // virtual functions
182 // NOLINTBEGIN
183 virtual ~FirstFloorRoomCollection() /*override*/ = default;
184
185 virtual ::std::string get1x1(::Random& random) /*override*/;
186
187 virtual ::std::string get1x1Secret(::Random& random) /*override*/;
188
189 virtual ::std::string get1x2SideEntrance(::Random& random, bool isStairsRoom) /*override*/;
190
191 virtual ::std::string get1x2FrontEntrance(::Random& random, bool isStairsRoom) /*override*/;
192
193 virtual ::std::string get1x2Secret(::Random& random) /*override*/;
194
195 virtual ::std::string get2x2(::Random& random) /*override*/;
196
197 virtual ::std::string get2x2Secret(::Random& random) /*override*/;
198 // NOLINTEND
199
200 public:
201 // virtual function thunks
202 // NOLINTBEGIN
203 MCNAPI ::std::string $get1x1(::Random& random);
204
205 MCNAPI ::std::string $get1x1Secret(::Random& random);
206
207 MCNAPI ::std::string $get1x2SideEntrance(::Random& random, bool isStairsRoom);
208
209 MCNAPI ::std::string $get1x2FrontEntrance(::Random& random, bool isStairsRoom);
210
211 MCNAPI ::std::string $get1x2Secret(::Random& random);
212
213 MCNAPI ::std::string $get2x2(::Random& random);
214
215 MCNAPI ::std::string $get2x2Secret(::Random& random);
216
217
218 // NOLINTEND
219 };
220
221 class MansionGrid {
222 public:
223 // member variables
224 // NOLINTBEGIN
225 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::WoodlandMansionPieces::SimpleGrid>> mBaseGrid;
226 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::WoodlandMansionPieces::SimpleGrid>> mThirdFloorGrid;
227 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::WoodlandMansionPieces::SimpleGrid>>> mFloorRooms;
228 ::ll::TypedStorage<4, 4, int> mEntranceX;
229 ::ll::TypedStorage<4, 4, int> mEntranceY;
230 ::ll::TypedStorage<8, 8, ::Random&> mRandom;
231 // NOLINTEND
232
233 public:
234 // prevent constructor by default
235 MansionGrid& operator=(MansionGrid const&);
236 MansionGrid(MansionGrid const&);
237 MansionGrid();
238
239 public:
240 // member functions
241 // NOLINTBEGIN
242 MCNAPI void
244
245 MCNAPI void
246 _recursiveCorridor(::WoodlandMansionPieces::SimpleGrid& grid, int x, int y, uchar heading, int depth);
247
250 int x,
251 int y,
252 int floorNum,
253 int roomId
254 ) const;
255 // NOLINTEND
256
257 public:
258 // static functions
259 // NOLINTBEGIN
261 // NOLINTEND
262 };
263
264 class MansionPiecePlacer {
265 public:
266 // member variables
267 // NOLINTBEGIN
268 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::StructureManager>> mStructureManager;
269 ::ll::TypedStorage<8, 8, ::Random&> mRandom;
270 ::ll::TypedStorage<4, 4, int> mStartX;
271 ::ll::TypedStorage<4, 4, int> mStartY;
272 // NOLINTEND
273
274 public:
275 // prevent constructor by default
276 MansionPiecePlacer& operator=(MansionPiecePlacer const&);
277 MansionPiecePlacer(MansionPiecePlacer const&);
278 MansionPiecePlacer();
279
280 public:
281 // member functions
282 // NOLINTBEGIN
283 MCNAPI void _createRoof(
284 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
285 ::BlockPos const& roofOrigin,
286 ::Rotation rotation,
289 );
290
292 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
295 uchar gridDirection,
296 int startX,
297 int startY,
298 int endX,
299 int endY
300 );
301
303 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
305 );
306
307 MCAPI void createMansion(
308 ::BlockPos const& origin,
309 ::Rotation rotation,
310 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
312 );
313 // NOLINTEND
314 };
315
317 public:
318 // virtual functions
319 // NOLINTBEGIN
320 virtual ~SecondFloorRoomCollection() /*override*/ = default;
321
322 virtual ::std::string get1x1(::Random& random) /*override*/;
323
324 virtual ::std::string get1x1Secret(::Random& random) /*override*/;
325
326 virtual ::std::string get1x2SideEntrance(::Random& random, bool isStairsRoom) /*override*/;
327
328 virtual ::std::string get1x2FrontEntrance(::Random& random, bool isStairsRoom) /*override*/;
329
330 virtual ::std::string get1x2Secret(::Random& random) /*override*/;
331
332 virtual ::std::string get2x2(::Random& random) /*override*/;
333
334 virtual ::std::string get2x2Secret(::Random& random) /*override*/;
335 // NOLINTEND
336
337 public:
338 // virtual function thunks
339 // NOLINTBEGIN
340 MCNAPI ::std::string $get1x1(::Random& random);
341
342 MCNAPI ::std::string $get1x1Secret(::Random& random);
343
344 MCNAPI ::std::string $get1x2SideEntrance(::Random& random, bool isStairsRoom);
345
346 MCNAPI ::std::string $get1x2FrontEntrance(::Random& random, bool isStairsRoom);
347
348 MCNAPI ::std::string $get1x2Secret(::Random& random);
349
350 MCNAPI ::std::string $get2x2(::Random& random);
351
352 MCNAPI ::std::string $get2x2Secret(::Random& random);
353
354
355 // NOLINTEND
356 };
357
359
361
363
365};
Definition BlockPos.h:14
Definition BlockSource.h:72
Definition BoundingBox.h:13
Definition Random.h:10
Definition StructureManager.h:35
Definition StructurePiece.h:18
Definition WoodlandMansionPieces.h:179
MCAPI::std::string $get2x2(::Random &random)
MCAPI::std::string $get1x1Secret(::Random &random)
MCAPI::std::string $get1x1(::Random &random)
MCAPI::std::string $get1x2SideEntrance(::Random &random, bool isStairsRoom)
MCAPI::std::string $get1x2FrontEntrance(::Random &random, bool isStairsRoom)
MCAPI::std::string $get1x2Secret(::Random &random)
MCAPI::std::string $get2x2Secret(::Random &random)
Definition WoodlandMansionPieces.h:38
Definition WoodlandMansionPieces.h:221
static MCAPI bool _cleanEdges(::WoodlandMansionPieces::SimpleGrid &grid)
MCAPI uchar get1x2RoomDirection(::WoodlandMansionPieces::SimpleGrid const &grid, int x, int y, int floorNum, int roomId) const
MCAPI void _recursiveCorridor(::WoodlandMansionPieces::SimpleGrid &grid, int x, int y, uchar heading, int depth)
MCAPI void _identifyRooms(::WoodlandMansionPieces::SimpleGrid &fromGrid, ::WoodlandMansionPieces::SimpleGrid &roomGrid)
Definition WoodlandMansionPieces.h:264
MCAPI void _traverseOuterWalls(::std::vector<::std::unique_ptr<::StructurePiece > > &pieces, ::WoodlandMansionPieces::PlacementData &data, ::WoodlandMansionPieces::SimpleGrid &grid, uchar gridDirection, int startX, int startY, int endX, int endY)
MCAPI void _traverseWallPiece(::std::vector<::std::unique_ptr<::StructurePiece > > &pieces, ::WoodlandMansionPieces::PlacementData &data)
MCAPI void _createRoof(::std::vector<::std::unique_ptr<::StructurePiece > > &pieces, ::BlockPos const &roofOrigin, ::Rotation rotation, ::WoodlandMansionPieces::SimpleGrid &grid, ::WoodlandMansionPieces::SimpleGrid *aboveGrid)
Definition WoodlandMansionPieces.h:316
MCAPI::std::string $get1x2Secret(::Random &random)
MCAPI::std::string $get1x2FrontEntrance(::Random &random, bool isStairsRoom)
MCAPI::std::string $get1x1(::Random &random)
MCAPI::std::string $get1x1Secret(::Random &random)
MCAPI::std::string $get2x2Secret(::Random &random)
MCAPI::std::string $get2x2(::Random &random)
MCAPI::std::string $get1x2SideEntrance(::Random &random, bool isStairsRoom)
Definition WoodlandMansionPieces.h:70
MCAPI bool edgesTo(int x, int y, int ifValue)
Definition WoodlandMansionPieces.h:358
Definition WoodlandMansionPieces.h:87
MCAPI void $postProcessMobsAt(::BlockSource &region, ::Random &random, ::BoundingBox const &chunkBB)
MCAPI::StructurePieceType $getType() const
MCAPI WoodlandMansionPiece(::Bedrock::NotNullNonOwnerPtr<::StructureManager > structureManager, ::std::string const &templateName, ::BlockPos const &origin, ::Rotation rotation, ::Mirror mirror)
MCAPI void $_handleDataMarker(::std::string const &markerId, ::BlockPos const &position, ::BlockSource &region, ::Random &random, ::BoundingBox const &chunkBB)
MCAPI WoodlandMansionPiece(::Bedrock::NotNullNonOwnerPtr<::StructureManager > structureManager, ::std::string const &templateName, ::BlockPos const &origin, ::Rotation rotation)
MCAPI void * $ctor(::Bedrock::NotNullNonOwnerPtr<::StructureManager > structureManager, ::std::string const &templateName, ::BlockPos const &origin, ::Rotation rotation, ::Mirror mirror)
MCAPI void * $ctor(::Bedrock::NotNullNonOwnerPtr<::StructureManager > structureManager, ::std::string const &templateName, ::BlockPos const &origin, ::Rotation rotation)
Definition WoodlandMansionPieces.h:22
Definition WoodlandMansionPieces.h:60