LeviLamina
Loading...
Searching...
No Matches
ProjectileComponent.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/comprehensive/ParticleType.h"
7#include "mc/deps/shared_types/legacy/Difficulty.h"
8#include "mc/deps/shared_types/legacy/LevelSoundEvent.h"
9#include "mc/world/actor/ActorType.h"
10#include "mc/world/actor/TempEPtr.h"
11#include "mc/world/actor/projectile/ProjectileAnchor.h"
12
13// auto generated forward declare list
14// clang-format off
15class Actor;
18class BaseGameVersion;
19class BlockPos;
20class CompoundTag;
21class DataLoadHelper;
22class HitResult;
23class Level;
25class Vec2;
26class Vec3;
27struct ActorUniqueID;
28// clang-format on
29
31public:
32 // ProjectileComponent inner types define
33 enum class EAxis : int {
34 None = -1,
35 X = 0,
36 Y = 1,
37 Z = 2,
38 };
39
40public:
41 // member variables
42 // NOLINTBEGIN
43 ::ll::TypedStorage<1, 1, bool> mWasOnGround;
44 ::ll::TypedStorage<1, 1, bool> mNoPhysics;
45 ::ll::TypedStorage<8, 8, ::ActorUniqueID> mOwnerId;
46 ::ll::TypedStorage<4, 12, ::Vec3> mThrownPos;
47 ::ll::TypedStorage<4, 12, ::Vec3> mApexPos;
48 ::ll::TypedStorage<1, 1, bool> mFoundApex;
49 ::ll::TypedStorage<4, 4, int> mLife;
50 ::ll::TypedStorage<4, 4, int> mFlightTime;
51 ::ll::TypedStorage<4, 4, int> mOnGroundTime;
52 ::ll::TypedStorage<4, 4, int> mShakeTime;
53 ::ll::TypedStorage<4, 12, ::BlockPos> mBlock;
54 ::ll::TypedStorage<4, 12, ::BlockPos> mStuckToBlockPos;
55 ::ll::TypedStorage<4, 12, ::Vec3> mCollisionPos;
56 ::ll::TypedStorage<4, 4, int> mEnchantPower;
57 ::ll::TypedStorage<4, 4, int> mEnchantImpaler;
58 ::ll::TypedStorage<8, 112, ::HitResult> mHitResult;
59 ::ll::TypedStorage<1, 1, uchar> mHitFacing;
60 ::ll::TypedStorage<1, 1, bool> mReflect;
61 ::ll::TypedStorage<4, 4, int> mReflectImmunityTicks;
62 ::ll::TypedStorage<4, 4, float> mPower;
63 ::ll::TypedStorage<4, 4, float> mDamage;
64 ::ll::TypedStorage<4, 12, ::Vec3> mOffset;
65 ::ll::TypedStorage<4, 4, ::ParticleType> mHitParticle;
66 ::ll::TypedStorage<4, 4, float> mGravity;
67 ::ll::TypedStorage<4, 4, float> mUpwardsAngleOffset;
68 ::ll::TypedStorage<8, 24, ::std::vector<::OnHitSubcomponent*>> mOnHitCommands;
69 ::ll::TypedStorage<8, 104, ::ActorDefinitionTrigger> mOnHitEvent;
70 ::ll::TypedStorage<4, 4, float> mUncertaintyBase;
71 ::ll::TypedStorage<4, 4, float> mUncertaintyMultiplier;
72 ::ll::TypedStorage<4, 4, ::ActorType> mFilterType;
73 ::ll::TypedStorage<4, 4, float> mOnFireTime;
74 ::ll::TypedStorage<4, 4, int> mPotionEffect;
75 ::ll::TypedStorage<4, 4, float> mSplashRange;
76 ::ll::TypedStorage<1, 1, bool> mKnockback;
77 ::ll::TypedStorage<4, 4, float> mKnockbackForce;
78 ::ll::TypedStorage<1, 1, bool> mCatchFire;
79 ::ll::TypedStorage<1, 1, bool> mChanneling;
80 ::ll::TypedStorage<1, 1, bool> mIsSplash;
81 ::ll::TypedStorage<4, 4, float> mInertiaMod;
82 ::ll::TypedStorage<4, 4, float> mLiquidInertia;
83 ::ll::TypedStorage<1, 1, bool> mSemiRandomDiffDamage;
84 ::ll::TypedStorage<4, 4, ::ProjectileAnchor> mSpawnPosAnchor;
85 ::ll::TypedStorage<4, 4, ::SharedTypes::Legacy::LevelSoundEvent> mHitEntitySound;
86 ::ll::TypedStorage<4, 4, ::SharedTypes::Legacy::LevelSoundEvent> mHitGroundSound;
87 ::ll::TypedStorage<4, 4, ::SharedTypes::Legacy::LevelSoundEvent> mShootSound;
88 ::ll::TypedStorage<1, 1, bool> mIsDangerous;
89 ::ll::TypedStorage<1, 1, bool> mShootTarget;
90 ::ll::TypedStorage<1, 1, bool> mDamageOwner;
91 ::ll::TypedStorage<1, 1, bool> mReflectOnHurt;
92 ::ll::TypedStorage<1, 1, bool> mDestroyOnHurt;
93 ::ll::TypedStorage<1, 1, bool> mStopOnHurt;
94 ::ll::TypedStorage<1, 1, bool> mCritParticleOnHurt;
95 ::ll::TypedStorage<1, 1, bool> mHitWater;
96 ::ll::TypedStorage<1, 1, bool> mHitActor;
97 ::ll::TypedStorage<1, 1, bool> mMultipleHits;
98 ::ll::TypedStorage<4, 4, int> mPiercingEnchantLevel;
99 ::ll::TypedStorage<4, 4, int> mActorHitCount;
100 ::ll::TypedStorage<8, 24, ::std::vector<::ActorType>> mIgnoredEntities;
101 ::ll::TypedStorage<1, 1, bool> mHitNearestPassenger;
102 ::ll::TypedStorage<1, 1, bool> mIsHoming;
103 ::ll::TypedStorage<8, 8, ::ActorUniqueID> mPendingTargetID;
104 ::ll::TypedStorage<8, 40, ::TempEPtr<::Actor>> mTarget;
105 ::ll::TypedStorage<8, 8, ::ActorUniqueID> mTargetID;
106 ::ll::TypedStorage<4, 12, ::Vec3> mTargetDelta;
107 ::ll::TypedStorage<4, 4, int> mFlightSteps;
108 ::ll::TypedStorage<4, 4, ::ProjectileComponent::EAxis> mCurrentMoveDirection;
109 ::ll::TypedStorage<8, 8, ::ActorUniqueID> mLastReflectActor;
110 ::ll::TypedStorage<1, 1, bool> mShouldBounce;
111 ::ll::TypedStorage<4, 4, uint> mCurrentDelay;
112 ::ll::TypedStorage<1, 1, bool> mWaitingForServer;
113 ::ll::TypedStorage<1, 1, bool> mWaitingForServerHitGround;
114 ::ll::TypedStorage<8, 112, ::HitResult> mCachedHitResult;
115 ::ll::TypedStorage<1, 1, bool> mDelayOneFrame;
116 // NOLINTEND
117
118public:
119 // prevent constructor by default
120 ProjectileComponent& operator=(ProjectileComponent const&);
121
122public:
123 // member functions
124 // NOLINTBEGIN
125 MCAPI ProjectileComponent();
126
128
130
131 MCAPI ::std::tuple<::BlockPos, float>
132 _getInitialTargetParams(::Actor const& owner, ::TempEPtr<::Actor> target) const;
133
134 MCAPI void _handleLightningOnHit(::Actor& owner);
135
136 MCAPI void _selectNextMoveDirection(::Actor const& owner, ::ProjectileComponent::EAxis avoidAxis);
137
138 MCAPI bool _tryReflect(::Actor& owner, ::Level& level);
139
140 MCAPI void addAdditionalSaveData(::CompoundTag& tag) const;
141
142 MCAPI ::HitResult getCachedHitResult() const;
143
144 MCAPI ::HitResult getHitResult() const;
145
146 MCAPI ::Vec3 getShooterAngle(::Actor& shooter) const;
147
148 MCAPI float getUncertainty(::SharedTypes::Legacy::Difficulty diff) const;
149
150 MCAPI void handleMovementGravity(::Actor& owner);
151
152 MCAPI void handleMovementHoming(::Actor& owner);
153
154 MCAPI void hurt(::Actor& owner, ::ActorDamageSource const& damageSource);
155
156 MCAPI void initFromDefinition(::Actor& owner);
157
158 MCAPI void lerpMotion(::Actor& owner, ::Vec3 const& delta);
159
160 MCAPI void onHit(::Actor& owner, ::HitResult const& res);
161
162 MCAPI ::ProjectileComponent& operator=(::ProjectileComponent&&);
163
164 MCAPI void readAdditionalSaveData(::Actor& tag, ::CompoundTag const& dataLoadHelper, ::DataLoadHelper&);
165
166 MCAPI void setHitResult(::HitResult result);
167
168 MCAPI void shoot(::Actor& owner, ::Actor& shooter);
169
170 MCAPI void
171 shoot(::Actor& owner, ::Vec3 const& dir, float pow, float uncertainty, ::Vec3 const& baseSpeed, ::Actor* target);
172
173 MCAPI ~ProjectileComponent();
174 // NOLINTEND
175
176public:
177 // static functions
178 // NOLINTBEGIN
179 MCAPI static ::Vec2 dampenShooterAngle(::Vec2 const& angle, float angleOffset, ::BaseGameVersion const& currVer);
180 // NOLINTEND
181
182public:
183 // static variables
184 // NOLINTBEGIN
185 MCAPI static uint const& DELAY_ON_HIT();
186 // NOLINTEND
187
188public:
189 // constructor thunks
190 // NOLINTBEGIN
191 MCAPI void* $ctor();
192
193 MCAPI void* $ctor(::ProjectileComponent&&);
194
195 MCAPI void* $ctor(::ProjectileComponent const&);
196 // NOLINTEND
197
198public:
199 // destructor thunk
200 // NOLINTBEGIN
201 MCAPI void $dtor();
202 // NOLINTEND
203};
Definition ActorDamageSource.h:18
Definition ActorDefinitionTrigger.h:5
Definition Actor.h:104
Definition BaseGameVersion.h:13
Definition BlockPos.h:18
Definition CompoundTag.h:13
Definition DataLoadHelper.h:20
Definition HitResult.h:19
Definition Level.h:234
Definition OnHitSubcomponent.h:12
Definition ProjectileComponent.h:30
Definition TempEPtr.h:6
Definition Vec2.h:5
Definition Vec3.h:10
Definition ActorUniqueID.h:5