LeviLamina
Loading...
Searching...
No Matches
ComponentItem.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/core/utility/NonOwnerPointer.h"
8#include "mc/deps/shared_types/item/EnchantSlot.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/world/item/HandSlot.h"
13#include "mc/world/item/Item.h"
14#include "mc/world/item/ItemUseMethod.h"
15#include "mc/world/level/block/BlockShape.h"
16
17// auto generated forward declare list
18// clang-format off
19class Actor;
20class BaseGameVersion;
21class Block;
22class BlockPos;
23class BlockSource;
24class BlockType;
25class CompoundTag;
26class Container;
27class Experiments;
31class ItemComponent;
32class ItemDescriptor;
33class ItemStack;
34class ItemStackBase;
35class Level;
36class Mob;
37class Player;
38class SemVersion;
39class Vec3;
40struct ItemIconInfo;
44namespace Bedrock::Safety { class RedactableString; }
45namespace SharedTypes::v1_26_30 { struct ItemDocument; }
46namespace cereal { struct ReflectionCtx; }
47namespace mce { class Color; }
48// clang-format on
49
50class ComponentItem : public ::Item {
51public:
52 // member variables
53 // NOLINTBEGIN
54 bool mExcludeUserDataDiffCheck : 1;
55 bool mCanDestroyInCreative : 1;
56 bool mRequiresInteract : 1;
57 bool mIsLiquidClipped : 1;
58 ::ll::TypedStorage<4, 4, float> mSpeed;
59 ::ll::TypedStorage<4, 4, int> mDamage;
60 ::ll::TypedStorage<4, 4, ::SharedTypes::EnchantSlot> mEnchantSlot;
61 ::ll::TypedStorage<4, 4, int> mEnchantValue;
62 ::ll::TypedStorage<8, 24, ::std::vector<::std::string>> mAlias;
63 ::ll::TypedStorage<1, 1, bool> mIsAttachable;
64 ::ll::TypedStorage<8, 16, ::std::map<::HashedString, ::std::shared_ptr<::ItemComponent>>> mItemComponents;
65 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::IconItemComponent>> mIcon;
66 ::ll::TypedStorage<8, 8, ::BlockType const*> mBlockTypeForRendering;
67 ::ll::TypedStorage<8, 16, ::std::map<::std::string, ::std::shared_ptr<::ItemComponent>>>
68 mRegisteredCerealComponents;
69 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::cereal::ReflectionCtx const>> mCtx;
70 // NOLINTEND
71
72public:
73 // prevent constructor by default
74 ComponentItem();
75
76public:
77 // virtual functions
78 // NOLINTBEGIN
79 virtual ~ComponentItem() /*override*/;
80
81 virtual void initServer(
83 ::SemVersion const& documentVersion,
84 ::Experiments const& experiments,
85 ::std::optional<::LegacyEventItemComponentData> legacyEventData
86 ) /*override*/;
87
88 virtual void tearDown() /*override*/;
89
90 virtual bool isComponentBased() const /*override*/;
91
92 virtual bool isHumanoidArmor() const /*override*/;
93
94 virtual bool isBlockPlanterItem() const /*override*/;
95
96 virtual bool isDamageable() const /*override*/;
97
98 virtual bool isDyeable() const /*override*/;
99
100 virtual bool isFood() const /*override*/;
101
102 virtual bool isThrowable() const /*override*/;
103
104 virtual bool isUseable() const /*override*/;
105
106 virtual bool isMusicDisk() const /*override*/;
107
108 virtual bool isTrimAllowed() const /*override*/;
109
110 virtual ::BlockType const* getBlockTypeForRendering() const /*override*/;
111
112 virtual ::ItemComponent* getComponent(::HashedString const& id) const /*override*/;
113
114 virtual ::IFoodItemComponent* getFood() const /*override*/;
115
116 virtual ::Item& setMaxDamage(int maxDamage) /*override*/;
117
118 virtual ::std::string const& getDescriptionId() const /*override*/;
119
120 virtual ::BlockShape getBlockShape() const /*override*/;
121
122 virtual bool canBeDepleted() const /*override*/;
123
124 virtual bool canDestroySpecial(::Block const& block) const /*override*/;
125
126 virtual int getLevelDataForAuxValue(int) const /*override*/;
127
128 virtual short getMaxDamage() const /*override*/;
129
130 virtual int getAttackDamage() const /*override*/;
131
132 virtual bool isGlint(::ItemStackBase const& stack) const /*override*/;
133
134 virtual bool canDestroyInCreative() const /*override*/;
135
136 virtual bool isDestructive(int) const /*override*/;
137
138 virtual bool isLiquidClipItem() const /*override*/;
139
140 virtual bool requiresInteract() const /*override*/;
141
142 virtual void appendFormattedHovertext(
143 ::ItemStackBase const& stack,
144 ::Level& level,
146 bool const showCategory
147 ) const /*override*/;
148
149 virtual bool
150 isValidRepairItem(::ItemStackBase const&, ::ItemStackBase const& repairItem, ::BaseGameVersion const&) const
151 /*override*/;
152
153 virtual int getEnchantSlot() const /*override*/;
154
155 virtual int getEnchantValue() const /*override*/;
156
157 virtual int getArmorValue() const /*override*/;
158
159 virtual int getDamageChance(int unbreaking) const /*override*/;
160
161 virtual uint getSwingDuration() const /*override*/;
162
163 virtual bool shouldEmitInUseGameEvents() const /*override*/;
164
165 virtual ::mce::Color getColor(::CompoundTag const* userData, ::ItemDescriptor const& instance) const /*override*/;
166
167 virtual bool hasCustomColor(::ItemStackBase const& instance) const /*override*/;
168
169 virtual void clearColor(::ItemStackBase& instance) const /*override*/;
170
171 virtual void setColor(::ItemStackBase& instance, ::mce::Color const& color) const /*override*/;
172
173 virtual ::std::optional<::SoundEventIdentifier> getAttackMissSound() const /*override*/;
174
175 virtual ::std::optional<::SoundEventIdentifier> getAttackHitSound() const /*override*/;
176
177 virtual ::std::optional<::SoundEventIdentifier> getAttackCriticalHitSound() const /*override*/;
178
179 virtual ::SharedTypes::Legacy::LevelSoundEvent getEquipSound() const /*override*/;
180
181 virtual ::ItemStack& use(::ItemStack& item, ::Player& player, ::HandSlot handSlot) const /*override*/;
182
183 virtual bool canUseAsAttack() const /*override*/;
184
185 virtual ::ItemStack&
186 useAsAttack(::ItemStack& item, ::Player& player, ::Vec3 const& aimDirection, ::HandSlot handSlot) const
187 /*override*/;
188
189 virtual ::Actor* createProjectileActor(
190 ::BlockSource& region,
191 ::ItemStack const& stack,
192 ::Vec3 const& pos,
193 ::Vec3 const& aimDirection
194 ) const /*override*/;
195
196 virtual bool dispense(::BlockSource& region, ::Container& container, int slot, ::Vec3 const& pos, uchar face) const
197 /*override*/;
198
199 virtual ::ItemUseMethod useTimeDepleted(::ItemStack& inoutInstance, ::Level* level, ::Player* player) const
200 /*override*/;
201
202 virtual void releaseUsing(::ItemStack& item, ::Player* player, int durationLeft) const /*override*/;
203
204 virtual float getDestroySpeed(::ItemStackBase const& item, ::Block const& block) const /*override*/;
205
206 virtual void hurtActor(::ItemStack& item, ::Actor& actor, ::Mob& attacker) const /*override*/;
207
208 virtual void hitActor(::ItemStack& item, ::Actor& actor, ::Mob& attacker) const /*override*/;
209
210 virtual void hitBlock(::ItemStack& item, ::Block const& block, ::BlockPos const& blockPos, ::Mob& attacker) const
211 /*override*/;
212
213 virtual ::std::string
214 buildDescriptionId(::ItemDescriptor const& itemDescriptor, ::CompoundTag const* userData) const /*override*/;
215
216 virtual ::std::string buildEffectDescriptionName(::ItemStackBase const& stack, bool playerIsCreative) const
217 /*override*/;
218
219 virtual uchar getMaxStackSize(::ItemDescriptor const&) const /*override*/;
220
221 virtual ::HashedString const& getCooldownCategory() const /*override*/;
222
223 virtual int getCooldownDuration() const /*override*/;
224
225 virtual ::SharedTypes::ItemCooldownType getCooldownType() const /*override*/;
226
227 virtual ::SharedTypes::Legacy::ActorLocation getEquipLocation() const /*override*/;
228
229 virtual bool useVariant(int, int, bool) const;
230
231 virtual int getVariant(int, int, bool) const;
232
233 virtual void initClient(
235 ::SemVersion const& documentVersion,
236 ::Experiments const& experiments,
237 ::std::optional<::ItemIconInfo> (*)(::std::string const&, int)
238 ) /*override*/;
239
240 virtual ::std::string getInteractText(::Player const& player) const /*override*/;
241
242 virtual int getAnimationFrameFor(::Mob*, bool, ::ItemStack const*, bool) const /*override*/;
243
244 virtual bool isEmissive(int auxValue) const /*override*/;
245
246 virtual ::ResolvedItemIconInfo
247 getIconInfo(::ItemStackBase const& item, int newAnimationFrame, bool inInventoryPane) const /*override*/;
248
249 virtual ::Item& setIconInfo(::std::string const& name, int frame) /*override*/;
250
251 virtual bool canBeCharged() const /*override*/;
252
253 virtual ::ComponentItem& setDescriptionId(::std::string const& descriptionId) /*override*/;
254
255 virtual bool shouldUseJsonForRenderMatrix() const;
256
257 virtual ::std::unique_ptr<::CompoundTag> buildNetworkTag() const /*override*/;
258
259 virtual void initializeFromNetwork(::CompoundTag const& tag) /*override*/;
260
261 virtual ::std::vector<::std::string> validateFromNetwork(::CompoundTag const& tag) /*override*/;
262
263 virtual bool
264 _checkUseOnPermissions(::Actor& entity, ::ItemStackBase& item, uchar const& face, ::BlockPos const& pos) const
265 /*override*/;
266
267 virtual bool _calculatePlacePos(::ItemStackBase& instance, ::Actor& entity, uchar& face, ::BlockPos& pos) const
268 /*override*/;
269
270 virtual bool _shouldAutoCalculatePlacePos() const /*override*/;
271
272 virtual ::InteractionResult _useOn(
273 ::ItemStack& instance,
274 ::Actor& entity,
275 ::BlockPos pos,
276 uchar face,
277 ::HandSlot handSlot,
278 ::Vec3 const& clickPos
279 ) const /*override*/;
280 // NOLINTEND
281
282public:
283 // member functions
284 // NOLINTBEGIN
285 MCAPI ComponentItem(::std::string const& nameId, short id, ::cereal::ReflectionCtx const& ctx);
286
287 MCAPI void _initializeLoadedComponents(
288 ::std::optional<::SemVersion> documentVersion,
289 ::std::optional<::Experiments> _experiments
290 );
291
292 MCAPI ::std::unique_ptr<::CompoundTag> buildNetworkTag(::cereal::ReflectionCtx const& ctx) const;
293
294 MCAPI float getMovementModifier() const;
295
296 MCAPI void init(
298 ::SemVersion const& documentVersion,
299 ::std::optional<::LegacyEventItemComponentData> legacyEventData,
300 ::Experiments const& experiments
301 );
302 // NOLINTEND
303
304public:
305 // static functions
306 // NOLINTBEGIN
307 MCAPI static void registerItemComponentTypes(::cereal::ReflectionCtx& ctx);
308
309 MCAPI static ::std::tuple<
311 ::rapidjson::GenericDocument<
312 ::rapidjson::UTF8<char>,
313 ::rapidjson::MemoryPoolAllocator<::rapidjson::CrtAllocator>,
314 ::rapidjson::CrtAllocator>,
315 bool>
316 upgradeJson(
318 ::std::string_view document,
319 bool betaApis,
320 ::std::optional<::SemVersion> minVersion
321 );
322 // NOLINTEND
323
324public:
325 // constructor thunks
326 // NOLINTBEGIN
327 MCAPI void* $ctor(::std::string const& nameId, short id, ::cereal::ReflectionCtx const& ctx);
328 // NOLINTEND
329
330public:
331 // destructor thunk
332 // NOLINTBEGIN
333 MCAPI void $dtor();
334 // NOLINTEND
335
336public:
337 // virtual function thunks
338 // NOLINTBEGIN
339 MCAPI void $initServer(
341 ::SemVersion const& documentVersion,
342 ::Experiments const& experiments,
343 ::std::optional<::LegacyEventItemComponentData> legacyEventData
344 );
345
346 MCFOLD void $tearDown();
347
348 MCFOLD bool $isComponentBased() const;
349
350 MCAPI bool $isHumanoidArmor() const;
351
352 MCAPI bool $isBlockPlanterItem() const;
353
354 MCAPI bool $isDamageable() const;
355
356 MCAPI bool $isDyeable() const;
357
358 MCFOLD bool $isFood() const;
359
360 MCAPI bool $isThrowable() const;
361
362 MCAPI bool $isUseable() const;
363
364 MCAPI bool $isMusicDisk() const;
365
366 MCAPI bool $isTrimAllowed() const;
367
368 MCAPI ::BlockType const* $getBlockTypeForRendering() const;
369
370 MCAPI ::ItemComponent* $getComponent(::HashedString const& id) const;
371
372 MCAPI ::IFoodItemComponent* $getFood() const;
373
374 MCAPI ::Item& $setMaxDamage(int maxDamage);
375
376 MCAPI ::std::string const& $getDescriptionId() const;
377
378 MCFOLD ::BlockShape $getBlockShape() const;
379
380 MCAPI bool $canBeDepleted() const;
381
382 MCAPI bool $canDestroySpecial(::Block const& block) const;
383
384 MCFOLD int $getLevelDataForAuxValue(int) const;
385
386 MCAPI short $getMaxDamage() const;
387
388 MCAPI int $getAttackDamage() const;
389
390 MCFOLD bool $isGlint(::ItemStackBase const& stack) const;
391
392 MCAPI bool $canDestroyInCreative() const;
393
394 MCFOLD bool $isDestructive(int) const;
395
396 MCAPI bool $isLiquidClipItem() const;
397
398 MCAPI bool $requiresInteract() const;
399
400 MCAPI void $appendFormattedHovertext(
401 ::ItemStackBase const& stack,
402 ::Level& level,
404 bool const showCategory
405 ) const;
406
407 MCAPI bool
408 $isValidRepairItem(::ItemStackBase const&, ::ItemStackBase const& repairItem, ::BaseGameVersion const&) const;
409
410 MCAPI int $getEnchantSlot() const;
411
412 MCFOLD int $getEnchantValue() const;
413
414 MCAPI int $getArmorValue() const;
415
416 MCAPI int $getDamageChance(int unbreaking) const;
417
418 MCAPI uint $getSwingDuration() const;
419
420 MCAPI bool $shouldEmitInUseGameEvents() const;
421
422 MCAPI ::mce::Color $getColor(::CompoundTag const* userData, ::ItemDescriptor const& instance) const;
423
424 MCAPI bool $hasCustomColor(::ItemStackBase const& instance) const;
425
426 MCAPI void $clearColor(::ItemStackBase& instance) const;
427
428 MCAPI void $setColor(::ItemStackBase& instance, ::mce::Color const& color) const;
429
430 MCAPI ::std::optional<::SoundEventIdentifier> $getAttackMissSound() const;
431
432 MCAPI ::std::optional<::SoundEventIdentifier> $getAttackHitSound() const;
433
434 MCAPI ::std::optional<::SoundEventIdentifier> $getAttackCriticalHitSound() const;
435
436 MCAPI ::SharedTypes::Legacy::LevelSoundEvent $getEquipSound() const;
437
438 MCAPI ::ItemStack& $use(::ItemStack& item, ::Player& player, ::HandSlot handSlot) const;
439
440 MCAPI bool $canUseAsAttack() const;
441
442 MCAPI ::ItemStack&
443 $useAsAttack(::ItemStack& item, ::Player& player, ::Vec3 const& aimDirection, ::HandSlot handSlot) const;
444
445 MCAPI ::Actor* $createProjectileActor(
446 ::BlockSource& region,
447 ::ItemStack const& stack,
448 ::Vec3 const& pos,
449 ::Vec3 const& aimDirection
450 ) const;
451
452 MCAPI bool $dispense(::BlockSource& region, ::Container& container, int slot, ::Vec3 const& pos, uchar face) const;
453
454 MCAPI ::ItemUseMethod $useTimeDepleted(::ItemStack& inoutInstance, ::Level* level, ::Player* player) const;
455
456 MCAPI void $releaseUsing(::ItemStack& item, ::Player* player, int durationLeft) const;
457
458 MCAPI float $getDestroySpeed(::ItemStackBase const& item, ::Block const& block) const;
459
460 MCAPI void $hurtActor(::ItemStack& item, ::Actor& actor, ::Mob& attacker) const;
461
462 MCAPI void $hitActor(::ItemStack& item, ::Actor& actor, ::Mob& attacker) const;
463
464 MCAPI void $hitBlock(::ItemStack& item, ::Block const& block, ::BlockPos const& blockPos, ::Mob& attacker) const;
465
466 MCAPI ::std::string
467 $buildDescriptionId(::ItemDescriptor const& itemDescriptor, ::CompoundTag const* userData) const;
468
469 MCAPI ::std::string $buildEffectDescriptionName(::ItemStackBase const& stack, bool playerIsCreative) const;
470
471 MCFOLD uchar $getMaxStackSize(::ItemDescriptor const&) const;
472
473 MCAPI ::HashedString const& $getCooldownCategory() const;
474
475 MCAPI int $getCooldownDuration() const;
476
477 MCAPI ::SharedTypes::ItemCooldownType $getCooldownType() const;
478
479 MCAPI ::SharedTypes::Legacy::ActorLocation $getEquipLocation() const;
480
481 MCFOLD bool $useVariant(int, int, bool) const;
482
483 MCFOLD int $getVariant(int, int, bool) const;
484
485 MCAPI void $initClient(
487 ::SemVersion const& documentVersion,
488 ::Experiments const& experiments,
489 ::std::optional<::ItemIconInfo> (*)(::std::string const&, int)
490 );
491
492 MCAPI ::std::string $getInteractText(::Player const& player) const;
493
494 MCFOLD int $getAnimationFrameFor(::Mob*, bool, ::ItemStack const*, bool) const;
495
496 MCFOLD bool $isEmissive(int auxValue) const;
497
498 MCAPI ::ResolvedItemIconInfo
499 $getIconInfo(::ItemStackBase const& item, int newAnimationFrame, bool inInventoryPane) const;
500
501 MCAPI ::Item& $setIconInfo(::std::string const& name, int frame);
502
503 MCAPI bool $canBeCharged() const;
504
505 MCAPI ::ComponentItem& $setDescriptionId(::std::string const& descriptionId);
506
507 MCAPI bool $shouldUseJsonForRenderMatrix() const;
508
509 MCAPI ::std::unique_ptr<::CompoundTag> $buildNetworkTag() const;
510
511 MCAPI void $initializeFromNetwork(::CompoundTag const& tag);
512
513 MCAPI ::std::vector<::std::string> $validateFromNetwork(::CompoundTag const& tag);
514
515 MCFOLD bool
516 $_checkUseOnPermissions(::Actor& entity, ::ItemStackBase& item, uchar const& face, ::BlockPos const& pos) const;
517
518 MCAPI bool $_calculatePlacePos(::ItemStackBase& instance, ::Actor& entity, uchar& face, ::BlockPos& pos) const;
519
520 MCAPI bool $_shouldAutoCalculatePlacePos() const;
521
522 MCAPI ::InteractionResult $_useOn(
523 ::ItemStack& instance,
524 ::Actor& entity,
525 ::BlockPos pos,
526 uchar face,
527 ::HandSlot handSlot,
528 ::Vec3 const& clickPos
529 ) const;
530
531
532 // NOLINTEND
533
534public:
535 // vftables
536 // NOLINTBEGIN
537 MCNAPI static void** $vftable();
538 // NOLINTEND
539};
Definition Actor.h:113
Definition BaseGameVersion.h:8
Definition RedactableString.h:10
Definition BlockPos.h:17
Definition BlockSource.h:71
Definition BlockType.h:79
Definition Block.h:41
static MCAPI void ** $vftable()
Definition CompoundTag.h:18
Definition Container.h:35
Definition Experiments.h:14
Definition HashedString.h:5
Definition IFoodItemComponent.h:18
Definition IconItemComponent.h:18
Definition InteractionResult.h:5
Definition ItemComponent.h:16
Definition ItemDescriptor.h:25
Definition ItemStackBase.h:44
Definition ItemStack.h:26
Definition Level.h:254
Definition Mob.h:56
Definition Player.h:129
Definition SemVersion.h:15
Definition Vec3.h:10
Definition Color.h:13
Definition ItemIconInfo.h:5
Definition LegacyEventItemComponentData.h:10
Definition ResolvedItemIconInfo.h:8
Definition ItemDocument.h:19
Definition SoundEventIdentifier.h:13
Definition ReflectionCtx.h:11
Definition ctx.h:5