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