40class StructurePoolElement {
55 virtual ::std::vector<::JigsawBlockInfo>
const& getJigsawMarkers()
const = 0;
57 virtual ::BlockPos getSize(::Rotation rotation)
const = 0;
59 virtual bool isLegacyStructure()
const = 0;
77 ::std::reference_wrapper<::StructureTemplate>,
78 ::std::reference_wrapper<::LegacyStructureTemplate>>>
80 ::ll::TypedStorage<8, 24, ::std::vector<::JigsawBlockInfo>> mJigsawMarkers;
90 virtual ::std::vector<::JigsawBlockInfo>
const& getJigsawMarkers()
const ;
92 virtual ::BlockPos getSize(::Rotation rotation)
const ;
94 virtual bool isLegacyStructure()
const ;
101 ::Bedrock::NotNullNonOwnerPtr<::IStructureTemplateManager> manager,
102 ::std::string
const& location,
103 ::std::vector<::std::unique_ptr<::StructurePoolBlockTagRule>>
const* blockTagRules
110 MCAPI static ::std::vector<::JigsawBlockInfo> _findJigsawBlocks(
111 ::std::vector<::JigsawStructureBlockInfo>& jigsawMarkers,
112 ::std::vector<::std::unique_ptr<::StructurePoolBlockTagRule>>
const* blockTagRules
120 ::Bedrock::NotNullNonOwnerPtr<::IStructureTemplateManager> manager,
121 ::std::string
const& location,
122 ::std::vector<::std::unique_ptr<::StructurePoolBlockTagRule>>
const* blockTagRules
129 MCFOLD ::std::vector<::JigsawBlockInfo>
const& $getJigsawMarkers()
const;
131 MCAPI ::BlockPos $getSize(::Rotation rotation)
const;
133 MCAPI
bool $isLegacyStructure()
const;
145 using StructureProcessorList =
146 ::std::vector<::gsl::not_null<::std::shared_ptr<::br::worldgen::StructureProcessor const>>>;
148 using StructureProcessorPtr = ::gsl::not_null<::std::shared_ptr<::br::worldgen::StructureProcessor const>>;
153 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::SharedTypes::v1_21_80::JigsawStructureMetadata>> mMetadata;
154 ::ll::TypedStorage<8, 80, ::Bedrock::Threading::Mutex> mMetadataMutex;
155 ::ll::TypedStorage<4, 4, ::brstd::once_flag> mTemplateOnceFlag;
156 ::ll::TypedStorage<8, 56, ::std::optional<::StructurePoolElement::LazyTemplate>> mTemplate;
157 ::ll::TypedStorage<8, 8, uint64> mMetadataKey;
158 ::ll::TypedStorage<8, 32, ::std::string> mLocation;
159 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IStructureTemplateManager>> mManager;
160 ::ll::TypedStorage<8, 32, ::StructurePoolElementSettings> mSettings;
164 ::gsl::not_null<::std::shared_ptr<
165 ::std::vector<::gsl::not_null<::std::shared_ptr<::br::worldgen::StructureProcessor const>>>
const>>>
167 ::ll::TypedStorage<1, 1, bool> mValid;
172 StructurePoolElement();
177 virtual ::BlockPos getSize(::Rotation rotation)
const;
179 virtual ::std::vector<::JigsawBlockInfo> getJigsawMarkers(
::BlockPos position, ::Rotation rotation)
const;
181 virtual ::std::vector<::JigsawBlockInfo>
184 virtual ::BoundingBox getBoundingBox(
::BlockPos position, ::Rotation rotation)
const;
186 virtual void setProjection(::Projection projection);
188 virtual ::Projection getProjection()
const;
190 virtual ::PostProcessSettings getPostProcessSettings()
const;
198 ::std::unordered_map<
::BlockPos, ::std::optional<::ActorDefinitionIdentifier>>& entitiesToPlace,
209 ::br::worldgen::JigsawReplacement jigsaw,
210 ::br::worldgen::LiquidSettings liquidSettings
221 virtual void handleDataMarker(
224 ::std::string markerData,
225 ::std::unordered_map<
::BlockPos, ::std::optional<::ActorDefinitionIdentifier>>& entitiesToPlace
228 virtual bool isValid()
const;
230 virtual ~StructurePoolElement();
232 virtual ::StructurePoolElementType type()
const;
234 virtual ::std::shared_ptr<::SharedTypes::v1_21_80::JigsawStructureMetadata> createMetadata()
const;
240 MCAPI StructurePoolElement(
241 ::Bedrock::NotNullNonOwnerPtr<::IStructureTemplateManager> manager,
242 ::std::string
const& location,
246 MCAPI StructurePoolElement(
247 ::Bedrock::NotNullNonOwnerPtr<::IStructureTemplateManager> manager,
248 ::std::string
const& location,
249 ::gsl::not_null<::std::shared_ptr<
250 ::std::vector<::gsl::not_null<::std::shared_ptr<::br::worldgen::StructureProcessor const>>>
const>>
252 ::Projection projection
255 MCAPI StructurePoolElement(
256 ::Bedrock::NotNullNonOwnerPtr<::IStructureTemplateManager> manager,
257 ::std::string
const& location,
258 ::Projection projection,
259 ::PostProcessSettings postProcessSettings
262 MCAPI StructurePoolElement(
263 ::Bedrock::NotNullNonOwnerPtr<::IStructureTemplateManager> manager,
264 ::std::string
const& location,
265 ::std::vector<::std::unique_ptr<::StructurePoolBlockRule>>
const* blockRules,
266 ::std::vector<::std::unique_ptr<::StructurePoolBlockTagRule>>
const* blockTagRules,
267 ::std::vector<::std::unique_ptr<::StructurePoolActorRule>>
const* actorRules,
268 ::Projection projection,
269 ::PostProcessSettings postProcessSettings
272 MCAPI ::SharedTypes::v1_21_80::JigsawStructureMetadata
const& _getMetadata()
const;
274 MCAPI uint64 _getMetadataKey()
const;
276 MCFOLD ::std::string
const& getLocation()
const;
278 MCAPI ::SharedTypes::v1_21_80::JigsawStructureMetadata
const& getMetadata()
const;
280 MCFOLD uint64 getMetadataKey()
const;
282 MCAPI
bool operator!=(::StructurePoolElement
const& rhs)
const;
292 single(::std::string_view location);
296 ::std::string_view location,
297 ::gsl::not_null<::std::shared_ptr<
298 ::std::vector<::gsl::not_null<::std::shared_ptr<::br::worldgen::StructureProcessor const>>>
const>>
304 ::std::string_view location,
305 ::std::vector<::std::unique_ptr<::StructurePoolBlockRule>>
const* blockRules,
306 ::std::vector<::std::unique_ptr<::StructurePoolBlockTagRule>>
const* blockTagRules,
307 ::std::vector<::std::unique_ptr<::StructurePoolActorRule>>
const* actorRules
315 ::Bedrock::NotNullNonOwnerPtr<::IStructureTemplateManager> manager,
316 ::std::string
const& location,
321 ::Bedrock::NotNullNonOwnerPtr<::IStructureTemplateManager> manager,
322 ::std::string
const& location,
323 ::gsl::not_null<::std::shared_ptr<
324 ::std::vector<::gsl::not_null<::std::shared_ptr<::br::worldgen::StructureProcessor const>>>
const>>
326 ::Projection projection
330 ::Bedrock::NotNullNonOwnerPtr<::IStructureTemplateManager> manager,
331 ::std::string
const& location,
332 ::Projection projection,
333 ::PostProcessSettings postProcessSettings
337 ::Bedrock::NotNullNonOwnerPtr<::IStructureTemplateManager> manager,
338 ::std::string
const& location,
339 ::std::vector<::std::unique_ptr<::StructurePoolBlockRule>>
const* blockRules,
340 ::std::vector<::std::unique_ptr<::StructurePoolBlockTagRule>>
const* blockTagRules,
341 ::std::vector<::std::unique_ptr<::StructurePoolActorRule>>
const* actorRules,
342 ::Projection projection,
343 ::PostProcessSettings postProcessSettings
356 MCAPI ::BlockPos $getSize(::Rotation rotation)
const;
358 MCAPI ::std::vector<::JigsawBlockInfo> $getJigsawMarkers(
::BlockPos position, ::Rotation rotation)
const;
360 MCAPI ::std::vector<::JigsawBlockInfo>
363 MCAPI ::BoundingBox $getBoundingBox(
::BlockPos position, ::Rotation rotation)
const;
365 MCFOLD
void $setProjection(::Projection projection);
367 MCFOLD ::Projection $getProjection()
const;
369 MCFOLD ::PostProcessSettings $getPostProcessSettings()
const;
377 ::std::unordered_map<
::BlockPos, ::std::optional<::ActorDefinitionIdentifier>>& entitiesToPlace,
388 ::br::worldgen::JigsawReplacement jigsaw,
389 ::br::worldgen::LiquidSettings liquidSettings
397 MCAPI
void $handleJigsawBlock(
403 MCAPI
void $handleDataMarker(
406 ::std::string markerData,
407 ::std::unordered_map<
::BlockPos, ::std::optional<::ActorDefinitionIdentifier>>& entitiesToPlace
410 MCAPI
bool $isValid()
const;
412 MCFOLD ::StructurePoolElementType $type()
const;
414 MCAPI ::std::shared_ptr<::SharedTypes::v1_21_80::JigsawStructureMetadata> $createMetadata()
const;