44 virtual ::std::string get1x1(
::Random&) = 0;
46 virtual ::std::string get1x1Secret(
::Random&) = 0;
48 virtual ::std::string get1x2SideEntrance(
::Random&,
bool) = 0;
50 virtual ::std::string get1x2FrontEntrance(
::Random&,
bool) = 0;
52 virtual ::std::string get1x2Secret(
::Random&) = 0;
54 virtual ::std::string get2x2(
::Random&) = 0;
56 virtual ::std::string get2x2Secret(
::Random&) = 0;
76 ::ll::TypedStorage<1, 1, ::Rotation> mRotation;
77 ::ll::TypedStorage<4, 12, ::BlockPos> mPosition;
78 ::ll::TypedStorage<8, 32, ::std::string> mWallType;
98 ::ll::TypedStorage<8, 24, ::std::vector<::std::vector<int>>> mGrid;
99 ::ll::TypedStorage<4, 4, int> mWidth;
100 ::ll::TypedStorage<4, 4, int> mHeight;
101 ::ll::TypedStorage<4, 4, int> mValueIfOutside;
107 MCAPI
void set(
int x0,
int y0,
int x1,
int y1,
int value);
115 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::StructureManager>> mStructureManager;
116 ::ll::TypedStorage<8, 32, ::std::string> mTemplateName;
117 ::ll::TypedStorage<1, 1, ::Rotation> mRotation;
118 ::ll::TypedStorage<1, 1, ::Mirror> mMirror;
119 ::ll::TypedStorage<4, 12, ::BlockPos> mPosition;
120 ::ll::TypedStorage<8, 24, ::std::vector<::BlockPos>> mVindicatorPositions;
121 ::ll::TypedStorage<8, 24, ::std::vector<::BlockPos>> mEvokerPositions;
122 ::ll::TypedStorage<8, 24, ::std::vector<::BlockPos>> mAllayGroupPositions;
127 WoodlandMansionPiece();
132 virtual ::StructurePieceType getType()
const ;
137 virtual void _handleDataMarker(
138 ::std::string
const& markerId,
145 virtual ~WoodlandMansionPiece() ;
151 MCAPI WoodlandMansionPiece(
152 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
153 ::std::string
const& templateName,
158 MCAPI WoodlandMansionPiece(
159 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
160 ::std::string
const& templateName,
166 MCAPI
void _addChest(
167 ::std::string
const& markerId,
174 MCAPI
void _loadTemplate();
181 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
182 ::std::string
const& templateName,
188 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
189 ::std::string
const& templateName,
205 MCAPI ::StructurePieceType $getType()
const;
209 MCAPI
void $_handleDataMarker(
210 ::std::string
const& markerId,
233 virtual ::std::string get1x1(
::Random& random) ;
235 virtual ::std::string get1x1Secret(
::Random& random) ;
237 virtual ::std::string get1x2SideEntrance(
::Random& random,
bool isStairsRoom) ;
239 virtual ::std::string get1x2FrontEntrance(
::Random& random,
bool isStairsRoom) ;
241 virtual ::std::string get1x2Secret(
::Random& random) ;
243 virtual ::std::string get2x2(
::Random& random) ;
245 virtual ::std::string get2x2Secret(
::Random& random) ;
251 MCAPI ::std::string $get1x1(
::Random& random);
253 MCFOLD ::std::string $get1x1Secret(
::Random& random);
255 MCAPI ::std::string $get1x2SideEntrance(
::Random& random,
bool isStairsRoom);
257 MCAPI ::std::string $get1x2FrontEntrance(
::Random& random,
bool isStairsRoom);
259 MCAPI ::std::string $get1x2Secret(
::Random& random);
261 MCAPI ::std::string $get2x2(
::Random& random);
263 MCFOLD ::std::string $get2x2Secret(
::Random& random);
279 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::WoodlandMansionPieces::SimpleGrid>> mBaseGrid;
280 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::WoodlandMansionPieces::SimpleGrid>> mThirdFloorGrid;
281 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::WoodlandMansionPieces::SimpleGrid>>> mFloorRooms;
282 ::ll::TypedStorage<4, 4, int> mEntranceX;
283 ::ll::TypedStorage<4, 4, int> mEntranceY;
284 ::ll::TypedStorage<8, 8, ::Random&> mRandom;
289 MansionGrid& operator=(MansionGrid
const&);
290 MansionGrid(MansionGrid
const&);
296 MCAPI
explicit MansionGrid(
::Random& random);
306 MCAPI
void _setupThirdFloor();
308 MCAPI uchar get1x2RoomDirection(
320 MCAPI
void* $ctor(
::Random& random);
324 class MansionPiecePlacer {
328 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::StructureManager>> mStructureManager;
329 ::ll::TypedStorage<8, 8, ::Random&> mRandom;
330 ::ll::TypedStorage<4, 4, int> mStartX;
331 ::ll::TypedStorage<4, 4, int> mStartY;
336 MansionPiecePlacer& operator=(MansionPiecePlacer
const&);
337 MansionPiecePlacer(MansionPiecePlacer
const&);
338 MansionPiecePlacer();
343 MCAPI
void _addRoom1x1(
344 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
351 MCAPI
void _addRoom1x2(
352 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
361 MCAPI
void _addRoom2x2(
362 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
370 MCAPI
void _addRoom2x2Secret(
371 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
377 MCAPI
void _createRoof(
378 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
385 MCAPI
void _entrance(
386 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
390 MCAPI
void _traverseInnerTurn(
391 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
395 MCAPI
void _traverseOuterWalls(
396 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
406 MCAPI
void _traverseTurn(
407 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
411 MCAPI
void _traverseWallPiece(
412 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
416 MCAPI
void createMansion(
419 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
431 virtual ::std::string get1x1(
::Random& random) ;
433 virtual ::std::string get1x1Secret(
::Random& random) ;
435 virtual ::std::string get1x2SideEntrance(
::Random& random,
bool isStairsRoom) ;
437 virtual ::std::string get1x2FrontEntrance(
::Random& random,
bool isStairsRoom) ;
439 virtual ::std::string get1x2Secret(
::Random& random) ;
441 virtual ::std::string get2x2(
::Random& random) ;
443 virtual ::std::string get2x2Secret(
::Random& random) ;
449 MCAPI ::std::string $get1x1(
::Random& random);
451 MCFOLD ::std::string $get1x1Secret(
::Random& random);
453 MCAPI ::std::string $get1x2SideEntrance(
::Random& random,
bool isStairsRoom);
455 MCAPI ::std::string $get1x2FrontEntrance(
::Random& random,
bool isStairsRoom);
457 MCAPI ::std::string $get1x2Secret(
::Random& random);
459 MCAPI ::std::string $get2x2(
::Random& random);
461 MCFOLD ::std::string $get2x2Secret(
::Random& random);