44class ItemRegistry :
public ::std::enable_shared_from_this<::ItemRegistry> {
59 ::ll::TypedStorage<8, 48, ::HashedString> currentName;
60 ::ll::TypedStorage<8, 32, ::BaseGameVersion> sinceVersion;
76 struct ItemHashAlias {
80 ::ll::TypedStorage<8, 8, uint64> aliasName;
81 ::ll::TypedStorage<8, 32, ::BaseGameVersion> sinceVersion;
86 ItemHashAlias& operator=(ItemHashAlias
const&);
87 ItemHashAlias(ItemHashAlias
const&);
97 MCAPI ~ItemHashAlias();
113 struct LoadedItemAsset {
117 ::ll::TypedStorage<8, 16, ::Json::Value> mUpgradedJsonRoot;
118 ::ll::TypedStorage<8, 24, ::SemVersion> mDocumentVersion;
119 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::IPackLoadContext>> mPackLoadContext;
120 ::ll::TypedStorage<8, 32, ::std::string> mLoadedPackName;
125 LoadedItemAsset& operator=(LoadedItemAsset
const&);
126 LoadedItemAsset(LoadedItemAsset
const&);
134 MCAPI ~LoadedItemAsset();
154 ::ll::TypedStorage<8, 96, ::std::optional<::ItemRegistry::LoadedItemAsset>> mLoadedItemAsset;
155 ::ll::TypedStorage<8, 32, ::std::string> mError;
171 using CreativeItemsServerInitCallbackSignature = void(
183 using ItemRegistryMap = ::std::vector<::SharedPtr<::Item>>;
188 ::ll::TypedStorage<8, 8, ::gsl::not_null<::std::unique_ptr<::cereal::ReflectionCtx>>> mCerealContext;
189 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::LinkedAssetValidator>> mValidator;
190 ::ll::TypedStorage<8, 24, ::std::vector<::SharedPtr<::Item>>> mItemRegistry;
191 ::ll::TypedStorage<8, 64, ::std::unordered_map<int, ::WeakPtr<::Item>>> mIdToItemMap;
192 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, ::WeakPtr<::Item>>> mNameToItemMap;
193 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, ::WeakPtr<::Item>>> mTileNamespaceToItemMap;
194 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, ::WeakPtr<::Item>>> mTileItemNameToItemMap;
195 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, ::ItemRegistry::ItemAlias>> mItemAliasLookupMap;
196 ::ll::TypedStorage<8, 64, ::std::unordered_map<uint64, ::ItemRegistry::ItemHashAlias>> mReverseAliasLookupMap;
197 ::ll::TypedStorage<8, 64, ::std::unordered_map<uint64, ::ItemRegistry::ItemHashAlias>>
198 mReverseFullNameAliasLookupMap;
199 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, ::ItemRegistryComplexAlias>> mComplexAliasLookupMap;
200 ::ll::TypedStorage<8, 64, ::std::unordered_map<short, ::HashedString>> mLegacyIDToNameMap;
201 ::ll::TypedStorage<2, 2, short> mMaxItemID;
202 ::ll::TypedStorage<8, 24, ::std::vector<::HashedString>> mAttachableDefinitions;
203 ::ll::TypedStorage<8, 64, ::std::unordered_map<::ItemTag, ::std::unordered_set<::Item const*>>> mTagToItemsMap;
204 ::ll::TypedStorage<8, 64, ::std::unordered_set<::Item const*>
const> mEmptyItemSet;
205 ::ll::TypedStorage<1, 1, bool> mServerInitializingCreativeItems;
206 ::ll::TypedStorage<1, 1, bool> mIsInitialized;
207 ::ll::TypedStorage<8, 64, ::std::function<void(
::ItemRegistryRef)>> mExtraItemInitCallback;
212 mFinishedInitServerPublisher;
213 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::std::atomic<int>>> mCanUpdateTags;
214 ::ll::TypedStorage<8, 24, ::std::vector<::SharedPtr<::Item>>> mDeadItemRegistry;
215 ::ll::TypedStorage<8, 32, ::BaseGameVersion> mWorldBaseGameVersion;
216 ::ll::TypedStorage<1, 1, bool> mCheckForItemWorldCompatibility;
217 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::Bedrock::Threading::Mutex>> mCompatibilityCheckMutex;
218 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::CreativeItemRegistry>> mCreativeItemRegistry;
224 MCAPI ItemRegistry();
226 MCAPI
void _initServerData(
227 ::std::vector<::ItemRegistry::LoadedItemAsset>
const& allItemAssets,
232 MCAPI ::PuvLoadData::LoadResultWithTiming
235 MCAPI
void addItemToTagMap(
::Item const& item);
239 MCAPI
void clearItemAndCreativeItemRegistry();
241 MCAPI_C
void digestServerItemComponents(::std::vector<::ItemData>
const& items);
243 MCAPI_C
void findAllAttachableDefinitions();
245 MCAPI
void finishedRegistration();
247 MCAPI ::std::vector<::std::reference_wrapper<::HashedString const>>
const&
250 MCAPI ::WeakPtr<::Item> getItem(
short id);
252 MCAPI ::std::pair<::HashedString, int> getNameFromAlias(
::HashedString const& name,
int aux)
const;
254 MCAPI ::HashedString getNameFromLegacyID(
short id);
256 MCAPI_C
void initClient(
257 ::std::vector<::ItemData>
const& serverItemData,
262 MCAPI_C
void initClientData(
268 MCAPI
void initCreativeItemsServer(
274 ::std::function<
void(
287 MCAPI
void initServer(
295 MCAPI ::WeakPtr<::Item> lookupByName(
int& inOutItemAux, ::std::string_view inString)
const;
297 MCAPI ::WeakPtr<::Item> lookupByNameNoAlias(::std::string_view inString)
const;
299 MCAPI ::WeakPtr<::Item> lookupByNameNoParsing(
int& inOutItemAux,
::HashedString const& fullName)
const;
301 MCAPI_C
void matchServerItemIds(::std::vector<::ItemData>
const& serverItemData);
303 MCAPI
void onLevelInit(
312 MCAPI ::WeakPtr<::Item>
317 MCAPI
void registerLegacyID(
::HashedString const& name,
short id);
319 MCAPI
void registerLegacyMapping(
325 MCAPI
void registerValidatorIdentifier(::std::string
const& str);
327 MCAPI
void setCheckForItemWorldCompatibility(
bool value);
329 MCAPI_C
void setItemId(
::HashedString const& itemName,
short itemId,
bool isComponentBased);
333 MCAPI ::std::vector<::std::string> validateServerItemComponents(::std::vector<::ItemData>
const& items);
335 MCAPI ~ItemRegistry();
341 MCAPI static ::std::vector<::ItemRegistry::LoadedItemAsset> _loadAllItemAssets(
348 MCAPI static ::ItemRegistry::ItemLoadResult _tryLoadItemAsset(
349 ::std::string jsonData,
350 ::std::shared_ptr<::IPackLoadContext> packLoadContext,
353 ::std::string
const& packName
360 MCAPI static ::std::string_view
const& MINECRAFT_NAMESPACE();
Definition IPackLoadContext.h:20
Definition ItemParseContext.h:19