LeviLamina
Loading...
Searching...
No Matches
StructureManager.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/file/PathBuffer.h"
7#include "mc/deps/core/string/BasicStackString.h"
8#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
9#include "mc/deps/core/utility/NonOwnerPointer.h"
10#include "mc/deps/puv/Loader.h"
11#include "mc/platform/threading/Mutex.h"
12#include "mc/world/level/chunk/ChunksLoadedStatus.h"
13#include "mc/world/level/chunk/QueueRequestResult.h"
14#include "mc/world/level/levelgen/structure/StructureDeleteResult.h"
15
16// auto generated forward declare list
17// clang-format off
18class BlockPos;
19class BoundingBox;
21class CommandArea;
22class CompoundTag;
23class Dimension;
26class Level;
27class LevelStorage;
28class PackInstance;
30class ServerLevel;
35struct Tick;
36namespace Core { class Path; }
37namespace SharedTypes::v1_21_80 { struct JigsawStructureMetadata; }
38namespace SharedTypes::v1_21_80 { struct JigsawStructureMetadataFile; }
39namespace SharedTypes::v1_21_80 { struct JigsawStructureMetadataRegistry; }
40namespace cereal { struct ReflectionCtx; }
41// clang-format on
42
44public:
45 // member variables
46 // NOLINTBEGIN
47 ::ll::TypedStorage<8, 8, ::std::shared_mutex> mRepositoryMutex;
48 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::unique_ptr<::LegacyStructureTemplate>>>
49 mLegacyStructureRepository;
50 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::unique_ptr<::StructureTemplate>>>
51 mStructureRepository;
52 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::StructureAnimationData>>> mStructurePlacementQueue;
53 ::ll::TypedStorage<4, 4, uint> mStructurePlacementSaveCounter;
54 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry>> mUnknownBlockRegistry;
55 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::ResourcePackManager> const> mPackManager;
56 ::ll::TypedStorage<
57 8,
58 64,
59 ::std::unordered_map<uint64, ::std::shared_ptr<::SharedTypes::v1_21_80::JigsawStructureMetadata>>>
60 mMetadataRegistry;
61 ::ll::TypedStorage<8, 80, ::Bedrock::Threading::Mutex> mMetadataRegistryMutex;
62 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::cereal::ReflectionCtx>> mCerealContext;
63 // NOLINTEND
64
65public:
66 // prevent constructor by default
68
69public:
70 // virtual functions
71 // NOLINTBEGIN
72 // vIndex: 0
73 virtual ~StructureManager() /*override*/;
74 // NOLINTEND
75
76public:
77 // member functions
78 // NOLINTBEGIN
79 MCNAPI explicit StructureManager(::ResourcePackManager& packManager);
80
81 MCNAPI ::StructureTemplate* _createAndLoadStructure(
82 ::std::string const& structureName,
83 ::ResourcePackManager const* packManager,
84 ::LevelStorage* levelStorage
85 );
86
87 MCNAPI ::std::string _createLevelStorageId(::std::string const& dimensionPrefix, ::std::string const& saveId);
88
89 MCNAPI bool _findResource(
91 ::PackInstance const& pack,
92 ::std::string& resourceStream
93 );
94
95 MCNAPI bool _findResource(
96 ::std::string_view structureNamespace,
99 ::PackInstance const& pack,
100 ::std::string& resourceStream
101 );
102
103 MCNAPI bool _placeSegment(::StructureAnimationData& structureAnimationData);
104
105 MCNAPI bool _placeSegment(
106 ::Dimension& dimension,
107 ::StructureAnimationData& structureAnimationData,
108 ::ChunkLoadActionList& chunkLoadActionList,
109 ::BoundingBox const& boundingBox,
110 ::std::function<::ChunksLoadedStatus(::Tick)> const& areChunksLoaded
111 );
112
113 MCNAPI ::LegacyStructureTemplate* _readLegacyStructure(::std::string const& name);
114
115 MCNAPI void
116 _removePlacementQueueItem(::std::string const& dimensionPrefix, ::StructureAnimationData& structureAnimationData);
117
118 MCNAPI void
119 _savePlacementQueueItem(::std::string const& dimensionPrefix, ::StructureAnimationData& structureAnimationData);
120
121 MCNAPI ::StructureTemplate&
122 cloneStructure(::StructureTemplate const& structureTemplate, ::std::string const& structureName);
123
124 MCNAPI ::StructureDeleteResult deleteStructure(::std::string const& structureName, ::LevelStorage& levelStorage);
125
126 MCNAPI ::StructureTemplate& getOrCreate(::std::string const& structureName);
127
128 MCNAPI ::std::shared_ptr<::SharedTypes::v1_21_80::JigsawStructureMetadata>
130
131 MCNAPI ::LegacyStructureTemplate& getOrCreateLegacy(::std::string const& structureName);
132
133 MCNAPI ::StructureTemplate* getStructure(::std::string const& structureName) const;
134
135 MCNAPI ::std::vector<::std::string> getStructureNames(::LevelStorage& levelStorage, bool includeUnremovable) const;
136
137 MCNAPI void importStructureFromTemplate(::std::string name, ::StructureTemplate const& temp);
138
139 MCNAPI bool load(
140 ::StructureTemplate& structureTemplate,
141 ::ResourcePackManager const* packManager,
142 ::LevelStorage* levelStorage
143 );
144
145 MCNAPI bool loadLegacy(::LegacyStructureTemplate& structure, ::std::string& data);
146
148
149 MCNAPI void loadPlacementQueue(::LevelStorage& storage, ::Level& level, ::Dimension& dimension);
150
151 MCNAPI void
152 loadPlacementQueueItem(::std::string const& key, ::CompoundTag const& tag, ::Level& level, ::Dimension& dimension);
153
154 MCNAPI void queueLoad(::std::unique_ptr<::StructureAnimationData> structureAnimationData);
155
156 MCNAPI bool readStructure(::StructureTemplate& structureTemplate);
157
158 MCNAPI void saveToLevel(::StructureTemplate const& structureTemplate, ::LevelStorage& levelStorage);
159
161
162 MCNAPI void tick(::Dimension const& dimension);
163
164 MCNAPI ::QueueRequestResult tryPlaceStructureInWorld(
165 ::std::unique_ptr<::CommandArea> cmdArea,
166 ::ServerLevel& level,
167 ::Dimension& dimension,
168 ::BoundingBox const& bounds,
169 ::BlockPos const& loadPosition,
170 ::StructureSettings const& settings,
171 ::StructureTemplate const& structureTemplate,
172 ::std::unique_ptr<::StructureAnimationData> structureAnimationData
173 );
174 // NOLINTEND
175
176public:
177 // static functions
178 // NOLINTBEGIN
179 MCNAPI static ::std::unique_ptr<::SharedTypes::v1_21_80::JigsawStructureMetadataRegistry>
181
185 ::PackInstance const& pack,
186 ::std::string& fileData,
187 ::Core::Path const& filenameWithExtension
188 );
189
190 MCNAPI static ::Core::PathBuffer<::Core::BasicStackString<char, 1024>>
191 getStructurePath(::std::string_view structureNamespace, ::std::string_view structureName);
192 // NOLINTEND
193
194public:
195 // static variables
196 // NOLINTBEGIN
197 MCNAPI static char const*& BEHAVIOR_PACK_STRUCTURES_FOLDER();
198
199 MCNAPI static char const*& LEVEL_STORAGE_STRUCTURE_TEMPLATE_PREFIX();
200 // NOLINTEND
201
202public:
203 // constructor thunks
204 // NOLINTBEGIN
205 MCNAPI void* $ctor(::ResourcePackManager& packManager);
206 // NOLINTEND
207
208public:
209 // destructor thunk
210 // NOLINTBEGIN
211 MCNAPI void $dtor();
212 // NOLINTEND
213
214public:
215 // vftables
216 // NOLINTBEGIN
217 MCNAPI static void** $vftable();
218 // NOLINTEND
219};
Definition EnableNonOwnerReferences.h:7
Definition NonOwnerPointer.h:9
Definition BlockPos.h:18
Definition BoundingBox.h:13
Definition ChunkLoadActionList.h:21
Definition CommandArea.h:5
Definition CompoundTag.h:13
Definition BasicStackString.h:8
Definition PathBuffer.h:8
Definition Path.h:17
Definition Dimension.h:83
Definition IUnknownBlockTypeRegistry.h:14
Definition LegacyStructureTemplate.h:24
Definition LevelStorage.h:25
Definition Level.h:239
Definition PackInstance.h:23
Definition Path.h:16
Definition Loader.h:8
Definition ResourcePackManager.h:24
Definition ServerLevel.h:54
Definition StructureAnimationData.h:17
Definition StructureManager.h:43
MCAPI::LegacyStructureTemplate * _readLegacyStructure(::std::string const &name)
static MCAPI void _metadataPackForEachCallback(::SharedTypes::v1_21_80::JigsawStructureMetadataRegistry &registry, ::Puv::Loader<::SharedTypes::v1_21_80::JigsawStructureMetadataFile > &loader, ::PackInstance const &pack, ::std::string &fileData, ::Core::Path const &filenameWithExtension)
MCAPI bool load(::StructureTemplate &structureTemplate, ::ResourcePackManager const *packManager, ::LevelStorage *levelStorage)
MCAPI::LegacyStructureTemplate & getOrCreateLegacy(::std::string const &structureName)
MCAPI bool _findResource(::Core::PathBuffer<::Core::BasicStackString< char, 1024 > > const &structurePath, ::PackInstance const &pack, ::std::string &resourceStream)
MCAPI::StructureTemplate & cloneStructure(::StructureTemplate const &structureTemplate, ::std::string const &structureName)
static MCAPI char const *& BEHAVIOR_PACK_STRUCTURES_FOLDER()
MCAPI bool _findResource(::std::string_view structureNamespace, ::Core::PathBuffer<::Core::BasicStackString< char, 1024 > > const &structurePath, ::Core::PathBuffer<::Core::BasicStackString< char, 1024 > > const &rootStructurePath, ::PackInstance const &pack, ::std::string &resourceStream)
static MCAPI ::std::unique_ptr<::SharedTypes::v1_21_80::JigsawStructureMetadataRegistry > _loadMetadataRegistries(::cereal::ReflectionCtx const &ctx, ::ResourcePackManager &packManager, bool excludeLatest)
MCAPI bool _placeSegment(::StructureAnimationData &structureAnimationData)
MCAPI bool _placeSegment(::Dimension &dimension, ::StructureAnimationData &structureAnimationData, ::ChunkLoadActionList &chunkLoadActionList, ::BoundingBox const &boundingBox, ::std::function<::ChunksLoadedStatus(::Tick)> const &areChunksLoaded)
MCAPI void loadMetadataRegistries()
MCAPI::StructureTemplate * getStructure(::std::string const &structureName) const
MCAPI void importStructureFromTemplate(::std::string name, ::StructureTemplate const &temp)
MCAPI::StructureTemplate & getOrCreate(::std::string const &structureName)
MCAPI::StructureTemplate * _createAndLoadStructure(::std::string const &structureName, ::ResourcePackManager const *packManager, ::LevelStorage *levelStorage)
MCAPI void setUnknownBlockRegistry(::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry > unknownBlockRegistry)
MCAPI StructureManager(::ResourcePackManager &packManager)
MCAPI void * $ctor(::ResourcePackManager &packManager)
MCAPI void tick(::Dimension const &dimension)
MCAPI::StructureDeleteResult deleteStructure(::std::string const &structureName, ::LevelStorage &levelStorage)
MCAPI void _savePlacementQueueItem(::std::string const &dimensionPrefix, ::StructureAnimationData &structureAnimationData)
MCAPI::QueueRequestResult tryPlaceStructureInWorld(::std::unique_ptr<::CommandArea > cmdArea, ::ServerLevel &level, ::Dimension &dimension, ::BoundingBox const &bounds, ::BlockPos const &loadPosition, ::StructureSettings const &settings, ::StructureTemplate const &structureTemplate, ::std::unique_ptr<::StructureAnimationData > structureAnimationData)
MCAPI::std::string _createLevelStorageId(::std::string const &dimensionPrefix, ::std::string const &saveId)
MCAPI ::std::shared_ptr<::SharedTypes::v1_21_80::JigsawStructureMetadata > getOrCreateJigsawStructureMetadata(::StructurePoolElement const &structurePoolElement)
static MCAPI char const *& LEVEL_STORAGE_STRUCTURE_TEMPLATE_PREFIX()
MCAPI void _removePlacementQueueItem(::std::string const &dimensionPrefix, ::StructureAnimationData &structureAnimationData)
MCAPI void loadPlacementQueueItem(::std::string const &key, ::CompoundTag const &tag, ::Level &level, ::Dimension &dimension)
MCAPI bool readStructure(::StructureTemplate &structureTemplate)
static MCAPI ::Core::PathBuffer<::Core::BasicStackString< char, 1024 > > getStructurePath(::std::string_view structureNamespace, ::std::string_view structureName)
MCAPI bool loadLegacy(::LegacyStructureTemplate &structure, ::std::string &data)
MCAPI void $dtor()
MCAPI void saveToLevel(::StructureTemplate const &structureTemplate, ::LevelStorage &levelStorage)
MCAPI void loadPlacementQueue(::LevelStorage &storage, ::Level &level, ::Dimension &dimension)
MCAPI void queueLoad(::std::unique_ptr<::StructureAnimationData > structureAnimationData)
MCAPI ::std::vector<::std::string > getStructureNames(::LevelStorage &levelStorage, bool includeUnremovable) const
static MCAPI void ** $vftable()
Definition StructurePoolElement.h:37
Definition StructureSettings.h:18
Definition StructureTemplate.h:32
Definition JigsawStructureMetadataRegistry.h:12
Definition Tick.h:5
Definition ReflectionCtx.h:11
Definition ctx.h:5