LeviLamina
Loading...
Searching...
No Matches
ItemRegistry.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/common/SharedPtr.h"
7#include "mc/common/WeakPtr.h"
8#include "mc/deps/core/string/HashedString.h"
9#include "mc/deps/core/utility/NonOwnerPointer.h"
10#include "mc/deps/core/utility/pub_sub/Publisher.h"
11#include "mc/deps/game_refs/WeakRef.h"
12#include "mc/deps/resource_processing/util/MinecraftDocumentInput.h"
13#include "mc/util/BaseGameVersion.h"
14#include "mc/world/item/Item.h"
15#include "mc/world/item/ItemTag.h"
16#include "mc/world/item/registry/ItemRegistryRef.h"
17
18// auto generated forward declare list
19// clang-format off
21class Block;
23class BlockType;
25class Experiments;
30class ItemRegistryRef;
31class LevelData;
33class PackLoadContext;
35class SemVersion;
36struct ItemData;
37struct ItemIconInfo;
38struct ItemParseContext;
40namespace Bedrock::PubSub::ThreadModel { struct MultiThreaded; }
41namespace Bedrock::Threading { class Mutex; }
42namespace Core { class Path; }
43namespace cereal { struct ReflectionCtx; }
44// clang-format on
45
46class ItemRegistry : public ::std::enable_shared_from_this<::ItemRegistry> {
47public:
48 // ItemRegistry inner types declare
49 // clang-format off
50 struct ItemAlias;
51 struct ItemHashAlias;
52 struct LoadedItemAsset;
53 struct ItemLoadResult;
54 struct ParsedName;
55 // clang-format on
56
57 // ItemRegistry inner types define
58 struct ItemAlias {
59 public:
60 // member variables
61 // NOLINTBEGIN
62 ::ll::TypedStorage<8, 48, ::HashedString> currentName;
63 ::ll::TypedStorage<8, 32, ::BaseGameVersion> sinceVersion;
64 // NOLINTEND
65
66 public:
67 // member functions
68 // NOLINTBEGIN
69 MCAPI ~ItemAlias();
70 // NOLINTEND
71
72 public:
73 // destructor thunk
74 // NOLINTBEGIN
75 MCAPI void $dtor();
76 // NOLINTEND
77 };
78
80 public:
81 // member variables
82 // NOLINTBEGIN
83 ::ll::TypedStorage<8, 8, uint64> aliasName;
84 ::ll::TypedStorage<8, 32, ::BaseGameVersion> sinceVersion;
85 // NOLINTEND
86 };
87
89 public:
90 // member variables
91 // NOLINTBEGIN
92 ::ll::TypedStorage<8, 272, ::Bedrock::Resources::MinecraftDocumentInput> mDocumentInput;
93 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::PackLoadContext>> mPackLoadContext;
94 ::ll::TypedStorage<8, 32, ::std::string> mLoadedPackName;
95 ::ll::TypedStorage<1, 1, bool> mIsComponentBased;
96 // NOLINTEND
97
98 public:
99 // member functions
100 // NOLINTBEGIN
101 MCAPI ~LoadedItemAsset();
102 // NOLINTEND
103
104 public:
105 // destructor thunk
106 // NOLINTBEGIN
107 MCFOLD void $dtor();
108 // NOLINTEND
109 };
110
112 public:
113 // member variables
114 // NOLINTBEGIN
115 ::ll::TypedStorage<8, 336, ::std::optional<::ItemRegistry::LoadedItemAsset>> mLoadedItemAsset;
116 ::ll::TypedStorage<8, 32, ::std::string> mError;
117 // NOLINTEND
118
119 public:
120 // member functions
121 // NOLINTBEGIN
122 MCAPI ~ItemLoadResult();
123 // NOLINTEND
124
125 public:
126 // destructor thunk
127 // NOLINTBEGIN
128 MCAPI void $dtor();
129 // NOLINTEND
130 };
131
132 struct ParsedName {
133 public:
134 // member variables
135 // NOLINTBEGIN
136 ::ll::TypedStorage<8, 16, ::std::string_view> mItemIdentifier;
137 ::ll::TypedStorage<8, 32, ::std::string> mParsedNamespace;
138 ::ll::TypedStorage<8, 32, ::std::string> mParsedName;
139 ::ll::TypedStorage<4, 4, int> mAux;
140 // NOLINTEND
141
142 public:
143 // member functions
144 // NOLINTBEGIN
145 MCAPI ~ParsedName();
146 // NOLINTEND
147
148 public:
149 // destructor thunk
150 // NOLINTBEGIN
151 MCFOLD void $dtor();
152 // NOLINTEND
153 };
154
155 using CreativeItemsServerInitCallbackSignature = void(
159 ::BaseGameVersion const&,
160 ::Experiments const&,
165 );
166
167public:
168 // member variables
169 // NOLINTBEGIN
170 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::cereal::ReflectionCtx>>> mCerealContext;
171 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::LinkedAssetValidator>> mValidator;
172 ::ll::TypedStorage<8, 24, ::std::vector<::SharedPtr<::Item>>> mItemRegistry;
173 ::ll::TypedStorage<8, 64, ::std::unordered_map<int, ::WeakPtr<::Item>>> mIdToItemMap;
174 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, ::WeakPtr<::Item>>> mNameToItemMap;
175 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, ::WeakPtr<::Item>>> mTileNamespaceToItemMap;
176 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, ::WeakPtr<::Item>>> mTileItemNameToItemMap;
177 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, ::ItemRegistry::ItemAlias>> mItemAliasLookupMap;
178 ::ll::TypedStorage<8, 64, ::std::unordered_map<uint64, ::ItemRegistry::ItemHashAlias>> mReverseAliasLookupMap;
179 ::ll::TypedStorage<8, 64, ::std::unordered_map<uint64, ::ItemRegistry::ItemHashAlias>>
180 mReverseFullNameAliasLookupMap;
181 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, ::ItemRegistryComplexAlias>> mComplexAliasLookupMap;
182 ::ll::TypedStorage<8, 64, ::std::unordered_map<short, ::HashedString>> mLegacyIDToNameMap;
183 ::ll::TypedStorage<2, 2, short> mMaxItemID;
184 ::ll::TypedStorage<8, 24, ::std::vector<::HashedString>> mAttachableDefinitions;
185 ::ll::TypedStorage<8, 64, ::std::unordered_map<::ItemTag, ::std::unordered_set<::Item const*>>> mTagToItemsMap;
186 ::ll::TypedStorage<8, 64, ::std::unordered_set<::Item const*> const> mEmptyItemSet;
187 ::ll::TypedStorage<1, 1, bool> mServerInitializingCreativeItems;
188 ::ll::TypedStorage<1, 1, bool> mIsInitialized;
189 ::ll::TypedStorage<8, 64, ::std::function<void(::ItemRegistryRef)>> mExtraItemInitCallback;
190 ::ll::TypedStorage<
191 8,
192 8,
194 mFinishedInitServerPublisher;
195 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::std::atomic<int>>> mCanUpdateTags;
196 ::ll::TypedStorage<8, 24, ::std::vector<::SharedPtr<::Item>>> mDeadItemRegistry;
197 ::ll::TypedStorage<8, 32, ::BaseGameVersion> mWorldBaseGameVersion;
198 ::ll::TypedStorage<1, 1, bool> mCheckForItemWorldCompatibility;
199 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::Bedrock::Threading::Mutex>> mCompatibilityCheckMutex;
200 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::CreativeItemRegistry>> mCreativeItemRegistry;
201 // NOLINTEND
202
203public:
204 // member functions
205 // NOLINTBEGIN
206 MCAPI ItemRegistry();
207
208 MCAPI void _initServerData(
209 ::std::vector<::ItemRegistry::LoadedItemAsset> const& allItemAssets,
210 ::ItemParseContext& parseContext,
211 ::IMinecraftEventing& eventing
212 );
213
214 MCAPI bool _shouldIgnoreEduItem(::std::string_view itemName);
215
216 MCAPI ::WeakPtr<::Item> _tryCreateItem(
217 ::ItemRegistry::ParsedName const& parsedName,
218 ::SemVersion const& documentVersion,
219 ::PackLoadContext const& packLoadContext,
220 bool componentBasedItem,
221 ::ItemParseContext& parseContext
222 );
223
224 MCAPI ::ItemRegistryRef::LoadedItem
225 _tryRegisterAndInitItem(::ItemRegistry::LoadedItemAsset const& loadedItemAsset, ::ItemParseContext& parseContext);
226
227 MCAPI void alterAvailableCreativeItems(::ActorInfoRegistry* registry, ::LevelData& levelData);
228
229 MCAPI void clearItemAndCreativeItemRegistry();
230
231#ifdef LL_PLAT_C
232 MCAPI void digestServerItemComponents(::std::vector<::ItemData> const& items);
233
234 MCAPI void findAllAttachableDefinitions();
235#endif
236
237 MCAPI void finishedRegistration();
238
239 MCAPI ::std::vector<::std::reference_wrapper<::HashedString const>> const&
240 getComplexAliasSplitNames(::HashedString const& oldName) const;
241
242 MCFOLD ::WeakPtr<::Item> getItem(::HashedString const& id);
243
244 MCAPI ::WeakPtr<::Item> getItem(short id);
245
246 MCAPI ::std::pair<::HashedString, int> getNameFromAlias(::HashedString const& name, int aux) const;
247
248#ifdef LL_PLAT_C
249 MCAPI void initClient(
250 ::std::vector<::ItemData> const& serverItemData,
251 ::Experiments const& experiments,
252 ::BaseGameVersion const& baseGameVersion
253 );
254
255 MCAPI void initClientData(
256 ::ResourcePackManager& resourcePackManager,
257 ::Experiments const& experiments,
258 ::std::optional<::ItemIconInfo> (*iconFactory)(::std::string const&, int)
259 );
260#endif
261
262 MCAPI void initCreativeItemsServer(
263 ::BlockDefinitionGroup const& blockDefinitionGroup,
264 ::Experiments const& experiments,
265 ::ResourcePackManager const& resourcePackManager,
267 ::IMinecraftEventing& eventing,
268 ::std::function<void(
272 ::BaseGameVersion const&,
273 ::Experiments const&,
278 )> registerCallback
279 );
280
281 MCAPI void initServer(
282 ::Experiments const& experiments,
283 ::BaseGameVersion const& baseGameVersion,
286 ::IMinecraftEventing& eventing
287 );
288
289 MCAPI bool isComplexAlias(::HashedString const& oldName) const;
290
291 MCAPI ::WeakPtr<::Item> lookupByName(::HashedString const& inString) const;
292
293 MCAPI ::WeakPtr<::Item> lookupByName(int& inOutItemAux, ::std::string_view inString) const;
294
295 MCAPI ::WeakPtr<::Item> lookupByName(int& outItemId, int& inOutItemAux, ::std::string_view inString) const;
296
297 MCAPI ::WeakPtr<::Item> lookupByNameNoAlias(::std::string_view inString) const;
298
299 MCAPI ::WeakPtr<::Item> lookupByNameNoParsing(int& inOutItemAux, ::HashedString const& fullName) const;
300
301 MCFOLD ::WeakPtr<::Item> lookupByVanillaName(::HashedString const& inString) const;
302
303#ifdef LL_PLAT_C
304 MCAPI void matchServerItemIds(::std::vector<::ItemData> const& serverItemData);
305#endif
306
307 MCAPI void onLevelInit(
308 ::WeakRef<::IDynamicContainerSerialization> containerSerialization,
311 );
312
313 MCAPI void
314 registerAlias(::HashedString const& alias, ::HashedString const& name, ::BaseGameVersion const& fromVersion);
315
316 MCAPI ::WeakPtr<::Item>
317 registerComplexAlias(::HashedString const& alias, ::ItemRegistryComplexAlias const& complexAlias);
318
319 MCAPI void registerItem(::SharedPtr<::Item> item);
320
321 MCAPI void registerLegacyID(::HashedString const& name, short id);
322
323 MCAPI void registerLegacyMapping(
324 ::HashedString const& alias,
325 ::HashedString const& name,
326 ::BaseGameVersion const& fromVersion
327 );
328
329 MCAPI void registerValidatorIdentifier(::std::string const& str);
330
331 MCAPI uint64 remapToFullLegacyNameByHash(uint64 newHash);
332
333 MCAPI uint64 remapToLegacyNameByHash(uint64 newHash);
334
335#ifdef LL_PLAT_C
336 MCAPI void setItemId(::HashedString const& itemName, short itemId, bool isComponentBased);
337#endif
338
339 MCAPI void shutdown();
340
341 MCAPI void unregisterItem(::HashedString const& itemName);
342
343 MCAPI ::std::vector<::std::string> validateServerItemComponents(::std::vector<::ItemData> const& items);
344
345 MCAPI ~ItemRegistry();
346 // NOLINTEND
347
348public:
349 // static functions
350 // NOLINTBEGIN
351 MCAPI static ::std::vector<::ItemRegistry::LoadedItemAsset> _loadAllItemAssets(
352 ::ResourcePackManager const& resourcePackManager,
353 ::Experiments const& experiments,
356 );
357
358 MCAPI static ::ItemRegistry::ItemLoadResult _tryLoadItemAsset(
359 ::std::string_view jsonData,
360 ::std::shared_ptr<::PackLoadContext> packLoadContext,
361 ::Core::Path const& filenameWithExtension,
363 ::std::string const& packName
364 );
365
366 MCAPI static ::ItemRegistry::ParsedName _tryParseItemName(
367 ::rapidjson::GenericValue<
368 ::rapidjson::UTF8<char>,
369 ::rapidjson::MemoryPoolAllocator<::rapidjson::CrtAllocator>> const& itemData
370 );
371
372 MCAPI static short getBlockItemId(::Block const& block);
373
374 MCAPI static short getBlockItemId(::BlockType const& block);
375 // NOLINTEND
376
377public:
378 // static variables
379 // NOLINTBEGIN
380 MCAPI static ::std::string_view const& MINECRAFT_NAMESPACE();
381 // NOLINTEND
382
383public:
384 // constructor thunks
385 // NOLINTBEGIN
386 MCAPI void* $ctor();
387 // NOLINTEND
388
389public:
390 // destructor thunk
391 // NOLINTBEGIN
392 MCAPI void $dtor();
393 // NOLINTEND
394};
Definition ActorInfoRegistry.h:10
Definition BaseGameVersion.h:13
Definition NonOwnerPointer.h:9
Definition Publisher.h:8
Definition Mutex.h:10
Definition BlockDefinitionGroup.h:39
Definition BlockType.h:84
Definition Block.h:69
Definition Path.h:12
Definition CreativeItemRegistry.h:23
Definition Experiments.h:14
Definition HashedString.h:5
Definition IContainerRegistryAccess.h:14
Definition IContainerRegistryTracker.h:15
Definition IDynamicContainerSerialization.h:12
Definition IMinecraftEventing.h:138
Definition ItemRegistryRef.h:42
Definition LevelData.h:55
Definition LinkedAssetValidator.h:8
Definition PackLoadContext.h:20
Definition ResourcePackManager.h:35
Definition SemVersion.h:15
Definition SharedPtr.h:10
Definition WeakRef.h:8
Definition ItemData.h:15
Definition ItemIconInfo.h:5
Definition ItemParseContext.h:13
Definition ItemRegistryComplexAlias.h:10
Definition ItemRegistry.h:58
Definition ItemRegistry.h:79
Definition ItemRegistry.h:111
Definition ItemRegistry.h:88
Definition ItemRegistry.h:132
Definition ReflectionCtx.h:11
Definition ctx.h:5