LeviLamina
Loading...
Searching...
No Matches
ItemStackBase.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/world/level/Tick.h"
5
6class IDataInput;
7
8// auto generated inclusion list
9#include "mc/common/WeakPtr.h"
10#include "mc/deps/shared_types/item/ItemCooldownType.h"
11#include "mc/deps/shared_types/legacy/LevelSoundEvent.h"
12#include "mc/deps/shared_types/legacy/actor/ArmorSlot.h"
13#include "mc/deps/shared_types/legacy/item/UseAnimation.h"
14#include "mc/world/level/Tick.h"
15
16// auto generated forward declare list
17// clang-format off
18class Actor;
19class BaseGameVersion;
20class Block;
21class BlockActor;
22class BlockPalette;
23class BlockSource;
24class BlockType;
25class ComponentItem;
26class CompoundTag;
29class HashedString;
30class IDataOutput;
31class ILevel;
32class Item;
33class ItemComponent;
34class ItemDescriptor;
35class ItemEnchants;
36class ItemInstance;
37class ItemStack;
38class Level;
40class Player;
42class RenderParams;
43class SaveContext;
44class Vec3;
45struct ItemTag;
47namespace Bedrock::Safety { class RedactableString; }
48namespace Json { class Value; }
49namespace mce { class Color; }
50// clang-format on
51
52class ItemStackBase {
53public:
54 // ItemStackBase inner types declare
55 // clang-format off
56 struct ComparisonOptions;
57 // clang-format on
58
59 // ItemStackBase inner types define
61 public:
62 // member variables
63 // NOLINTBEGIN
64 ::ll::TypedStorage<1, 1, bool> mCompareAux;
65 ::ll::TypedStorage<1, 1, bool> mCompareRelevantUserData;
66 ::ll::TypedStorage<1, 1, bool> mCompareDamage;
67 // NOLINTEND
68 };
69
70public:
71 LLNDAPI std::string getTypeName() const;
72 LLNDAPI std::string getDescriptionName() const;
73 LLNDAPI bool isEnchanted() const;
74 LLNDAPI bool removeEnchants() const;
75 LLAPI void deserializeComponents(IDataInput& input);
76
77public:
78 // member variables
79 // NOLINTBEGIN
81 ::std::unique_ptr<::CompoundTag> mUserData;
82 ::Block const* mBlock;
83 short mAuxValue;
84 uchar mCount;
85 bool mValid_DeprecatedSeeComment;
86 bool mShowPickUp;
87 bool mWasPickedUp;
88 ::std::chrono::steady_clock::time_point mPickupTime;
89 ::std::vector<::BlockType const*> mCanPlaceOn;
90 uint64 mCanPlaceOnHash;
91 ::std::vector<::BlockType const*> mCanDestroy;
92 uint64 mCanDestroyHash;
93 ::Tick mBlockingTick;
94 ::std::unique_ptr<::ItemInstance> mChargedItem;
95 // NOLINTEND
96
97public:
98 // prevent constructor by default
99 ItemStackBase();
100
101public:
102 // virtual functions
103 // NOLINTBEGIN
104 virtual ~ItemStackBase();
105
106 virtual void reinit(::Item const& item, int count, int auxValue);
107
108 virtual void reinit(::Block const& block, int count);
109
110 virtual void reinit(::std::string_view const name, int count, int auxValue);
111
112 virtual void setNull(::std::optional<::std::string> reason);
113
114 virtual ::std::string toString() const;
115
116 virtual ::std::string toDebugString() const;
117 // NOLINTEND
118
119public:
120 // member functions
121 // NOLINTBEGIN
122 MCAPI explicit ItemStackBase(::RecipeIngredient const& ingredient);
123
124 MCAPI ItemStackBase(::ItemStackBase const& rhs);
125
126 MCAPI ItemStackBase(::Block const& block, int count = 1, ::CompoundTag const* _userData = nullptr);
127
128 MCAPI ItemStackBase(::Item const& item, int count = 1, int auxValue = 0, ::CompoundTag const* _userData = nullptr);
129
130 MCAPI ItemStackBase(::std::string_view name, int count = 1, int auxValue = 0, ::CompoundTag const* _userData = nullptr);
131
132 MCAPI void _addCustomUserDataCommon(::std::unique_ptr<::CompoundTag>&& tag);
133
134 MCAPI void _checkForItemWorldCompatibility();
135
136 MCAPI void _cloneComponents(::ItemStackBase const& other);
137
138 MCAPI ::std::string _getHoverFormattingPrefix() const;
139
140#ifdef LL_PLAT_C
141 MCAPI bool _hasFullOrPartialTag(::HashedString const& string) const;
142#endif
143
144 MCAPI bool _isInstance(::std::string_view itemName) const;
145
146 MCAPI void _loadComponents(::CompoundTag const& compoundTag);
147
148 MCAPI void _loadItem(::CompoundTag const& compoundTag);
149
150 MCAPI void _saveComponents(::CompoundTag& tag) const;
151
152 MCAPI void _setChargedItem(::ItemInstance const& item);
153
154 MCAPI bool _setItem(int id, bool doRemap);
155
156 MCAPI void _setItemFromBlockName(::HashedString const& blockName);
157
158 MCAPI void _updateCompareHashes();
159
160 MCAPI void add(int inCount);
161
162 MCAPI bool addComponents(::Json::Value const& root, ::std::string& errorMsg);
163
164 MCAPI void addCustomUserData(::ContainerComponent const& containerComponent);
165
166 MCAPI void addCustomUserData(::BlockActor& blockEntity, ::BlockSource& region);
167
168 MCAPI bool canBeCharged() const;
169
170 MCAPI bool canDestroy(::Block const* block) const;
171
172 MCAPI bool canDestroySpecial(::Block const& block) const;
173
174 MCAPI bool canPlaceOn(::Block const* block) const;
175
176 MCAPI bool clearAllDynamicProperties(::std::string const& collection);
177
178 MCAPI void clearChargedItem();
179
180 MCAPI void clearCustomLore();
181
182 MCAPI bool componentsMatch(::ItemStackBase const&) const;
183
184 MCAPI ::ItemEnchants constructItemEnchantsFromUserData() const;
185
186 MCAPI ::SharedTypes::Legacy::ArmorSlot getArmorSlot() const;
187
188 MCAPI ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> getAttackCriticalHitSound() const;
189
190 MCAPI int getAttackDamage() const;
191
192 MCAPI float getAttackDamageBonus(::Actor const& attacker) const;
193
194 MCAPI ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> getAttackHitSound() const;
195
196 MCAPI ::std::optional<::SharedTypes::Legacy::LevelSoundEvent> getAttackMissSound() const;
197
198 MCAPI short getAuxValue() const;
199
200 MCAPI int getBaseRepairCost() const;
201
202 MCFOLD ::Block const* getBlock() const;
203
204#ifdef LL_PLAT_C
205 MCAPI ::Block const* getBlockForRendering() const;
206#endif
207
208 MCAPI ::WeakPtr<::BlockType const> const& getBlockType() const;
209
210#ifdef LL_PLAT_C
211 MCAPI ::WeakPtr<::BlockType const> const& getBlockTypeForRendering() const;
212#endif
213
214 MCFOLD ::Tick const& getBlockingTick() const;
215
216 MCFOLD ::std::vector<::BlockType const*> const& getCanDestroy() const;
217
218 MCFOLD ::std::vector<::BlockType const*> const& getCanPlaceOn() const;
219
220 MCAPI ::std::string getCategoryName() const;
221
222 MCAPI ::ItemInstance const& getChargedItem() const;
223
224 MCAPI ::mce::Color getColor() const;
225
226 MCAPI ::ItemComponent const* getComponent(::HashedString const& id) const;
227
228 MCAPI ::ComponentItem const* getComponentItem() const;
229
230 MCAPI ::std::vector<::std::string> getCustomLore() const;
231
232 MCAPI ::std::string getCustomName() const;
233
234 MCAPI short getDamageValue() const;
235
236 MCAPI ::std::string getDescriptionId() const;
237
238 MCAPI ::ItemDescriptor getDescriptor() const;
239
240 MCAPI ::std::unique_ptr<::DynamicProperties> getDynamicProperties() const;
241
242 MCAPI ::std::optional<::std::variant<double, float, bool, ::std::string, ::Vec3>>
243 getDynamicProperty(::std::string const& key, ::std::string const& collectionName) const;
244
245 MCAPI ::std::string getEffectName(bool playerIsCreative) const;
246
247 MCAPI int getEnchantSlot() const;
248
249 MCAPI int getEnchantValue() const;
250
251#ifdef LL_PLAT_C
252 MCAPI ::Bedrock::Safety::RedactableString getFormattedHovertext(::Level& level, bool showCategory) const;
253#endif
254
255 MCAPI ::HashedString const& getFullNameHash() const;
256
257#ifdef LL_PLAT_C
258 MCAPI ::std::string getHoverName() const;
259
260 MCAPI ::ResolvedItemIconInfo getIconInfo(int newAnimationFrame, bool inInventoryPane) const;
261#endif
262
263 MCAPI short getId() const;
264
265 MCAPI int getIdAux() const;
266
267#ifdef LL_PLAT_C
268 MCAPI int getIdAuxEnchanted() const;
269
270 MCAPI bool getIsValidPickupTime() const;
271#endif
272
273 MCAPI ::Item const* getItem() const;
274
275 MCAPI short getMaxDamage() const;
276
277 MCAPI uchar getMaxStackSize() const;
278
279 MCAPI ::std::string getName() const;
280
281 MCAPI ::std::unique_ptr<::CompoundTag> getNetworkUserData() const;
282
283#ifdef LL_PLAT_C
284 MCAPI float getPickupPopPercentage() const;
285
286 MCFOLD ::std::chrono::steady_clock::time_point getPickupTime() const;
287#endif
288
289 MCAPI ::HashedString const& getRawNameHash() const;
290
291 MCAPI ::std::string getRawNameId() const;
292
293 MCAPI ::Bedrock::Safety::RedactableString getRedactedCustomName() const;
294
295 MCAPI ::Bedrock::Safety::RedactableString getRedactedHoverName() const;
296
297 MCAPI ::Bedrock::Safety::RedactableString getRedactedName() const;
298
299#ifdef LL_PLAT_C
300 MCAPI ::HashedString const& getRendererId() const;
301#endif
302
303 MCAPI ::BaseGameVersion const& getRequiredBaseGameVersion() const;
304
305 MCAPI uint getSwingDuration() const;
306
307 MCAPI ::SharedTypes::Legacy::UseAnimation getUseAnimation() const;
308
309 MCFOLD ::CompoundTag const* getUserData() const;
310
311 MCFOLD ::CompoundTag* getUserData();
312
313 MCFOLD bool getWasPickedUp() const;
314
315 MCAPI bool hasChargedItem() const;
316
317#ifdef LL_PLAT_C
318 MCAPI bool hasComponent(::std::string const& name) const;
319#endif
320
321 MCAPI bool hasCompoundTextUserData() const;
322
323 MCAPI bool hasContainerData() const;
324
325 MCAPI bool hasCooldown() const;
326
327 MCAPI bool hasCustomHoverName() const;
328
329 MCAPI bool hasDamageValue() const;
330
331 MCAPI bool hasDurability() const;
332
333 MCAPI bool hasSameAuxValue(::ItemStackBase const& other) const;
334
335 MCAPI bool hasSameUserData(::ItemStackBase const& other) const;
336
337 MCAPI bool hasTag(uint64 const& hash) const;
338
339 MCAPI bool hasTag(::ItemTag const& string) const;
340
341 MCFOLD bool hasUserData() const;
342
343 MCAPI bool hurtAndBreak(int deltaDamage, ::Actor* owner);
344
345 MCAPI void init(::BlockType const& block, int count);
346
347 MCAPI void init(::Item const& item, int count, int auxValue, ::CompoundTag const* userData, bool doRemap);
348
349 MCAPI bool isArmorItem() const;
350
351#ifdef LL_PLAT_C
352 MCAPI bool isAttachableEquipment() const;
353#endif
354
355 MCAPI bool isBlock() const;
356
357 MCAPI bool isBlockInstance(::HashedString const& blockName) const;
358
359 MCAPI bool isDamageableItem() const;
360
361 MCAPI bool isDamaged() const;
362
363 MCAPI bool isEnchantingBook() const;
364
365 MCAPI bool isExplodable() const;
366
367 MCAPI bool isFireResistant() const;
368
369 MCAPI bool isFullStack() const;
370
371 MCAPI bool isGlint() const;
372
373 MCAPI bool isHorseArmorItem() const;
374
375 MCAPI bool isHumanoidArmorItem() const;
376
377 MCAPI bool isHumanoidWearableBlockItem() const;
378
379 MCAPI bool isHumanoidWearableItem() const;
380
381 MCAPI bool isInstance(::HashedString const& itemName, bool useItemLookup) const;
382
383 MCAPI bool isLiquidClipItem() const;
384
385 MCAPI bool isMusicDiscItem() const;
386
387 MCAPI bool isNull() const;
388
389 MCAPI bool isOffhandItem() const;
390
391 MCAPI bool isOnCooldown(::Player& player, ::SharedTypes::ItemCooldownType type) const;
392
393 MCAPI bool
394 isOneOfBlockInstances(::std::vector<::std::reference_wrapper<::HashedString const>> const& blockTypeIds) const;
395
396 MCAPI bool
397 isOneOfBlockInstances(::std::initializer_list<::std::reference_wrapper<::HashedString const>> blocks) const;
398
399 MCAPI bool isOneOfInstances(
400 ::std::initializer_list<::std::reference_wrapper<::HashedString const>> items,
401 bool useItemLookup
402 ) const;
403
404 MCAPI bool isPattern() const;
405
406 MCAPI bool isPotionItem() const;
407
408 MCAPI bool isStackable() const;
409
410 MCAPI bool isStackable(::ItemStackBase const& other) const;
411
412 MCAPI bool isStackedByData() const;
413
414#ifdef LL_PLAT_C
415 MCAPI bool isThrowable() const;
416
417 MCAPI bool isTransparentAttachable() const;
418#endif
419
420 MCAPI bool isUnbreakable() const;
421
422#ifdef LL_PLAT_C
423 MCAPI bool isUseable() const;
424#endif
425
426 MCAPI bool isValidAuxValue(int value) const;
427
428 MCAPI void load(::CompoundTag const& compoundTag);
429
430 MCAPI void load(::CompoundTag const& compoundTag, ::ILevel& level);
431
432 MCFOLD bool matches(::ItemStackBase const& other) const;
433
434 MCAPI bool matchesEitherWearableCase(::CompoundTag const* userData) const;
435
436 MCAPI bool matchesItem(::ItemStackBase const& other) const;
437
438 MCAPI explicit operator bool() const;
439
440 MCAPI bool operator!=(::ItemStackBase const& rhs) const;
441
442 MCAPI ::ItemStackBase& operator=(::ItemStackBase const& rhs);
443
444 MCFOLD bool operator==(::ItemStackBase const& rhs) const;
445
446 MCAPI void refreshedInContainer(::Level& level) const;
447
448 MCAPI void remove(int inCount);
449
450 MCAPI void removeDamageValue();
451
452 MCAPI bool removeDynamicProperty(::std::string const& key, ::std::string const& collectionName);
453
454 MCAPI void removeEnchants();
455
456 MCAPI void resetHoverName();
457
458 MCAPI bool sameItem(::ItemStackBase const& other, ::ItemStackBase::ComparisonOptions const& options) const;
459
460 MCAPI bool sameItemAndAux(::ItemStackBase const& other) const;
461
462 MCAPI ::std::unique_ptr<::CompoundTag> save(::SaveContext const& saveContext) const;
463
464 MCAPI void saveEnchantsToUserData(::ItemEnchants const& enchant);
465
466 MCAPI bool sendEventTriggered(::std::string const& event, ::RenderParams const& params);
467
468 MCAPI void serializeComponents(::IDataOutput& output) const;
469
470 MCAPI void set(int inCount);
471
472 MCAPI void setAuxValue(short value);
473
474 MCFOLD void setBlock(::Block const* block);
475
476 MCFOLD void setBlockingTick(::Tick blockingTick);
477
478 MCAPI bool setCanDestroy(::std::vector<::std::string> const& blockIds);
479
480 MCAPI bool setCanPlaceOn(::std::vector<::std::string> const& blockIds);
481
482 MCAPI void setChargedItem(::ItemInstance const& instance, bool isSwapping);
483
484 MCAPI void setCustomLore(::std::vector<::std::string> const& lore);
485
486 MCAPI void setCustomName(::Bedrock::Safety::RedactableString const& name);
487
488 MCAPI void setDamageValue(short newDamage);
489
490 MCAPI void setDynamicProperty(
491 ::std::string const& key,
492 ::std::variant<double, float, bool, ::std::string, ::Vec3> const& value,
493 ::std::string const& collectionName
494 );
495
496 MCAPI void setJustBrewed(bool justBrewed);
497
498 MCAPI void setPickupTime();
499
500#ifdef LL_PLAT_C
501 MCFOLD void setPickupTime(::std::chrono::steady_clock::time_point newPickupTime);
502#endif
503
504 MCAPI void setRepairCost(int cost);
505
506 MCFOLD void setShowPickUp(bool show);
507
508 MCAPI void setUnbreakable(bool isUnbreakable);
509
510 MCAPI void setUserData(::std::unique_ptr<::CompoundTag> tag);
511
512 MCFOLD void setWasPickedUp(bool wasPickedUp);
513
514 MCAPI bool shouldInteractionWithBlockBypassLiquid(::Block const& block) const;
515
516 MCAPI bool shouldVanish() const;
517
518#ifdef LL_PLAT_C
519 MCFOLD bool showPickUp() const;
520
521 MCAPI bool showsDurabilityInCreative() const;
522#endif
523
524 MCAPI void startCooldown(::Player& player, ::SharedTypes::ItemCooldownType type) const;
525
526 MCAPI bool updateComponent(::std::string const& name, ::Json::Value const& data);
527
528#ifdef LL_PLAT_C
529 MCAPI bool wasJustBrewed() const;
530#endif
531 // NOLINTEND
532
533public:
534 // static functions
535 // NOLINTBEGIN
536 MCAPI static bool
537 _loadBlocksForCanPlaceOnCanDestroy(::std::vector<::BlockType const*>& blockList, ::std::string const& blockName);
538
539#ifdef LL_PLAT_C
540 MCAPI static void loadItemStacksFromDescriptor(
541 ::std::vector<::ItemStack>& outItems,
542 ::std::vector<::NetworkItemStackDescriptor> const& descriptors,
543 ::BlockPalette& blockPalette,
544 bool isClientSide
545 );
546
547 MCAPI static int retrieveAuxValFromIDAux(int idAux);
548
549 MCAPI static bool retrieveEnchantFromIDAux(int idAux);
550
551 MCAPI static short retrieveIDFromIDAux(int idAux);
552#endif
553 // NOLINTEND
554
555public:
556 // static variables
557 // NOLINTBEGIN
558 MCAPI static ::ItemStackBase::ComparisonOptions const& COMPARISONOPTIONS_AUXANDRELEVANTUSERDATA();
559
560 MCAPI static ::ItemStackBase::ComparisonOptions const& COMPARISONOPTIONS_RELEVANTUSERDATA();
561
562 MCAPI static ::std::string const& TAG_CAN_DESTROY();
563
564 MCAPI static ::std::string const& TAG_CAN_PLACE_ON();
565
566 MCAPI static ::std::string const& TAG_CHARGED_ITEM();
567
568 MCAPI static ::std::string const& TAG_DISPLAY();
569
570 MCAPI static ::std::string const& TAG_DISPLAY_FILTERED_NAME();
571
572 MCAPI static ::std::string const& TAG_DISPLAY_NAME();
573
574 MCAPI static ::std::string const& TAG_ENCHANTS();
575
576 MCAPI static ::std::string const& TAG_LORE();
577
578 MCAPI static ::std::string const& TAG_REPAIR_COST();
579
580 MCAPI static ::std::string const& TAG_STORE_CAN_DESTROY();
581
582 MCAPI static ::std::string const& TAG_STORE_CAN_PLACE_ON();
583
584 MCAPI static ::std::string const& TAG_UNBREAKABLE();
585 // NOLINTEND
586
587public:
588 // constructor thunks
589 // NOLINTBEGIN
590 MCAPI void* $ctor(::RecipeIngredient const& ingredient);
591
592 MCAPI void* $ctor(::ItemStackBase const& rhs);
593
594 MCAPI void* $ctor(::Block const& block, int count, ::CompoundTag const* _userData);
595
596 MCAPI void* $ctor(::Item const& item, int count, int auxValue, ::CompoundTag const* _userData);
597
598 MCAPI void* $ctor(::std::string_view name, int count, int auxValue, ::CompoundTag const* _userData);
599 // NOLINTEND
600
601public:
602 // destructor thunk
603 // NOLINTBEGIN
604 MCAPI void $dtor();
605 // NOLINTEND
606
607public:
608 // virtual function thunks
609 // NOLINTBEGIN
610 MCFOLD void $reinit(::Item const& item, int count, int auxValue);
611
612 MCFOLD void $reinit(::Block const& block, int count);
613
614 MCFOLD void $reinit(::std::string_view const name, int count, int auxValue);
615
616 MCAPI void $setNull(::std::optional<::std::string> reason);
617
618 MCAPI ::std::string $toString() const;
619
620 MCAPI ::std::string $toDebugString() const;
621
622
623 // NOLINTEND
624
625public:
626 // vftables
627 // NOLINTBEGIN
628 MCAPI static void** $vftable();
629 // NOLINTEND
630};
Definition Actor.h:123
Definition BaseGameVersion.h:13
Definition RedactableString.h:10
Definition BlockActor.h:30
Definition BlockPalette.h:21
Definition BlockSource.h:72
Definition BlockType.h:84
Definition Block.h:69
Definition ComponentItem.h:55
Definition CompoundTag.h:23
Definition ContainerComponent.h:25
Definition DynamicProperties.h:14
Definition HashedString.h:5
Definition IDataInput.h:8
Definition IDataOutput.h:5
Definition ILevel.h:218
Definition ItemComponent.h:17
Definition ItemDescriptor.h:25
Definition ItemEnchants.h:15
Definition ItemInstance.h:15
Definition ItemStack.h:35
Definition Item.h:71
Definition Value.h:16
Definition Level.h:254
Definition NetworkItemStackDescriptor.h:21
Definition Player.h:136
Definition RecipeIngredient.h:16
Definition RenderParams.h:30
Definition SaveContext.h:5
Definition Vec3.h:10
Definition WeakPtr.h:10
Definition Color.h:13
Definition ItemStackBase.h:60
Definition ItemTag.h:8
Definition ResolvedItemIconInfo.h:8
Definition Tick.h:5