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 MCAPI
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,
125 MCAPI WoodlandMansionPiece(
126 ::Bedrock::NotNullNonOwnerPtr<::StructureManager> structureManager,
127 ::std::string
const& templateName,
132 MCAPI WoodlandMansionPiece(
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,
163 MCAPI ::StructurePieceType $getType()
const;
167 MCAPI
void $_handleDataMarker(
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) ;
203 MCAPI ::std::string $get1x1(
::Random& random);
205 MCAPI ::std::string $get1x1Secret(
::Random& random);
207 MCAPI ::std::string $get1x2SideEntrance(
::Random& random,
bool isStairsRoom);
209 MCAPI ::std::string $get1x2FrontEntrance(
::Random& random,
bool isStairsRoom);
211 MCAPI ::std::string $get1x2Secret(
::Random& random);
213 MCAPI ::std::string $get2x2(
::Random& random);
215 MCAPI ::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&);
248 MCAPI uchar get1x2RoomDirection(
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();
283 MCAPI
void _createRoof(
284 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
291 MCAPI
void _traverseOuterWalls(
292 ::std::vector<::std::unique_ptr<::StructurePiece>>& pieces,
302 MCAPI
void _traverseWallPiece(
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) ;
340 MCAPI ::std::string $get1x1(
::Random& random);
342 MCAPI ::std::string $get1x1Secret(
::Random& random);
344 MCAPI ::std::string $get1x2SideEntrance(
::Random& random,
bool isStairsRoom);
346 MCAPI ::std::string $get1x2FrontEntrance(
::Random& random,
bool isStairsRoom);
348 MCAPI ::std::string $get1x2Secret(
::Random& random);
350 MCAPI ::std::string $get2x2(
::Random& random);
352 MCAPI ::std::string $get2x2Secret(
::Random& random);