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/world/level/chunk/ChunksLoadedStatus.h"
12#include "mc/world/level/chunk/QueueRequestResult.h"
13#include "mc/world/level/levelgen/structure/StructureDeleteResult.h"
14
15// auto generated forward declare list
16// clang-format off
17class BlockPos;
18class BoundingBox;
20class CommandArea;
21class CompoundTag;
22class Dimension;
25class Level;
26class LevelStorage;
27class PackInstance;
29class ServerLevel;
33struct Tick;
34namespace Core { class Path; }
35namespace SharedTypes::v1_21_80 { struct JigsawStructureMetadataFile; }
36namespace SharedTypes::v1_21_80 { struct JigsawStructureMetadataRegistry; }
37namespace cereal { struct ReflectionCtx; }
38// clang-format on
39
41public:
42 // member variables
43 // NOLINTBEGIN
44 ::ll::TypedStorage<8, 8, ::std::shared_mutex> mRepositoryMutex;
45 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::unique_ptr<::LegacyStructureTemplate>>>
46 mLegacyStructureRepository;
47 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::unique_ptr<::StructureTemplate>>>
48 mStructureRepository;
49 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::StructureAnimationData>>> mStructurePlacementQueue;
50 ::ll::TypedStorage<4, 4, uint> mStructurePlacementSaveCounter;
51 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::IUnknownBlockTypeRegistry>> mUnknownBlockRegistry;
52 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::ResourcePackManager> const> mPackManager;
53 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::SharedTypes::v1_21_80::JigsawStructureMetadataRegistry>>
54 mMetadataRegistry;
55 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::cereal::ReflectionCtx>> mCerealContext;
56 // NOLINTEND
57
58public:
59 // prevent constructor by default
61
62public:
63 // virtual functions
64 // NOLINTBEGIN
65 // vIndex: 0
66 virtual ~StructureManager() /*override*/;
67 // NOLINTEND
68
69public:
70 // member functions
71 // NOLINTBEGIN
72 MCNAPI explicit StructureManager(::ResourcePackManager& packManager);
73
74 MCNAPI ::StructureTemplate* _createAndLoadStructure(
75 ::std::string const& structureName,
76 ::ResourcePackManager const* packManager,
77 ::LevelStorage* levelStorage
78 );
79
80 MCNAPI ::std::string _createLevelStorageId(::std::string const& dimensionPrefix, ::std::string const& saveId);
81
82 MCNAPI bool _findResource(
84 ::PackInstance const& pack,
85 ::std::string& resourceStream
86 );
87
88 MCNAPI ::SharedTypes::v1_21_80::JigsawStructureMetadataRegistry& _getMetadataRegistry() const;
89
90 MCNAPI bool _placeSegment(::StructureAnimationData& structureAnimationData);
91
92 MCNAPI bool _placeSegment(
93 ::Dimension& dimension,
94 ::StructureAnimationData& structureAnimationData,
95 ::ChunkLoadActionList& chunkLoadActionList,
96 ::BoundingBox const& boundingBox,
97 ::std::function<::ChunksLoadedStatus(::Tick)> const& areChunksLoaded
98 );
99
100 MCNAPI ::LegacyStructureTemplate* _readLegacyStructure(::std::string const& name);
101
102 MCNAPI void
103 _removePlacementQueueItem(::std::string const& dimensionPrefix, ::StructureAnimationData& structureAnimationData);
104
105 MCNAPI void
106 _savePlacementQueueItem(::std::string const& dimensionPrefix, ::StructureAnimationData& structureAnimationData);
107
108 MCNAPI ::StructureTemplate&
109 cloneStructure(::StructureTemplate const& structureTemplate, ::std::string const& structureName);
110
111 MCNAPI ::StructureDeleteResult deleteStructure(::std::string const& structureName, ::LevelStorage& levelStorage);
112
113 MCNAPI ::StructureTemplate& getOrCreate(::std::string const& structureName);
114
115 MCNAPI ::LegacyStructureTemplate& getOrCreateLegacy(::std::string const& structureName);
116
117 MCNAPI ::StructureTemplate* getStructure(::std::string const& structureName) const;
118
119 MCNAPI ::std::vector<::std::string> getStructureNames(::LevelStorage& levelStorage, bool includeUnremovable) const;
120
121 MCNAPI void importStructureFromTemplate(::std::string name, ::StructureTemplate const& temp);
122
123 MCNAPI bool load(
124 ::StructureTemplate& structureTemplate,
125 ::ResourcePackManager const* packManager,
126 ::LevelStorage* levelStorage
127 );
128
129 MCNAPI bool loadLegacy(::LegacyStructureTemplate& structure, ::std::string& data);
130
132
133 MCNAPI void loadPlacementQueue(::LevelStorage& storage, ::Level& level, ::Dimension& dimension);
134
135 MCNAPI void
136 loadPlacementQueueItem(::std::string const& key, ::CompoundTag const& tag, ::Level& level, ::Dimension& dimension);
137
138 MCNAPI void queueLoad(::std::unique_ptr<::StructureAnimationData> structureAnimationData);
139
140 MCNAPI bool readStructure(::StructureTemplate& structureTemplate);
141
142 MCNAPI void saveToLevel(::StructureTemplate const& structureTemplate, ::LevelStorage& levelStorage);
143
145
146 MCNAPI void tick(::Dimension const& dimension);
147
148 MCNAPI ::QueueRequestResult tryPlaceStructureInWorld(
149 ::std::unique_ptr<::CommandArea> cmdArea,
150 ::ServerLevel& level,
151 ::Dimension& dimension,
152 ::BoundingBox const& bounds,
153 ::BlockPos const& loadPosition,
154 ::StructureSettings const& settings,
155 ::StructureTemplate const& structureTemplate,
156 ::std::unique_ptr<::StructureAnimationData> structureAnimationData
157 );
158 // NOLINTEND
159
160public:
161 // static functions
162 // NOLINTBEGIN
163 MCNAPI static ::std::unique_ptr<::SharedTypes::v1_21_80::JigsawStructureMetadataRegistry>
165
169 ::PackInstance const& pack,
170 ::std::string& fileData,
171 ::Core::Path const& filenameWithExtension
172 );
173
174 MCNAPI static ::Core::PathBuffer<::Core::BasicStackString<char, 1024>>
175 getStructurePath(::std::string const& structureFullName);
176
177 MCNAPI static ::Core::PathBuffer<::Core::BasicStackString<char, 1024>>
178 getStructurePath(::std::string const& structureNamespace, ::std::string const& structureName);
179 // NOLINTEND
180
181public:
182 // static variables
183 // NOLINTBEGIN
184 MCNAPI static char const*& BEHAVIOR_PACK_STRUCTURES_FOLDER();
185
186 MCNAPI static char const*& LEVEL_STORAGE_STRUCTURE_TEMPLATE_PREFIX();
187 // NOLINTEND
188
189public:
190 // constructor thunks
191 // NOLINTBEGIN
192 MCNAPI void* $ctor(::ResourcePackManager& packManager);
193 // NOLINTEND
194
195public:
196 // destructor thunk
197 // NOLINTBEGIN
198 MCNAPI void $dtor();
199 // NOLINTEND
200
201public:
202 // vftables
203 // NOLINTBEGIN
204 MCNAPI static void** $vftable();
205 // NOLINTEND
206};
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:238
Definition PackInstance.h:23
Definition Path.h:16
Definition Loader.h:8
Definition ResourcePackManager.h:23
Definition ServerLevel.h:54
Definition StructureAnimationData.h:17
Definition StructureManager.h:40
MCAPI::LegacyStructureTemplate * _readLegacyStructure(::std::string const &name)
static MCAPI ::Core::PathBuffer<::Core::BasicStackString< char, 1024 > > getStructurePath(::std::string const &structureNamespace, ::std::string const &structureName)
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()
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::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 loadMetadataRegistries(::ResourcePackManager &packManager)
MCAPI void _savePlacementQueueItem(::std::string const &dimensionPrefix, ::StructureAnimationData &structureAnimationData)
static MCAPI ::Core::PathBuffer<::Core::BasicStackString< char, 1024 > > getStructurePath(::std::string const &structureFullName)
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)
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)
MCAPI bool loadLegacy(::LegacyStructureTemplate &structure, ::std::string &data)
MCAPI void $dtor()
MCAPI::SharedTypes::v1_21_80::JigsawStructureMetadataRegistry & _getMetadataRegistry() const
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 StructureSettings.h:18
Definition StructureTemplate.h:32
Definition JigsawStructureMetadataRegistry.h:12
Definition Tick.h:5
Definition ReflectionCtx.h:11
Definition ctx.h:5