37 LLAPI
void placeInWorld(
40 Mirror mirror = Mirror::None,
41 Rotation rotation = Rotation::None,
42 bool ignoreBlocks =
false,
43 bool ignoreEntities =
false
46 LLNDAPI
static std::unique_ptr<StructureTemplate> create(std::string_view name,
CompoundTag const& tag);
48 LLNDAPI
static std::unique_ptr<StructureTemplate> create(
49 std::string_view name,
52 bool ignoreBlocks =
false,
53 bool ignoreEntities =
false
59 ::ll::TypedStorage<8, 32, ::std::string> mName;
60 ::ll::TypedStorage<8, 176, ::StructureTemplateData> mStructureTemplateData;
61 ::ll::TypedStorage<1, 1, uchar> mStructureVersion;
62 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry>> mUnknownBlockRegistry;
63 ::ll::TypedStorage<1, 1, bool> mIsRemovable;
64 ::ll::TypedStorage<8, 16, ::std::map<::Block const*, int>> mBlockToIndex;
65 ::ll::TypedStorage<1, 1, bool> mNeedsOptimize;
70 StructureTemplate& operator=(StructureTemplate
const&);
71 StructureTemplate(StructureTemplate
const&);
77 virtual ~StructureTemplate() ;
81 virtual ::std::unique_ptr<::CompoundTag> save()
const;
88 virtual void fillEmpty(
::BlockPos const& size);
90 virtual ::NeighborAwareBlockUpdateType shouldHandleUpgradeForBlock(
::Block const& block)
const ;
94 virtual bool _allowReadActor(
::Actor const& actor)
const;
96 virtual ::BlockPos rawSize()
const ;
98 virtual ::br::worldgen::StructureTemplateBlockPalette randomPalette(
::BlockPos randomPosSeed)
const
107 MCAPI StructureTemplate(
108 ::std::string_view name,
112 MCAPI StructureTemplate(
113 ::StructureTemplate
const& temp,
117 MCAPI
void _clearStructureData();
119 MCAPI
void _fillBlockInfo(
128 MCAPI
int _getOrCreateIndex(
130 ::std::map<::Block const*, int>& indexMap,
134 MCAPI
void _placeEntitiesInWorld(
137 bool shouldReloadActorEquipment,
138 ::std::optional<::BoundingBox> overlapBB
141 MCAPI
void _placeNextBlockSegmentInWorld(
143 uint64 startPlacement,
154 float integrityValue,
158 bool ignoreJigsawBlocks
161 MCAPI
void fillFromWorld(
167 MCAPI ::std::vector<::JigsawStructureBlockInfo> getJigsawMarkers()
const;
169 MCAPI
bool const isWaterlogged(
::BlockPos const& pos)
const;
171 MCAPI ::StructureTemplate& operator=(::StructureTemplate&&);
173 MCAPI
bool operator==(::StructureTemplate
const& other)
const;
175 MCAPI
void optimizePalette(::std::string
const& paletteName);
177 MCAPI
void placeEntitiesInWorld(
184 MCAPI
void placeInWorld(
193 MCAPI
void placeNextSegmentInWorld(
198 MCAPI
bool setBlock(
::BlockPos const& pos,
::Block const* block,
bool waterlogged);
206 MCAPI static ::Block
const& _mapToRotation(
::Block const& curr, ::Rotation rotation);
208 MCAPI_C static ::std::vector<::std::unique_ptr<::LevelChunk>> constructTransformedLevelChunks(
215 MCAPI static ::Block
const* tryGetBlockAtPos(
225 MCAPI static ::BlockPos
const& INVALID_POSITION();
227 MCAPI
static int const& NO_BLOCK_INDEX_VALUE();
239 ::StructureTemplate
const& temp,
255 MCAPI ::std::unique_ptr<::CompoundTag> $save()
const;
262 MCAPI
void $fillEmpty(
::BlockPos const& size);
264 MCAPI ::NeighborAwareBlockUpdateType $shouldHandleUpgradeForBlock(
::Block const& block)
const;
268 MCAPI
bool $_allowReadActor(
::Actor const& actor)
const;
270 MCAPI ::BlockPos $rawSize()
const;
272 MCAPI ::br::worldgen::StructureTemplateBlockPalette $randomPalette(
::BlockPos randomPosSeed)
const;