// This Header is auto generated by BDSLiteLoader Toolchain
#pragma once
#define AUTO_GENERATED
#include "../Global.h"
#include "Actor.hpp"

#define BEFORE_EXTRA

#undef BEFORE_EXTRA

class Mob : public Actor {

#define AFTER_EXTRA
// Add Member There
public:
struct JumpPreventionResult {
    JumpPreventionResult() = delete;
    JumpPreventionResult(JumpPreventionResult const&) = delete;
    JumpPreventionResult(JumpPreventionResult const&&) = delete;
};
enum TravelType;

public:

    LIAPI bool refreshInventory();
    inline bool isGliding(){
        return getStatusFlag(ActorFlags::GLIDING);
    }
    inline bool getDead(){
        //mob::die Line83
        return dAccess<bool>(this,1850);
    };

#undef AFTER_EXTRA
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_MOB
public:
    class Mob& operator=(class Mob const &) = delete;
    Mob(class Mob const &) = delete;
    Mob() = delete;
#endif

public:
    /*0*/ virtual bool hasComponent(class HashedString const &) const;
    /*1*/ virtual void reloadHardcoded(enum Actor::InitializationMethod, class VariantParameterList const &);
    /*2*/ virtual void reloadHardcodedClient(enum Actor::InitializationMethod, class VariantParameterList const &);
    /*3*/ virtual void initializeComponents(enum Actor::InitializationMethod, class VariantParameterList const &);
    /*6*/ virtual void _doInitialMove();
    /*7*/ virtual ~Mob();
    /*21*/ virtual float getInterpolatedBodyRot(float) const;
    /*22*/ virtual float getInterpolatedHeadRot(float) const;
    /*23*/ virtual float getInterpolatedBodyYaw(float) const;
    /*24*/ virtual float getYawSpeedInDegreesPerSecond() const;
    /*30*/ virtual void __unk_vfn_30();
    /*31*/ virtual void blockedByShield(class ActorDamageSource const &, class Actor &);
    /*33*/ virtual void teleportTo(class Vec3 const &, bool, int, int, struct ActorUniqueID const &);
    /*36*/ virtual void lerpTo(class Vec3 const &, class Vec2 const &, int);
    /*39*/ virtual void normalTick();
    /*40*/ virtual void baseTick();
    /*41*/ virtual void rideTick();
    /*44*/ virtual bool startRiding(class Actor &);
    /*45*/ virtual void addRider(class Actor &);
    /*54*/ virtual void __unk_vfn_54();
    /*61*/ virtual void __unk_vfn_61();
    /*76*/ virtual void __unk_vfn_76();
    /*81*/ virtual void __unk_vfn_81();
    /*85*/ virtual bool isImmobile() const;
    /*87*/ virtual bool isPickable();
    /*88*/ virtual void __unk_vfn_88();
    /*89*/ virtual bool isSleeping() const;
    /*90*/ virtual void __unk_vfn_90();
    /*93*/ virtual bool isBlocking() const;
    /*95*/ virtual bool isAlive() const;
    /*98*/ virtual void __unk_vfn_98();
    /*99*/ virtual bool isSurfaceMob() const;
    /*100*/ virtual void __unk_vfn_100();
    /*102*/ virtual void setTarget(class Actor *);
    /*105*/ virtual bool attack(class Actor &);
    /*117*/ virtual bool canPowerJump() const;
    /*119*/ virtual bool isJumping() const;
    /*121*/ virtual void __unk_vfn_121();
    /*125*/ virtual enum ActorDamageCause getBlockDamageCause(class Block const &) const;
    /*126*/ virtual void actuallyHurt(int, class ActorDamageSource const &, bool);
    /*127*/ virtual void animateHurt();
    /*128*/ virtual bool doFireHurt(int);
    /*132*/ virtual void handleEntityEvent(enum ActorEvent, int);
    /*145*/ virtual enum ArmorMaterialType getArmorMaterialTypeInSlot(enum ArmorSlot) const;
    /*146*/ virtual enum ArmorTextureType getArmorMaterialTextureTypeInSlot(enum ArmorSlot) const;
    /*147*/ virtual float getArmorColorInSlot(enum ArmorSlot, int) const;
    /*148*/ virtual void setEquippedSlot(enum ArmorSlot, int, int);
    /*149*/ virtual void setEquippedSlot(enum ArmorSlot, class ItemStack const &);
    /*162*/ virtual void setOnFire(int);
    /*169*/ virtual void __unk_vfn_169();
    /*173*/ virtual void causeFallDamage(float);
    /*180*/ virtual bool canBePulledIntoVehicle() const;
    /*181*/ virtual bool inCaravan() const;
    /*182*/ virtual void __unk_vfn_182();
    /*186*/ virtual void stopRiding(bool, bool, bool);
    /*189*/ virtual void buildDebugInfo(std::string &) const;
    /*193*/ virtual int getDeathTime() const;
    /*204*/ virtual void swing();
    /*206*/ virtual void __unk_vfn_206();
    /*207*/ virtual void __unk_vfn_207();
    /*211*/ virtual float getYHeadRot() const;
    /*228*/ virtual void __unk_vfn_228();
    /*231*/ virtual void __unk_vfn_231();
    /*232*/ virtual void kill();
    /*233*/ virtual void die(class ActorDamageSource const &);
    /*235*/ virtual void updateEntitySpecificMolangVariables(class RenderParams &);
    /*238*/ virtual void __unk_vfn_238();
    /*239*/ virtual void outOfWorld();
    /*240*/ virtual bool _hurt(class ActorDamageSource const &, int, bool, bool);
    /*242*/ virtual void readAdditionalSaveData(class CompoundTag const &, class DataLoadHelper &);
    /*243*/ virtual void addAdditionalSaveData(class CompoundTag &);
    /*244*/ virtual void _playStepSound(class BlockPos const &, class Block const &);
    /*246*/ virtual void __unk_vfn_246();
    /*255*/ virtual void _removeRider(struct ActorUniqueID const &, bool, bool, bool);
    /*256*/ virtual void _onSizeUpdated();
    /*257*/ virtual void __unk_vfn_257();
    /*258*/ virtual void knockback(class Actor *, int, float, float, float, float, float);
    /*259*/ virtual void resolveDeathLoot(int, class ActorDamageSource const &);
    /*260*/ virtual void spawnAnim();
    /*261*/ virtual void setSleeping(bool);
    /*262*/ virtual bool isSprinting() const;
    /*263*/ virtual void setSprinting(bool);
    /*264*/ virtual void playAmbientSound();
    /*265*/ virtual enum LevelSoundEvent getAmbientSound();
    /*266*/ virtual int getAmbientSoundPostponeTicks();
    /*267*/ virtual int getAmbientSoundPostponeTicksRange();
    /*268*/ virtual struct TextureUVCoordinateSet const * getItemInHandIcon(class ItemStack const &, int);
    /*269*/ virtual float getSpeed() const;
    /*270*/ virtual void setSpeed(float);
    /*271*/ virtual float getJumpPower() const;
    /*272*/ virtual bool hurtEffects(class ActorDamageSource const &, int, bool, bool);
    /*273*/ virtual int getMeleeWeaponDamageBonus(class Mob *);
    /*274*/ virtual int getMeleeKnockbackBonus();
    /*275*/ virtual void travel(float, float, float);
    /*276*/ virtual void applyFinalFriction(float, bool);
    /*277*/ virtual void updateWalkAnim();
    /*278*/ virtual void aiStep();
    /*279*/ virtual void pushActors();
    /*280*/ virtual void lookAt(class Actor *, float, float);
    /*281*/ virtual bool isLookingAtAnEntity();
    /*282*/ virtual bool checkSpawnRules(bool);
    /*283*/ virtual bool checkSpawnObstruction() const;
    /*284*/ virtual float getAttackAnim(float);
    /*285*/ virtual int getItemUseDuration();
    /*286*/ virtual float getItemUseStartupProgress();
    /*287*/ virtual float getItemUseIntervalProgress();
    /*288*/ virtual int getItemuseIntervalAxis();
    /*289*/ virtual int getTimeAlongSwing();
    /*290*/ virtual void __unk_vfn_290();
    /*291*/ virtual float getMaxHeadXRot();
    /*292*/ virtual class Mob * getLastHurtByMob();
    /*293*/ virtual void setLastHurtByMob(class Mob *);
    /*294*/ virtual class Player * getLastHurtByPlayer();
    /*295*/ virtual void setLastHurtByPlayer(class Player *);
    /*296*/ virtual class Mob * getLastHurtMob();
    /*297*/ virtual void setLastHurtMob(class Actor *);
    /*298*/ virtual bool isAlliedTo(class Mob *);
    /*299*/ virtual bool doHurtTarget(class Actor *);
    /*300*/ virtual void __unk_vfn_300();
    /*301*/ virtual void leaveCaravan();
    /*302*/ virtual void joinCaravan(class Mob *);
    /*303*/ virtual bool hasCaravanTail() const;
    /*304*/ virtual struct ActorUniqueID getCaravanHead() const;
    /*305*/ virtual int getArmorValue();
    /*306*/ virtual float getArmorCoverPercentage() const;
    /*307*/ virtual void hurtArmor(class ActorDamageSource const &, int);
    /*308*/ virtual void setDamagedArmor(enum ArmorSlot, class ItemStack const &);
    /*309*/ virtual void sendArmorDamage(class std::bitset<4> const &);
    /*310*/ virtual void sendArmor(class std::bitset<4> const &);
    /*311*/ virtual void containerChanged(int);
    /*312*/ virtual void updateEquipment();
    /*313*/ virtual int clearEquipment();
    /*314*/ virtual std::vector<class ItemStack const *> getAllArmor() const;
    /*315*/ virtual std::vector<int> getAllArmorID() const;
    /*316*/ virtual std::vector<class ItemStack const *> getAllHand() const;
    /*317*/ virtual std::vector<class ItemStack const *> getAllEquipment() const;
    /*318*/ virtual int getArmorTypeHash();
    /*319*/ virtual void dropEquipment(class ActorDamageSource const &, int);
    /*320*/ virtual void dropEquipment();
    /*321*/ virtual void clearVanishEnchantedItems();
    /*322*/ virtual void sendInventory(bool);
    /*323*/ virtual int getDamageAfterMagicAbsorb(class ActorDamageSource const &, int);
    /*324*/ virtual bool createAIGoals();
    /*325*/ virtual void onBorn(class Actor &, class Actor &);
    /*326*/ virtual bool setItemSlot(enum EquipmentSlot, class ItemStack const &);
    /*327*/ virtual void setTransitioningSitting(bool);
    /*328*/ virtual void attackAnimation(class Actor *, float);
    /*329*/ virtual int getAttackTime();
    /*330*/ virtual float _getWalkTargetValue(class BlockPos const &);
    /*331*/ virtual bool canExistWhenDisallowMob() const;
    /*332*/ virtual void __unk_vfn_332();
    /*333*/ virtual void ascendLadder();
    /*334*/ virtual void ascendScaffolding();
    /*335*/ virtual void descendScaffolding();
    /*336*/ virtual std::unique_ptr<class BodyControl> initBodyControl();
    /*337*/ virtual void jumpFromGround();
    /*338*/ virtual void updateAi();
    /*339*/ virtual void newServerAiStep();
    /*340*/ virtual void _serverAiMobStep();
    /*341*/ virtual int getDamageAfterEnchantReduction(class ActorDamageSource const &, int);
    /*342*/ virtual int getDamageAfterArmorAbsorb(class ActorDamageSource const &, int);
    /*343*/ virtual void dropBags();
    /*344*/ virtual void dropContainer();
    /*345*/ virtual void tickDeath();
    /*346*/ virtual void _endJump();
    /*347*/ virtual void updateGliding();
    /*348*/ virtual void __unk_vfn_348();
    /*349*/ virtual bool isDarkEnoughToSpawn() const;
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_MOB
    MCVAPI bool _allowAscendingScaffolding() const;
    MCVAPI void ate();
    MCVAPI bool canBeControlledByRider();
    MCVAPI bool isShootable();
    MCVAPI void renderDebugServerState(class Options const &);
    MCVAPI bool useNewAi() const;
#endif
    MCAPI Mob(class ActorDefinitionGroup *, struct ActorDefinitionIdentifier const &);
    MCAPI Mob(class Level &);
    MCAPI void _updateMobTravel();
    MCAPI float calcMoveRelativeSpeed(enum Mob::TravelType);
    MCAPI bool checkTotemDeathProtection(class ActorDamageSource const &);
    MCAPI void emitJumpPreventedEvent(class BlockPos const &);
    MCAPI void frostWalk();
    MCAPI int getCaravanSize() const;
    MCAPI class Mob * getFirstCaravanHead();
    MCAPI class ItemStack const & getItemSlot(enum EquipmentSlot) const;
    MCAPI float getJumpMultiplier();
    MCAPI struct Mob::JumpPreventionResult getJumpPrevention();
    MCAPI enum Mob::TravelType getTravelType();
    MCAPI void resetAttributes();
    MCAPI void sendArmorSlot(enum ArmorSlot);
    MCAPI void setEatCounter(int);
    MCAPI void setIsPregnant(bool);
    MCAPI bool shouldApplyWaterGravity();
    MCAPI static float const PLAYER_SWIMMING_SURFACE_OFFSET;
    MCAPI static int const TOTAL_ROLL_STEPS;

//protected:
    MCAPI void _applyRidingRotationLimits();
    MCAPI void _doSoulSpeedParticleEffect();
    MCAPI void _doSprintParticleEffect();
    MCAPI void _registerMobAttributes();
    MCAPI void calculateAmbientSoundTime(int);
    MCAPI int getCurrentSwingDuration();
    MCAPI void processSoulSpeed();
    MCAPI std::unique_ptr<class ListTag> saveOffhand() const;
    MCAPI void tickEffects();
    MCAPI void updateAttackAnim();
    MCAPI bool updateGlidingDurability();

//private:
    MCAPI bool _initHardCodedComponents();
    MCAPI bool _isHeadInWater();
    MCAPI void _loadArmor(class ListTag const *);
    MCAPI bool _tryApplyingLevitation(class Vec3 &) const;
    MCAPI void _verifyAttributes();

protected:

private:

};