54class ComponentItem :
public ::Item {
58 bool mExcludeUserDataDiffCheck : 1;
59 bool mCanDestroyInCreative : 1;
60 bool mRequiresInteract : 1;
61 bool mIsLiquidClipped : 1;
62 ::ll::TypedStorage<4, 4, float> mSpeed;
63 ::ll::TypedStorage<4, 4, int> mDamage;
64 ::ll::TypedStorage<4, 4, ::Enchant::Slot> mEnchantSlot;
65 ::ll::TypedStorage<4, 4, int> mEnchantValue;
66 ::ll::TypedStorage<8, 24, ::std::vector<::std::string>> mAlias;
67 ::ll::TypedStorage<1, 1, bool> mIsAttachable;
68 ::ll::TypedStorage<8, 16, ::std::map<::HashedString, ::std::shared_ptr<::ItemComponent>>> mItemComponents;
69 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::IconItemComponent>> mIcon;
70 ::ll::TypedStorage<8, 8, ::WeakPtr<::BlockType const>> mBlockTypeForRendering;
71 ::ll::TypedStorage<8, 16, ::std::map<::std::string, ::std::shared_ptr<::ItemComponent>>>
72 mRegisteredCerealComponents;
73 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::cereal::ReflectionCtx const>> mCtx;
83 virtual ~ComponentItem() ;
85 virtual ::PuvLoadData::LoadResultWithTiming initServer(
91 virtual void tearDown() ;
93 virtual bool isComponentBased()
const ;
95 virtual bool isHumanoidArmor()
const ;
97 virtual bool isBlockPlanterItem()
const ;
99 virtual bool isDamageable()
const ;
101 virtual bool isDyeable()
const ;
103 virtual bool isFood()
const ;
105 virtual bool isThrowable()
const ;
107 virtual bool isUseable()
const ;
109 virtual bool isMusicDisk()
const ;
111 virtual bool isTrimAllowed()
const ;
113 virtual ::WeakPtr<::BlockType const>
const& getBlockTypeForRendering()
const ;
115 virtual ::ItemComponent* getComponent(
::HashedString const&
id)
const ;
117 virtual ::IFoodItemComponent* getFood()
const ;
119 virtual ::Item& setMaxDamage(
int maxDamage) ;
121 virtual ::std::string
const& getDescriptionId()
const ;
123 virtual ::BlockShape getBlockShape()
const ;
125 virtual bool canBeDepleted()
const ;
127 virtual bool canDestroySpecial(
::Block const& block)
const ;
129 virtual int getLevelDataForAuxValue(
int)
const ;
131 virtual short getMaxDamage()
const ;
133 virtual int getAttackDamage()
const ;
137 virtual bool canDestroyInCreative()
const ;
139 virtual bool isDestructive(
int)
const ;
141 virtual bool isLiquidClipItem()
const ;
143 virtual bool requiresInteract()
const ;
145 virtual void appendFormattedHovertext(
149 bool const showCategory
152 virtual bool isValidRepairItem(
158 virtual int getEnchantSlot()
const ;
160 virtual int getEnchantValue()
const ;
162 virtual int getArmorValue()
const ;
164 virtual int getDamageChance(
int unbreaking)
const ;
166 virtual uint getSwingDuration()
const ;
168 virtual bool shouldEmitInUseGameEvents()
const ;
178 virtual ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> getAttackMissSound()
const ;
180 virtual ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> getAttackHitSound()
const ;
182 virtual ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> getAttackCriticalHitSound()
const ;
184 virtual ::SharedTypes::Legacy::LevelSoundEvent getEquipSound()
const ;
188 virtual bool canUseAsAttack()
const ;
193 virtual ::Actor* createProjectileActor(
197 ::Vec3 const& aimDirection
217 virtual ::std::string
220 virtual ::std::string buildEffectDescriptionName(
::ItemStackBase const& stack,
bool playerIsCreative)
const
225 virtual ::HashedString
const& getCooldownCategory()
const ;
227 virtual int getCooldownDuration()
const ;
229 virtual ::SharedTypes::ItemCooldownType getCooldownType()
const ;
231 virtual ::SharedTypes::Legacy::ActorLocation getEquipLocation()
const ;
233 virtual bool useVariant(
int,
int,
bool)
const;
235 virtual int getVariant(
int,
int,
bool)
const;
237 virtual ::PuvLoadData::LoadResultWithTiming initClient(
244 virtual ::std::string getInteractText(
::Player const& player)
const ;
246 virtual int getAnimationFrameFor(
::Mob*,
bool,
::ItemStack const*,
bool)
const ;
248 virtual bool isEmissive(
int auxValue)
const ;
250 virtual ::ResolvedItemIconInfo
251 getIconInfo(
::ItemStackBase const& item,
int newAnimationFrame,
bool inInventoryPane)
const ;
253 virtual ::Item& setIconInfo(::std::string
const& name,
int frame) ;
255 virtual bool canBeCharged()
const ;
257 virtual ::ComponentItem& setDescriptionId(::std::string
const& descriptionId) ;
259 virtual bool shouldUseJsonForRenderMatrix()
const;
261 virtual ::std::unique_ptr<::CompoundTag> buildNetworkTag()
const ;
263 virtual void initializeFromNetwork(
::CompoundTag const& tag) ;
265 virtual ::std::vector<::std::string> validateFromNetwork(
::CompoundTag const& tag) ;
274 virtual bool _shouldAutoCalculatePlacePos()
const ;
276 virtual ::InteractionResult
286 MCAPI
void _addRegisteredCerealComponent(
287 ::std::pair<::std::string
const, ::std::shared_ptr<::ItemComponent>>& cerealComponent
292 MCAPI ::std::unique_ptr<::ListTag> _buildItemTagsNetworkTag()
const;
294 MCAPI
bool _doesNotTakeDurabilityDamage()
const;
296 MCAPI
void _initializeLoadedComponents(
297 ::std::optional<::SemVersion> documentVersion,
298 ::std::optional<::Experiments> _experiments
301 MCAPI
void _loadComponentsFromNetworkTag(
302 ::std::string
const& componentName,
309 MCAPI
void _loadItemTagsNetworkTag(
::ListTag const& listTag);
311 MCAPI ::PuvLoadData::LoadResultWithTiming _validateSchemaAndInitItem(
332 MCAPI static ::std::pair<bool, ::SemVersion> upgradeJson(
334 ::std::string& document,
337 ::std::optional<::SemVersion> minVersion
356 MCAPI ::PuvLoadData::LoadResultWithTiming
359 MCFOLD
void $tearDown();
361 MCFOLD
bool $isComponentBased()
const;
363 MCAPI
bool $isHumanoidArmor()
const;
365 MCAPI
bool $isBlockPlanterItem()
const;
367 MCAPI
bool $isDamageable()
const;
369 MCAPI
bool $isDyeable()
const;
371 MCFOLD
bool $isFood()
const;
373 MCAPI
bool $isThrowable()
const;
375 MCAPI
bool $isUseable()
const;
377 MCAPI
bool $isMusicDisk()
const;
379 MCAPI
bool $isTrimAllowed()
const;
381 MCAPI ::WeakPtr<::BlockType const>
const& $getBlockTypeForRendering()
const;
383 MCAPI ::ItemComponent* $getComponent(
::HashedString const&
id)
const;
385 MCAPI ::IFoodItemComponent* $getFood()
const;
387 MCAPI ::Item& $setMaxDamage(
int maxDamage);
389 MCAPI ::std::string
const& $getDescriptionId()
const;
391 MCFOLD ::BlockShape $getBlockShape()
const;
393 MCAPI
bool $canBeDepleted()
const;
395 MCAPI
bool $canDestroySpecial(
::Block const& block)
const;
397 MCFOLD
int $getLevelDataForAuxValue(
int)
const;
399 MCAPI
short $getMaxDamage()
const;
401 MCAPI
int $getAttackDamage()
const;
405 MCAPI
bool $canDestroyInCreative()
const;
407 MCFOLD
bool $isDestructive(
int)
const;
409 MCAPI
bool $isLiquidClipItem()
const;
411 MCAPI
bool $requiresInteract()
const;
413 MCAPI
void $appendFormattedHovertext(
417 bool const showCategory
420 MCAPI
bool $isValidRepairItem(
426 MCAPI
int $getEnchantSlot()
const;
428 MCFOLD
int $getEnchantValue()
const;
430 MCAPI
int $getArmorValue()
const;
432 MCAPI
int $getDamageChance(
int unbreaking)
const;
434 MCAPI uint $getSwingDuration()
const;
436 MCAPI
bool $shouldEmitInUseGameEvents()
const;
446 MCAPI ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> $getAttackMissSound()
const;
448 MCAPI ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> $getAttackHitSound()
const;
450 MCAPI ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> $getAttackCriticalHitSound()
const;
452 MCAPI ::SharedTypes::Legacy::LevelSoundEvent $getEquipSound()
const;
456 MCAPI
bool $canUseAsAttack()
const;
460 MCAPI ::Actor* $createProjectileActor(
464 ::Vec3 const& aimDirection
484 MCAPI ::std::string $buildEffectDescriptionName(
::ItemStackBase const& stack,
bool playerIsCreative)
const;
488 MCAPI ::HashedString
const& $getCooldownCategory()
const;
490 MCAPI
int $getCooldownDuration()
const;
492 MCAPI ::SharedTypes::ItemCooldownType $getCooldownType()
const;
494 MCAPI ::SharedTypes::Legacy::ActorLocation $getEquipLocation()
const;
496 MCFOLD
bool $useVariant(
int,
int,
bool)
const;
498 MCFOLD
int $getVariant(
int,
int,
bool)
const;
500 MCAPI ::PuvLoadData::LoadResultWithTiming $initClient(
507 MCAPI ::std::string $getInteractText(
::Player const& player)
const;
509 MCFOLD
int $getAnimationFrameFor(
::Mob*,
bool,
::ItemStack const*,
bool)
const;
511 MCFOLD
bool $isEmissive(
int auxValue)
const;
513 MCAPI ::ResolvedItemIconInfo
514 $getIconInfo(
::ItemStackBase const& item,
int newAnimationFrame,
bool inInventoryPane)
const;
516 MCAPI ::Item& $setIconInfo(::std::string
const& name,
int frame);
518 MCAPI
bool $canBeCharged()
const;
520 MCAPI ::ComponentItem& $setDescriptionId(::std::string
const& descriptionId);
522 MCAPI
bool $shouldUseJsonForRenderMatrix()
const;
524 MCAPI ::std::unique_ptr<::CompoundTag> $buildNetworkTag()
const;
528 MCAPI ::std::vector<::std::string> $validateFromNetwork(
::CompoundTag const& tag);
535 MCAPI
bool $_shouldAutoCalculatePlacePos()
const;
537 MCAPI ::InteractionResult