Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
Item.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/string/HashedString.h"
7#include "mc/deps/shared_types/item/CreativeItemCategory.h"
8#include "mc/deps/shared_types/item/ItemCooldownType.h"
9#include "mc/deps/shared_types/legacy/LevelSoundEvent.h"
10#include "mc/deps/shared_types/legacy/actor/ActorLocation.h"
11#include "mc/deps/shared_types/legacy/item/UseAnimation.h"
12#include "mc/gameplayhandlers/CoordinatorResult.h"
13#include "mc/util/BaseGameVersion.h"
14#include "mc/world/interactions/mining/MineBlockItemEffectType.h"
15#include "mc/world/item/HandSlot.h"
16#include "mc/world/item/InHandUpdateType.h"
17#include "mc/world/item/ItemAcquisitionMethod.h"
18#include "mc/world/item/ItemColor.h"
19#include "mc/world/item/ItemCommandVisibility.h"
20#include "mc/world/item/ItemTransformType.h"
21#include "mc/world/item/ItemUseMethod.h"
22#include "mc/world/item/Rarity.h"
23#include "mc/world/item/registry/ItemVersion.h"
24#include "mc/world/level/block/BlockShape.h"
25
26// auto generated forward declare list
27// clang-format off
28class Actor;
29class Block;
30class BlockPos;
31class BlockSource;
32class BlockType;
34class CompoundTag;
35class Container;
36class Experiments;
38class IDataInput;
39class IDataOutput;
41class ILevel;
43class ItemComponent;
44class ItemDescriptor;
45class ItemInstance;
46class ItemStack;
47class ItemStackBase;
48class Level;
49class Matrix;
50class Mob;
51class Player;
53class RenderParams;
55class SemVersion;
57class Vec3;
59struct Brightness;
60struct CommandName;
61struct ItemIconInfo;
62struct ItemTag;
63struct ItemTintStrategy;
68namespace Bedrock::Safety { class RedactableString; }
69namespace SharedTypes::v1_26_50 { struct ItemDocument; }
70namespace mce { class Color; }
71// clang-format on
72
73class Item {
74public:
75 // Item inner types define
76 enum class OffhandAllowed : uchar {
77 Default = 0,
78 Yes = 1,
79 No = 2,
80 };
81
82public:
83 // member variables
84 // NOLINTBEGIN
85 ::ll::TypedStorage<4, 4, ::ItemVersion> mItemParseVersion;
86 ::ll::TypedStorage<8, 32, ::std::string> mTextureAtlasFile;
87 ::ll::TypedStorage<4, 4, int> mFrameCount;
88 ::ll::TypedStorage<1, 1, bool> mAnimatesInToolbar;
89 ::ll::TypedStorage<1, 1, bool> mIsMirroredArt;
90 ::ll::TypedStorage<1, 1, ::SharedTypes::Legacy::UseAnimation> mUseAnim;
91 ::ll::TypedStorage<8, 32, ::std::string> mHoverTextColorFormat;
92 ::ll::TypedStorage<4, 4, int> mIconFrame;
93 ::ll::TypedStorage<4, 4, int> mAtlasFrame;
94 ::ll::TypedStorage<4, 4, int> mAtlasTotalFrames;
95 ::ll::TypedStorage<8, 32, ::std::string> mIconName;
96 ::ll::TypedStorage<8, 32, ::std::string> mAtlasName;
97 ::ll::TypedStorage<1, 1, uchar> mMaxStackSize;
98 ::ll::TypedStorage<2, 2, short> mId;
99 ::ll::TypedStorage<8, 32, ::std::string> mDescriptionId;
100 ::ll::TypedStorage<8, 48, ::HashedString> mRawNameId;
101 ::ll::TypedStorage<8, 32, ::std::string> mNamespace;
102 ::ll::TypedStorage<8, 48, ::HashedString> mFullName;
103 ::ll::TypedStorage<2, 2, short> mMaxDamage;
104 bool mIsGlint : 1;
105 bool mHandEquipped : 1;
106 bool mIsStackedByData : 1;
107 bool mRequiresWorldBuilder : 1;
108 bool mExplodable : 1;
109 bool mFireResistant : 1;
110 bool mShouldDespawn : 1;
111 bool mIgnoresPermissions : 1;
112 ::ll::TypedStorage<4, 4, int> mMaxUseDuration;
113 ::ll::TypedStorage<8, 32, ::BaseGameVersion> mMinRequiredBaseGameVersion;
114 ::ll::TypedStorage<8, 8, ::BlockType const*> mBlockType;
115 ::ll::TypedStorage<1, 1, ::SharedTypes::CreativeItemCategory> mCreativeCategory;
116 ::ll::TypedStorage<8, 8, ::Item*> mCraftingRemainingItem;
117 ::ll::TypedStorage<8, 32, ::std::string> mCreativeGroup;
118 ::ll::TypedStorage<4, 4, float> mFurnaceBurnIntervalModifier;
119 ::ll::TypedStorage<4, 4, float> mFurnaceXPmultiplier;
120 ::ll::TypedStorage<1, 1, ::ItemCommandVisibility> mIsHiddenInCommands;
121 ::ll::TypedStorage<4, 4, ::Rarity> mBaseRarity;
122 ::ll::TypedStorage<4, 4, ::Interactions::Mining::MineBlockItemEffectType> mMineBlockType;
123 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::FoodItemComponentLegacy>> mFoodComponentLegacy;
124 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::SeedItemComponentLegacy>> mSeedComponent;
125 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::CameraItemComponentLegacy>> mCameraComponentLegacy;
126 ::ll::TypedStorage<8, 24, ::std::vector<::std::function<void()>>> mOnResetBAICallbacks;
127 ::ll::TypedStorage<8, 24, ::std::vector<::ItemTag>> mTags;
128 ::Item::OffhandAllowed mAllowOffhand : 2;
129 // NOLINTEND
130
131public:
132 // prevent constructor by default
133 Item();
134
135public:
136 // virtual functions
137 // NOLINTBEGIN
138 virtual ~Item();
139
140 virtual void initServer(
142 ::SemVersion const& documentVersion,
143 ::Experiments const& experiments,
144 ::std::optional<::LegacyEventItemComponentData> legacyEventData
145 );
146
147 virtual void tearDown();
148
149 virtual ::Item& setDescriptionId(::std::string const& description);
150
151 virtual ::std::string const& getDescriptionId() const;
152
153 virtual int getMaxUseDuration(::ItemStack const* instance) const;
154
155 virtual ::BlockType const* getBlockTypeForRendering() const;
156
157 virtual bool isMusicDisk() const;
158
159 virtual void
160 executeEvent(::ItemStackBase& item, ::std::string const& name, ::HandSlot handSlot, ::RenderParams& params) const;
161
162 virtual bool isComponentBased() const;
163
164 virtual bool isHumanoidArmor() const;
165
166 virtual bool isBlockPlanterItem() const;
167
168 virtual bool isBucket() const;
169
170 virtual bool isCandle() const;
171
172 virtual bool isDamageable() const;
173
174 virtual bool isDyeable() const;
175
176 virtual bool isDye() const;
177
178 virtual ::ItemColor getItemColor() const;
179
180 virtual bool isFertilizer() const;
181
182 virtual bool isFood() const;
183
184 virtual bool isThrowable() const;
185
186 virtual bool isUseable() const;
187
188 virtual bool isTrimAllowed() const;
189
190 virtual bool isBodyArmor() const;
191
192 virtual ::ItemComponent* getComponent(::HashedString const& id) const;
193
194 virtual ::IFoodItemComponent* getFood() const;
195
196 virtual ::Item& setMaxDamage(int maxDamage);
197
198 virtual ::Item& setMaxUseDuration(int maxUseDuration);
199
200 virtual ::std::unique_ptr<::CompoundTag> buildNetworkTag() const;
201
202 virtual void initializeFromNetwork(::CompoundTag const& tag);
203
204 virtual ::std::vector<::std::string> validateFromNetwork(::CompoundTag const& tag);
205
206 virtual ::BlockShape getBlockShape() const;
207
208 virtual bool canBeDepleted() const;
209
210 virtual bool canDestroySpecial(::Block const& block) const;
211
212 virtual int getLevelDataForAuxValue(int auxValue) const;
213
214 virtual bool isStackedByData() const;
215
216 virtual short getMaxDamage() const;
217
218 virtual int getAttackDamage() const;
219
220 virtual float getAttackDamageBonus(::Actor const& attacker) const;
221
222 virtual bool isHandEquipped() const;
223
224 virtual bool isGlint(::ItemStackBase const& stack) const;
225
226 virtual bool isPattern() const;
227
228 virtual int getPatternIndex() const;
229
230 virtual ::Rarity getBaseRarity() const;
231
232 virtual ::Rarity getRarity(::ItemStackBase const& stack) const;
233
234 virtual uint getSwingDuration() const;
235
236 virtual bool showsDurabilityInCreative() const;
237
238 virtual bool isWearableThroughLootTable(::CompoundTag const* userData) const;
239
240 virtual bool canDestroyInCreative() const;
241
242 virtual bool isDestructive(int auxValue) const;
243
244 virtual bool isLiquidClipItem() const;
245
246 virtual bool shouldInteractionWithBlockBypassLiquid(::Block const& block) const;
247
248 virtual bool requiresInteract() const;
249
250 virtual ::std::string getHoverTextColor(::ItemStackBase const& stack) const;
251
252 virtual void appendFormattedHovertext(
253 ::ItemStackBase const& stack,
254 ::Level& level,
256 bool showCategory
257 ) const;
258
259 virtual bool isValidRepairItem(
260 ::ItemStackBase const& source,
261 ::ItemStackBase const& repairItem,
262 ::BaseGameVersion const& baseGameVersion
263 ) const;
264
265 virtual int getEnchantSlot() const;
266
267 virtual int getEnchantValue() const;
268
269 virtual int getArmorValue() const;
270
271 virtual int getToughnessValue() const;
272
273 virtual float getKnockbackResistanceValue() const;
274
275 virtual ::std::optional<::SoundEventIdentifier> getAttackMissSound() const;
276
277 virtual ::std::optional<::SoundEventIdentifier> getAttackHitSound() const;
278
279 virtual ::std::optional<::SoundEventIdentifier> getAttackCriticalHitSound() const;
280
281 virtual ::SharedTypes::Legacy::LevelSoundEvent getBreakSound() const;
282
283 virtual ::SharedTypes::Legacy::LevelSoundEvent getEquipSound() const;
284
285 virtual bool isComplex() const;
286
287#ifdef LL_PLAT_S
288 virtual bool isValidAuxValue(int value) const;
289#else // LL_PLAT_C
290 virtual bool isValidAuxValue(int auxValue) const;
291#endif
292
293 virtual int getDamageChance(int unbreaking) const;
294
295 virtual float getViewDamping() const;
296
297 virtual bool uniqueAuxValues() const;
298
299 virtual bool isActorPlacerItem() const;
300
301 virtual ::ItemTintStrategy getTintStrategy() const;
302
303 virtual ::mce::Color getColor(::CompoundTag const* userData, ::ItemDescriptor const& instance) const;
304
305 virtual bool hasCustomColor(::ItemStackBase const& instance) const;
306
307 virtual bool hasCustomColor(::CompoundTag const* userData) const;
308
309 virtual void clearColor(::ItemStackBase& item) const;
310
311 virtual void setColor(::ItemStackBase& item, ::mce::Color const& color) const;
312
313 virtual ::ActorDefinitionIdentifier getActorIdentifier(::ItemStack const&) const;
314
315 virtual int buildIdAux(short auxValue, ::CompoundTag const* userData) const;
316
317 virtual bool canUseOnSimTick() const;
318
319 virtual ::ItemStack& use(::ItemStack& item, ::Player& player, ::HandSlot handSlot) const;
320
321 virtual bool canUseAsAttack() const;
322
323 virtual ::ItemStack&
324 useAsAttack(::ItemStack& item, ::Player& player, ::Vec3 const& aimDirection, ::HandSlot handSlot) const;
325
326 virtual ::Actor* createProjectileActor(
327 ::BlockSource& region,
328 ::ItemStack const& stack,
329 ::Vec3 const& pos,
330 ::Vec3 const& aimDirection
331 ) const;
332
333 virtual bool dispense(::BlockSource& region, ::Container& container, int slot, ::Vec3 const& pos, uchar face) const;
334
335 virtual ::ItemUseMethod useTimeDepleted(::ItemStack& inoutInstance, ::Level* level, ::Player* player) const;
336
337 virtual void releaseUsing(::ItemStack& item, ::Player* player, int durationLeft) const;
338
339 virtual float getDestroySpeed(::ItemStackBase const& item, ::Block const& block) const;
340
341 virtual void hurtActor(::ItemStack& item, ::Actor& actor, ::Mob& attacker) const;
342
343 virtual void hitActor(::ItemStack& item, ::Actor& actor, ::Mob& attacker) const;
344
345 virtual void hitBlock(::ItemStack& item, ::Block const& block, ::BlockPos const& blockPos, ::Mob& attacker) const;
346
347 virtual ::std::string buildDescriptionName(::ItemStackBase const& stack) const;
348
349 virtual ::Bedrock::Safety::RedactableString const buildRedactedDescriptionName(::ItemStackBase const& stack) const;
350
351 virtual ::std::string
352 buildDescriptionId(::ItemDescriptor const& itemDescriptor, ::CompoundTag const* userData) const;
353
354 virtual ::Bedrock::Safety::RedactableString getRedactedCustomName(::ItemStackBase const& stack) const;
355
356 virtual bool hasCustomHoverName(::ItemStackBase const& stack) const;
357
358 virtual ::std::string buildEffectDescriptionName(::ItemStackBase const& stack, bool playerIsCreative) const;
359
360 virtual void
361 readUserData(::ItemStackBase& stack, ::IDataInput& input, ::ReadOnlyBinaryStream& underlyingStream) const;
362
363 virtual void writeUserData(::ItemStackBase const& stack, ::IDataOutput& output) const;
364
365 virtual uchar getMaxStackSize(::ItemDescriptor const&) const;
366
367 virtual bool inventoryTick(::ItemStack& item, ::Level& level, ::Actor& owner, int slot, bool selected) const;
368
369 virtual void refreshedInContainer(::ItemStackBase const& stack, ::Level& level) const;
370
371 virtual ::HashedString const& getCooldownCategory() const;
372
373 virtual int getCooldownDuration() const;
374
375 virtual ::SharedTypes::ItemCooldownType getCooldownType() const;
376
377 virtual void fixupCommon(::ItemStackBase& stack) const;
378
379 virtual void fixupCommon(::ItemStackBase& stack, ::ILevel& level) const;
380
381 virtual ::InHandUpdateType getInHandUpdateType(
382 ::Player const&,
383 ::ItemStack const& oldItem,
384 ::ItemStack const& newItem,
385 bool const,
386 bool const slotChanged
387 ) const;
388
389 virtual bool validFishInteraction(int) const;
390
391 virtual void enchantProjectile(::ItemStackBase const& weapon, ::Actor& projectile) const;
392
393 virtual ::SharedTypes::Legacy::ActorLocation getEquipLocation() const;
394
395 virtual bool shouldEmitInUseGameEvents() const;
396
397 virtual bool useInterruptedByAttacking() const;
398
399 virtual bool hasSameRelevantUserData(::ItemStackBase const& stack, ::ItemStackBase const& other) const;
400
401 virtual void initClient(
403 ::SemVersion const&,
404 ::Experiments const&,
405 ::std::optional<::ItemIconInfo> (*iconFactory)(::std::string const&, int)
406 );
407
408 virtual ::Item& setIconInfo(::std::string const& name, int index);
409
410 virtual ::ResolvedItemIconInfo
411 getIconInfo(::ItemStackBase const& item, int newAnimationFrame, bool inInventoryPane) const;
412
413 virtual ::std::string getInteractText(::Player const& player) const;
414
415 virtual int
416 getAnimationFrameFor(::Mob* holder, bool asItemEntity, ::ItemStack const* item, bool shouldAnimate) const;
417
418 virtual bool isEmissive(int auxValue) const;
419
420 virtual ::Brightness getLightEmission(int data) const;
421
422 virtual bool canBeCharged() const;
423
424 virtual void playSoundIncrementally(::ItemStack const& item, ::Mob& mob) const;
425
426 virtual float getFurnaceXPmultiplier(::ItemStackBase const& instance) const;
427
428 virtual ::Matrix getItemTransform(::ItemTransformType type, float normalizedUnitScale) const;
429
430 virtual bool
431 calculatePlacePos(::ItemStackBase const& instance, ::Actor const& entity, uchar& face, ::BlockPos& pos) const;
432
433 virtual ::std::string _getHoverTextDescription() const;
434
435 virtual bool
436 _checkUseOnPermissions(::Actor& entity, ::ItemStackBase& item, uchar const& face, ::BlockPos const& pos) const;
437
438 virtual bool
439 _calculatePlacePos(::ItemStackBase const& instance, ::Actor const& entity, uchar& face, ::BlockPos& pos) const;
440
441 virtual bool _shouldAutoCalculatePlacePos() const;
442
443 virtual ::InteractionResult _useOn(
444 ::ItemStack& instance,
445 ::Actor& entity,
446 ::BlockPos pos,
447 uchar face,
448 ::HandSlot handSlot,
449 ::Vec3 const& clickPos
450 ) const;
451 // NOLINTEND
452
453public:
454 // member functions
455 // NOLINTBEGIN
456 MCAPI Item(::std::string const& nameId, short id);
457
458 MCNAPI bool
459 _dispenseHoneycombItem(::BlockSource& region, ::Container& container, int slot, ::Vec3 const& pos) const;
460
462 ::Actor& actor,
463 ::ItemStack& startingItem,
464 ::ItemStack& replacementItem,
465 ::ItemAcquisitionMethod acquisitionMethod
466 ) const;
467
468 MCNAPI ::CoordinatorResult _sendTryPlaceBlockEvent(
469 ::Block const& block,
470 ::BlockSource const& region,
471 ::Actor const& actor,
472 ::BlockPos const& pos,
473 uchar face,
474 ::Vec3 const& clickPos
475 ) const;
476
477 MCNAPI void addOnResetBAICallback(::std::function<void()> callback);
478
479 MCAPI ::Item& addTag(::ItemTag const& tag);
480
481 MCAPI ::Item& addTag(::HashedString const& tag);
482
483 MCNAPI void clearTags();
484
485 MCNAPI ::std::vector<::CommandName> getCommandNames() const;
486
487#ifdef LL_PLAT_C
488 MCNAPI short getDamageValue(::CompoundTag const* userData) const;
489#endif
490
491 MCAPI ::std::string getSerializedName() const;
492
493 MCAPI bool hasTag(::ItemTag const& tag) const;
494
495 MCAPI bool hasTag(::HashedString const& tag) const;
496
497 MCAPI void setDamageValue(::ItemStackBase& stack, short newDamage) const;
498
499 MCNAPI void
501
502 MCAPI ::InteractionResult useOn(
503 ::ItemStack& item,
504 ::Actor& entity,
505 ::BlockPos const& pos,
506 uchar face,
507 ::HandSlot handSlot,
508 ::Vec3 const& clickPos,
509 ::ItemUsedOnEventContext itemUsedOnEventContext
510 ) const;
511 // NOLINTEND
512
513public:
514 // static functions
515 // NOLINTBEGIN
516 MCAPI static bool isElytra(::ItemDescriptor const& itemDescriptor);
517
518 MCNAPI static bool isFlyEnabled(::ItemInstance const& item);
519 // NOLINTEND
520
521public:
522 // static variables
523 // NOLINTBEGIN
524 MCNAPI static ::SemVersionConstant const& DATA_DRIVEN_NEXT_VERSION();
525
526 MCNAPI static ::SemVersionConstant const& DATA_DRIVEN_VERSION();
527
528 MCNAPI static ::std::string const& ICON_DESCRIPTION_PREFIX();
529
530 MCNAPI static ::std::string const& TAG_DAMAGE();
531 // NOLINTEND
532
533public:
534 // constructor thunks
535 // NOLINTBEGIN
536 MCAPI void* $ctor(::std::string const& nameId, short id);
537 // NOLINTEND
538
539public:
540 // destructor thunk
541 // NOLINTBEGIN
542 MCAPI void $dtor();
543 // NOLINTEND
544
545public:
546 // virtual function thunks
547 // NOLINTBEGIN
548 MCAPI void $initServer(
550 ::SemVersion const& documentVersion,
551 ::Experiments const& experiments,
552 ::std::optional<::LegacyEventItemComponentData> legacyEventData
553 );
554
555 MCFOLD void $tearDown();
556
557 MCAPI ::Item& $setDescriptionId(::std::string const& description);
558
559 MCAPI ::std::string const& $getDescriptionId() const;
560
561 MCAPI int $getMaxUseDuration(::ItemStack const* instance) const;
562
563 MCFOLD ::BlockType const* $getBlockTypeForRendering() const;
564
565 MCFOLD bool $isMusicDisk() const;
566
567 MCFOLD void
568 $executeEvent(::ItemStackBase& item, ::std::string const& name, ::HandSlot handSlot, ::RenderParams& params) const;
569
570 MCFOLD bool $isComponentBased() const;
571
572 MCFOLD bool $isHumanoidArmor() const;
573
574 MCFOLD bool $isBlockPlanterItem() const;
575
576 MCFOLD bool $isBucket() const;
577
578 MCFOLD bool $isCandle() const;
579
580 MCAPI bool $isDamageable() const;
581
582 MCFOLD bool $isDyeable() const;
583
584 MCFOLD bool $isDye() const;
585
586 MCFOLD ::ItemColor $getItemColor() const;
587
588 MCFOLD bool $isFertilizer() const;
589
590 MCFOLD bool $isFood() const;
591
592 MCFOLD bool $isThrowable() const;
593
594 MCFOLD bool $isUseable() const;
595
596 MCFOLD bool $isTrimAllowed() const;
597
598 MCFOLD bool $isBodyArmor() const;
599
600 MCFOLD ::ItemComponent* $getComponent(::HashedString const& id) const;
601
602 MCAPI ::IFoodItemComponent* $getFood() const;
603
604 MCAPI ::Item& $setMaxDamage(int maxDamage);
605
606 MCAPI ::Item& $setMaxUseDuration(int maxUseDuration);
607
608 MCAPI ::std::unique_ptr<::CompoundTag> $buildNetworkTag() const;
609
610 MCAPI void $initializeFromNetwork(::CompoundTag const& tag);
611
612 MCFOLD ::std::vector<::std::string> $validateFromNetwork(::CompoundTag const& tag);
613
614 MCFOLD ::BlockShape $getBlockShape() const;
615
616 MCAPI bool $canBeDepleted() const;
617
618 MCFOLD bool $canDestroySpecial(::Block const& block) const;
619
620 MCFOLD int $getLevelDataForAuxValue(int auxValue) const;
621
622 MCAPI bool $isStackedByData() const;
623
624 MCAPI short $getMaxDamage() const;
625
626 MCFOLD int $getAttackDamage() const;
627
628 MCFOLD float $getAttackDamageBonus(::Actor const& attacker) const;
629
630 MCAPI bool $isHandEquipped() const;
631
632 MCFOLD bool $isGlint(::ItemStackBase const& stack) const;
633
634 MCFOLD bool $isPattern() const;
635
636 MCFOLD int $getPatternIndex() const;
637
638 MCAPI ::Rarity $getBaseRarity() const;
639
640 MCAPI ::Rarity $getRarity(::ItemStackBase const& stack) const;
641
642 MCFOLD uint $getSwingDuration() const;
643
644 MCFOLD bool $showsDurabilityInCreative() const;
645
646 MCFOLD bool $isWearableThroughLootTable(::CompoundTag const* userData) const;
647
648 MCFOLD bool $canDestroyInCreative() const;
649
650 MCFOLD bool $isDestructive(int auxValue) const;
651
652 MCFOLD bool $isLiquidClipItem() const;
653
654 MCFOLD bool $shouldInteractionWithBlockBypassLiquid(::Block const& block) const;
655
656 MCFOLD bool $requiresInteract() const;
657
658 MCAPI ::std::string $getHoverTextColor(::ItemStackBase const& stack) const;
659
660 MCAPI void $appendFormattedHovertext(
661 ::ItemStackBase const& stack,
662 ::Level& level,
664 bool showCategory
665 ) const;
666
667 MCFOLD bool $isValidRepairItem(
668 ::ItemStackBase const& source,
669 ::ItemStackBase const& repairItem,
670 ::BaseGameVersion const& baseGameVersion
671 ) const;
672
673 MCFOLD int $getEnchantSlot() const;
674
675 MCFOLD int $getEnchantValue() const;
676
677 MCFOLD int $getArmorValue() const;
678
679 MCFOLD int $getToughnessValue() const;
680
681 MCFOLD float $getKnockbackResistanceValue() const;
682
683 MCFOLD ::std::optional<::SoundEventIdentifier> $getAttackMissSound() const;
684
685 MCFOLD ::std::optional<::SoundEventIdentifier> $getAttackHitSound() const;
686
687 MCFOLD ::std::optional<::SoundEventIdentifier> $getAttackCriticalHitSound() const;
688
689 MCFOLD ::SharedTypes::Legacy::LevelSoundEvent $getBreakSound() const;
690
691 MCAPI ::SharedTypes::Legacy::LevelSoundEvent $getEquipSound() const;
692
693 MCFOLD bool $isComplex() const;
694
695#ifdef LL_PLAT_S
696 MCFOLD bool $isValidAuxValue(int value) const;
697#else // LL_PLAT_C
698 MCFOLD bool $isValidAuxValue(int auxValue) const;
699#endif
700
701 MCAPI int $getDamageChance(int unbreaking) const;
702
703 MCFOLD float $getViewDamping() const;
704
705 MCFOLD bool $uniqueAuxValues() const;
706
707 MCFOLD bool $isActorPlacerItem() const;
708
709 MCFOLD ::ItemTintStrategy $getTintStrategy() const;
710
711 MCFOLD ::mce::Color $getColor(::CompoundTag const* userData, ::ItemDescriptor const& instance) const;
712
713 MCFOLD bool $hasCustomColor(::ItemStackBase const& instance) const;
714
715 MCFOLD bool $hasCustomColor(::CompoundTag const* userData) const;
716
717 MCFOLD void $clearColor(::ItemStackBase& item) const;
718
719 MCFOLD void $setColor(::ItemStackBase& item, ::mce::Color const& color) const;
720
721 MCAPI ::ActorDefinitionIdentifier $getActorIdentifier(::ItemStack const&) const;
722
723 MCAPI int $buildIdAux(short auxValue, ::CompoundTag const* userData) const;
724
725 MCFOLD bool $canUseOnSimTick() const;
726
727 MCAPI ::ItemStack& $use(::ItemStack& item, ::Player& player, ::HandSlot handSlot) const;
728
729 MCFOLD bool $canUseAsAttack() const;
730
731 MCAPI ::ItemStack&
732 $useAsAttack(::ItemStack& item, ::Player& player, ::Vec3 const& aimDirection, ::HandSlot handSlot) const;
733
734 MCFOLD ::Actor* $createProjectileActor(
735 ::BlockSource& region,
736 ::ItemStack const& stack,
737 ::Vec3 const& pos,
738 ::Vec3 const& aimDirection
739 ) const;
740
741 MCAPI bool $dispense(::BlockSource& region, ::Container& container, int slot, ::Vec3 const& pos, uchar face) const;
742
743 MCAPI ::ItemUseMethod $useTimeDepleted(::ItemStack& inoutInstance, ::Level* level, ::Player* player) const;
744
745 MCFOLD void $releaseUsing(::ItemStack& item, ::Player* player, int durationLeft) const;
746
747 MCFOLD float $getDestroySpeed(::ItemStackBase const& item, ::Block const& block) const;
748
749 MCAPI void $hurtActor(::ItemStack& item, ::Actor& actor, ::Mob& attacker) const;
750
751 MCFOLD void $hitActor(::ItemStack& item, ::Actor& actor, ::Mob& attacker) const;
752
753 MCFOLD void $hitBlock(::ItemStack& item, ::Block const& block, ::BlockPos const& blockPos, ::Mob& attacker) const;
754
755 MCAPI ::std::string $buildDescriptionName(::ItemStackBase const& stack) const;
756
757 MCAPI ::Bedrock::Safety::RedactableString const $buildRedactedDescriptionName(::ItemStackBase const& stack) const;
758
759 MCAPI ::std::string
760 $buildDescriptionId(::ItemDescriptor const& itemDescriptor, ::CompoundTag const* userData) const;
761
762 MCAPI ::Bedrock::Safety::RedactableString $getRedactedCustomName(::ItemStackBase const& stack) const;
763
764 MCAPI bool $hasCustomHoverName(::ItemStackBase const& stack) const;
765
766 MCAPI ::std::string $buildEffectDescriptionName(::ItemStackBase const& stack, bool playerIsCreative) const;
767
768 MCAPI void
769 $readUserData(::ItemStackBase& stack, ::IDataInput& input, ::ReadOnlyBinaryStream& underlyingStream) const;
770
771 MCAPI void $writeUserData(::ItemStackBase const& stack, ::IDataOutput& output) const;
772
773 MCFOLD uchar $getMaxStackSize(::ItemDescriptor const&) const;
774
775 MCFOLD bool $inventoryTick(::ItemStack& item, ::Level& level, ::Actor& owner, int slot, bool selected) const;
776
777 MCFOLD void $refreshedInContainer(::ItemStackBase const& stack, ::Level& level) const;
778
779 MCAPI ::HashedString const& $getCooldownCategory() const;
780
781 MCAPI int $getCooldownDuration() const;
782
783 MCFOLD ::SharedTypes::ItemCooldownType $getCooldownType() const;
784
785 MCAPI void $fixupCommon(::ItemStackBase& stack) const;
786
787 MCAPI void $fixupCommon(::ItemStackBase& stack, ::ILevel& level) const;
788
789 MCAPI ::InHandUpdateType $getInHandUpdateType(
790 ::Player const&,
791 ::ItemStack const& oldItem,
792 ::ItemStack const& newItem,
793 bool const,
794 bool const slotChanged
795 ) const;
796
797 MCFOLD bool $validFishInteraction(int) const;
798
799 MCFOLD void $enchantProjectile(::ItemStackBase const& weapon, ::Actor& projectile) const;
800
801 MCFOLD ::SharedTypes::Legacy::ActorLocation $getEquipLocation() const;
802
803 MCFOLD bool $shouldEmitInUseGameEvents() const;
804
805 MCFOLD bool $useInterruptedByAttacking() const;
806
807 MCFOLD bool $hasSameRelevantUserData(::ItemStackBase const& stack, ::ItemStackBase const& other) const;
808
809 MCAPI void $initClient(
811 ::SemVersion const&,
812 ::Experiments const&,
813 ::std::optional<::ItemIconInfo> (*iconFactory)(::std::string const&, int)
814 );
815
816 MCFOLD ::Item& $setIconInfo(::std::string const& name, int index);
817
818 MCAPI ::ResolvedItemIconInfo
819 $getIconInfo(::ItemStackBase const& item, int newAnimationFrame, bool inInventoryPane) const;
820
821 MCAPI ::std::string $getInteractText(::Player const& player) const;
822
823 MCFOLD int
824 $getAnimationFrameFor(::Mob* holder, bool asItemEntity, ::ItemStack const* item, bool shouldAnimate) const;
825
826 MCAPI bool $isEmissive(int auxValue) const;
827
828 MCFOLD ::Brightness $getLightEmission(int data) const;
829
830 MCFOLD bool $canBeCharged() const;
831
832 MCFOLD void $playSoundIncrementally(::ItemStack const& item, ::Mob& mob) const;
833
834 MCAPI float $getFurnaceXPmultiplier(::ItemStackBase const& instance) const;
835
836 MCAPI ::Matrix $getItemTransform(::ItemTransformType type, float normalizedUnitScale) const;
837
838 MCAPI bool
839 $calculatePlacePos(::ItemStackBase const& instance, ::Actor const& entity, uchar& face, ::BlockPos& pos) const;
840
841 MCAPI ::std::string $_getHoverTextDescription() const;
842
843 MCFOLD bool
844 $_checkUseOnPermissions(::Actor& entity, ::ItemStackBase& item, uchar const& face, ::BlockPos const& pos) const;
845
846 MCFOLD bool
847 $_calculatePlacePos(::ItemStackBase const& instance, ::Actor const& entity, uchar& face, ::BlockPos& pos) const;
848
849 MCFOLD bool $_shouldAutoCalculatePlacePos() const;
850
851 MCAPI ::InteractionResult $_useOn(
852 ::ItemStack& instance,
853 ::Actor& entity,
854 ::BlockPos pos,
855 uchar face,
856 ::HandSlot handSlot,
857 ::Vec3 const& clickPos
858 ) const;
859
860
861 // NOLINTEND
862};
Definition Actor.h:116
Definition BaseGameVersion.h:8
Definition RedactableString.h:10
Definition BlockPos.h:14
Definition BlockSource.h:72
Definition BlockType.h:79
Definition Block.h:42
Definition CameraItemComponentLegacy.h:22
Definition CompoundTag.h:18
Definition Container.h:36
Definition Experiments.h:14
Definition FoodItemComponentLegacy.h:26
Definition HashedString.h:5
Definition IDataInput.h:8
Definition IDataOutput.h:5
Definition IFoodItemComponent.h:19
Definition ILevel.h:223
Definition InteractionResult.h:5
Definition ItemComponent.h:16
Definition ItemDescriptor.h:24
Definition ItemInstance.h:15
Definition ItemStackBase.h:45
Definition ItemStack.h:26
MCAPI void updateCustomBlockEntityTag(::BlockSource &region, ::ItemStackBase &instance, ::BlockPos const &pos) const
MCAPI ::std::vector<::CommandName > getCommandNames() const
MCAPI void addOnResetBAICallback(::std::function< void()> callback)
static MCAPI ::std::string const & TAG_DAMAGE()
static MCAPI ::SemVersionConstant const & DATA_DRIVEN_NEXT_VERSION()
static MCAPI bool isFlyEnabled(::ItemInstance const &item)
MCAPI::CoordinatorResult _sendTryPlaceBlockEvent(::Block const &block, ::BlockSource const &region, ::Actor const &actor, ::BlockPos const &pos, uchar face, ::Vec3 const &clickPos) const
MCAPI void clearTags()
static MCAPI ::std::string const & ICON_DESCRIPTION_PREFIX()
MCAPI void _helpChangeInventoryItemInPlace(::Actor &actor, ::ItemStack &startingItem, ::ItemStack &replacementItem, ::ItemAcquisitionMethod acquisitionMethod) const
MCAPI bool _dispenseHoneycombItem(::BlockSource &region, ::Container &container, int slot, ::Vec3 const &pos) const
static MCAPI ::SemVersionConstant const & DATA_DRIVEN_VERSION()
Definition Level.h:255
Definition Matrix.h:10
Definition Mob.h:58
Definition Player.h:131
Definition ReadOnlyBinaryStream.h:8
Definition RenderParams.h:29
Definition SeedItemComponentLegacy.h:22
Definition SemVersionConstant.h:8
Definition SemVersion.h:15
Definition Vec3.h:10
Definition Color.h:13
Definition ActorDefinitionIdentifier.h:15
Definition Brightness.h:8
Definition CommandName.h:5
Definition ItemIconInfo.h:5
Definition ItemTag.h:8
Definition ItemTintStrategy.h:9
Definition ItemUsedOnEventContext.h:8
Definition LegacyEventItemComponentData.h:10
Definition ResolvedItemIconInfo.h:8
Definition ItemDocument.h:19
Definition SoundEventIdentifier.h:13