55class ComponentItem :
public ::Item {
59 bool mExcludeUserDataDiffCheck : 1;
60 bool mCanDestroyInCreative : 1;
61 bool mRequiresInteract : 1;
62 bool mIsLiquidClipped : 1;
63 ::ll::TypedStorage<4, 4, float> mSpeed;
64 ::ll::TypedStorage<4, 4, int> mDamage;
65 ::ll::TypedStorage<4, 4, ::Enchant::Slot> mEnchantSlot;
66 ::ll::TypedStorage<4, 4, int> mEnchantValue;
67 ::ll::TypedStorage<8, 24, ::std::vector<::std::string>> mAlias;
68 ::ll::TypedStorage<1, 1, bool> mIsAttachable;
69 ::ll::TypedStorage<8, 16, ::std::map<::HashedString, ::std::shared_ptr<::ItemComponent>>> mItemComponents;
70 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::IconItemComponent>> mIcon;
71 ::ll::TypedStorage<8, 8, ::WeakPtr<::BlockType const>> mBlockTypeForRendering;
72 ::ll::TypedStorage<8, 16, ::std::map<::std::string, ::std::shared_ptr<::ItemComponent>>>
73 mRegisteredCerealComponents;
74 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::cereal::ReflectionCtx const>> mCtx;
84 virtual ~ComponentItem() ;
86 virtual ::PuvLoadData::LoadResultWithTiming
89 virtual void tearDown() ;
91 virtual bool isComponentBased()
const ;
93 virtual bool isHumanoidArmor()
const ;
95 virtual bool isBlockPlanterItem()
const ;
97 virtual bool isDamageable()
const ;
99 virtual bool isDyeable()
const ;
101 virtual bool isFood()
const ;
103 virtual bool isThrowable()
const ;
105 virtual bool isUseable()
const ;
107 virtual bool isMusicDisk()
const ;
109 virtual bool isTrimAllowed()
const ;
111 virtual ::WeakPtr<::BlockType const>
const& getBlockTypeForRendering()
const ;
113 virtual ::ItemComponent* getComponent(
::HashedString const&
id)
const ;
115 virtual ::IFoodItemComponent* getFood()
const ;
117 virtual ::Item& setMaxDamage(
int maxDamage) ;
119 virtual ::std::string
const& getDescriptionId()
const ;
121 virtual ::BlockShape getBlockShape()
const ;
123 virtual bool canBeDepleted()
const ;
125 virtual bool canDestroySpecial(
::Block const& block)
const ;
127 virtual int getLevelDataForAuxValue(
int)
const ;
129 virtual short getMaxDamage()
const ;
131 virtual int getAttackDamage()
const ;
135 virtual bool canDestroyInCreative()
const ;
137 virtual bool isDestructive(
int)
const ;
139 virtual bool isLiquidClipItem()
const ;
141 virtual bool requiresInteract()
const ;
143 virtual void appendFormattedHovertext(
147 bool const showCategory
150 virtual bool isValidRepairItem(
156 virtual int getEnchantSlot()
const ;
158 virtual int getEnchantValue()
const ;
160 virtual int getArmorValue()
const ;
162 virtual int getDamageChance(
int unbreaking)
const ;
164 virtual uint getSwingDuration()
const ;
166 virtual bool shouldEmitInUseGameEvents()
const ;
176 virtual ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> getAttackMissSound()
const ;
178 virtual ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> getAttackHitSound()
const ;
180 virtual ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> getAttackCriticalHitSound()
const ;
182 virtual ::SharedTypes::Legacy::LevelSoundEvent getEquipSound()
const ;
186 virtual bool canUseAsAttack()
const ;
191 virtual ::Actor* createProjectileActor(
195 ::Vec3 const& aimDirection
217 virtual ::std::string buildEffectDescriptionName(
::ItemStackBase const& stack,
bool playerIsCreative)
const
222 virtual ::HashedString
const& getCooldownCategory()
const ;
224 virtual int getCooldownDuration()
const ;
226 virtual ::SharedTypes::ItemCooldownType getCooldownType()
const ;
228 virtual ::SharedTypes::Legacy::ActorLocation getEquipLocation()
const ;
230 virtual bool useVariant(
int,
int,
bool)
const;
232 virtual int getVariant(
int,
int,
bool)
const;
234 virtual ::PuvLoadData::LoadResultWithTiming initClient(
237 ::JsonBetaState
const,
242 virtual ::std::string getInteractText(
::Player const& player)
const ;
244 virtual int getAnimationFrameFor(
::Mob*,
bool,
::ItemStack const*,
bool)
const ;
246 virtual bool isEmissive(
int auxValue)
const ;
248 virtual ::ResolvedItemIconInfo
249 getIconInfo(
::ItemStackBase const& item,
int newAnimationFrame,
bool inInventoryPane)
const ;
251 virtual ::Item& setIconInfo(::std::string
const& name,
int frame) ;
253 virtual bool canBeCharged()
const ;
255 virtual ::ComponentItem& setDescriptionId(::std::string
const& description) ;
257 virtual bool shouldUseJsonForRenderMatrix()
const;
259 virtual ::std::unique_ptr<::CompoundTag> buildNetworkTag()
const ;
261 virtual void initializeFromNetwork(
::CompoundTag const& tag) ;
263 virtual ::std::vector<::std::string> validateFromNetwork(
::CompoundTag const& tag) ;
272 virtual bool _shouldAutoCalculatePlacePos()
const ;
274 virtual ::InteractionResult
284 MCAPI
void _addRegisteredCerealComponent(
285 ::std::pair<::std::string
const, ::std::shared_ptr<::ItemComponent>>& cerealComponent
290 MCAPI ::std::unique_ptr<::ListTag> _buildItemTagsNetworkTag()
const;
292 MCAPI
bool _doesNotTakeDurabilityDamage()
const;
294 MCAPI
void _initializeLoadedComponents(
295 ::std::optional<::SemVersion> documentVersion,
296 ::std::optional<::Experiments> _experiments
299 MCAPI
void _loadComponentsFromNetworkTag(
300 ::std::string
const& componentName,
307 MCAPI
void _loadItemTagsNetworkTag(
::ListTag const& listTag);
309 MCAPI ::PuvLoadData::LoadResultWithTiming _validateSchemaAndInitItem(
312 ::JsonBetaState canUseBeta,
331 MCAPI static ::std::pair<bool, ::SemVersion> upgradeJson(
333 ::std::string& document,
335 ::std::optional<::SemVersion> minVersion
354 MCFOLD
void $tearDown();
356 MCFOLD
bool $isComponentBased()
const;
358 MCAPI
bool $isHumanoidArmor()
const;
360 MCAPI
bool $isBlockPlanterItem()
const;
362 MCAPI
bool $isDamageable()
const;
364 MCAPI
bool $isDyeable()
const;
366 MCFOLD
bool $isFood()
const;
368 MCAPI
bool $isThrowable()
const;
370 MCAPI
bool $isUseable()
const;
372 MCAPI
bool $isMusicDisk()
const;
374 MCAPI
bool $isTrimAllowed()
const;
376 MCAPI ::WeakPtr<::BlockType const>
const& $getBlockTypeForRendering()
const;
378 MCAPI ::ItemComponent* $getComponent(
::HashedString const&
id)
const;
380 MCAPI ::IFoodItemComponent* $getFood()
const;
382 MCAPI ::Item& $setMaxDamage(
int maxDamage);
384 MCAPI ::std::string
const& $getDescriptionId()
const;
386 MCFOLD ::BlockShape $getBlockShape()
const;
388 MCAPI
bool $canBeDepleted()
const;
390 MCAPI
bool $canDestroySpecial(
::Block const& block)
const;
392 MCFOLD
int $getLevelDataForAuxValue(
int)
const;
394 MCAPI
short $getMaxDamage()
const;
396 MCAPI
int $getAttackDamage()
const;
400 MCAPI
bool $canDestroyInCreative()
const;
402 MCFOLD
bool $isDestructive(
int)
const;
404 MCAPI
bool $isLiquidClipItem()
const;
406 MCAPI
bool $requiresInteract()
const;
408 MCAPI
void $appendFormattedHovertext(
412 bool const showCategory
415 MCAPI
bool $isValidRepairItem(
421 MCAPI
int $getEnchantSlot()
const;
423 MCFOLD
int $getEnchantValue()
const;
425 MCAPI
int $getArmorValue()
const;
427 MCAPI
int $getDamageChance(
int unbreaking)
const;
429 MCAPI uint $getSwingDuration()
const;
431 MCAPI
bool $shouldEmitInUseGameEvents()
const;
441 MCAPI ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> $getAttackMissSound()
const;
443 MCAPI ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> $getAttackHitSound()
const;
445 MCAPI ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> $getAttackCriticalHitSound()
const;
447 MCAPI ::SharedTypes::Legacy::LevelSoundEvent $getEquipSound()
const;
451 MCAPI
bool $canUseAsAttack()
const;
455 MCAPI ::Actor* $createProjectileActor(
459 ::Vec3 const& aimDirection
478 MCAPI ::std::string $buildEffectDescriptionName(
::ItemStackBase const& stack,
bool playerIsCreative)
const;
482 MCAPI ::HashedString
const& $getCooldownCategory()
const;
484 MCAPI
int $getCooldownDuration()
const;
486 MCAPI ::SharedTypes::ItemCooldownType $getCooldownType()
const;
489 MCAPI ::SharedTypes::Legacy::ActorLocation $getEquipLocation()
const;
492 MCFOLD
bool $useVariant(
int,
int,
bool)
const;
494 MCFOLD
int $getVariant(
int,
int,
bool)
const;
496 MCAPI ::std::string $getInteractText(
::Player const& player)
const;
498 MCFOLD
int $getAnimationFrameFor(
::Mob*,
bool,
::ItemStack const*,
bool)
const;
500 MCFOLD
bool $isEmissive(
int auxValue)
const;
502 MCAPI ::ResolvedItemIconInfo
503 $getIconInfo(
::ItemStackBase const& item,
int newAnimationFrame,
bool inInventoryPane)
const;
505 MCAPI ::Item& $setIconInfo(::std::string
const& name,
int frame);
507 MCAPI
bool $canBeCharged()
const;
509 MCAPI ::ComponentItem& $setDescriptionId(::std::string
const& description);
511 MCAPI
bool $shouldUseJsonForRenderMatrix()
const;
513 MCAPI ::std::unique_ptr<::CompoundTag> $buildNetworkTag()
const;
517 MCAPI ::std::vector<::std::string> $validateFromNetwork(
::CompoundTag const& tag);
524 MCAPI
bool $_shouldAutoCalculatePlacePos()
const;
526 MCAPI ::InteractionResult