3#include "mc/_HeaderOutputPredefine.h"
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"
44 virtual ::std::string get1x1(
::Random& random) = 0;
46 virtual ::std::string get1x1Secret(
::Random& random) = 0;
48 virtual ::std::string get1x2SideEntrance(
::Random& random,
bool isStairsRoom) = 0;
50 virtual ::std::string get1x2FrontEntrance(
::Random& random,
bool isStairsRoom) = 0;
52 virtual ::std::string get1x2Secret(
::Random& random) = 0;
54 virtual ::std::string get2x2(
::Random& random) = 0;
56 virtual ::std::string get2x2Secret(
::Random& random) = 0;
64 ::ll::TypedStorage<1, 1, ::Rotation> mRotation;
65 ::ll::TypedStorage<4, 12, ::BlockPos> mPosition;
66 ::ll::TypedStorage<8, 32, ::std::string> mWallType;
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;
83 MCNAPI
bool edgesTo(
int x,
int y,
int ifValue);
87 class WoodlandMansionPiece :
public ::TemplateStructurePiece {
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;
103 WoodlandMansionPiece();
108 virtual ::StructurePieceType getType()
const ;
113 virtual void _handleDataMarker(
114 ::std::string
const& markerId,
126 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
127 ::std::string
const& templateName,
133 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
134 ::std::string
const& templateName,
145 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
146 ::std::string
const& templateName,
152 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
153 ::std::string
const& templateName,
168 ::std::string
const& markerId,
185 virtual ::std::string get1x1(
::Random& random) ;
187 virtual ::std::string get1x1Secret(
::Random& random) ;
189 virtual ::std::string get1x2SideEntrance(
::Random& random,
bool isStairsRoom) ;
191 virtual ::std::string get1x2FrontEntrance(
::Random& random,
bool isStairsRoom) ;
193 virtual ::std::string get1x2Secret(
::Random& random) ;
195 virtual ::std::string get2x2(
::Random& random) ;
197 virtual ::std::string get2x2Secret(
::Random& random) ;
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;
235 MansionGrid& operator=(MansionGrid
const&);
236 MansionGrid(MansionGrid
const&);
264 class MansionPiecePlacer {
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;
276 MansionPiecePlacer& operator=(MansionPiecePlacer
const&);
277 MansionPiecePlacer(MansionPiecePlacer
const&);
278 MansionPiecePlacer();
284 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
292 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
303 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
307 MCAPI
void createMansion(
310 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
322 virtual ::std::string get1x1(
::Random& random) ;
324 virtual ::std::string get1x1Secret(
::Random& random) ;
326 virtual ::std::string get1x2SideEntrance(
::Random& random,
bool isStairsRoom) ;
328 virtual ::std::string get1x2FrontEntrance(
::Random& random,
bool isStairsRoom) ;
330 virtual ::std::string get1x2Secret(
::Random& random) ;
332 virtual ::std::string get2x2(
::Random& random) ;
334 virtual ::std::string get2x2Secret(
::Random& random) ;
Definition BlockSource.h:72
Definition BoundingBox.h:13
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 ®ion, ::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 ®ion, ::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