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

#define BEFORE_EXTRA

#undef BEFORE_EXTRA

class EnderDragon : public Monster {

#define AFTER_EXTRA

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

public:
    /*1*/ virtual void reloadHardcoded(enum Actor::InitializationMethod, class VariantParameterList const &);
    /*7*/ virtual ~EnderDragon();
    /*11*/ virtual void remove();
    /*30*/ virtual void __unk_vfn_30();
    /*54*/ virtual void __unk_vfn_54();
    /*61*/ virtual void __unk_vfn_61();
    /*74*/ virtual float getShadowRadius() const;
    /*75*/ virtual class Vec3 getHeadLookVector(float);
    /*76*/ virtual void __unk_vfn_76();
    /*81*/ virtual void __unk_vfn_81();
    /*85*/ virtual bool isImmobile() const;
    /*88*/ virtual void __unk_vfn_88();
    /*90*/ virtual void __unk_vfn_90();
    /*98*/ virtual void __unk_vfn_98();
    /*100*/ virtual void __unk_vfn_100();
    /*110*/ virtual void setSitting(bool);
    /*121*/ virtual void __unk_vfn_121();
    /*124*/ virtual bool isInvulnerableTo(class ActorDamageSource const &) const;
    /*132*/ virtual void handleEntityEvent(enum ActorEvent, int);
    /*168*/ virtual bool canChangeDimensions() const;
    /*169*/ virtual void __unk_vfn_169();
    /*180*/ virtual bool canBePulledIntoVehicle() const;
    /*182*/ virtual void __unk_vfn_182();
    /*197*/ virtual bool canBeAffected(class MobEffectInstance const &) const;
    /*206*/ virtual void __unk_vfn_206();
    /*207*/ virtual void __unk_vfn_207();
    /*228*/ virtual void __unk_vfn_228();
    /*231*/ virtual void __unk_vfn_231();
    /*238*/ virtual void __unk_vfn_238();
    /*240*/ virtual bool _hurt(class ActorDamageSource const &, int, bool, bool);
    /*246*/ virtual void __unk_vfn_246();
    /*256*/ virtual void _onSizeUpdated();
    /*257*/ virtual void __unk_vfn_257();
    /*278*/ virtual void aiStep();
    /*290*/ virtual void __unk_vfn_290();
    /*300*/ virtual void __unk_vfn_300();
    /*332*/ virtual void __unk_vfn_332();
    /*345*/ virtual void tickDeath();
    /*348*/ virtual void __unk_vfn_348();
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_ENDERDRAGON
    MCVAPI bool canExistInPeaceful() const;
    MCVAPI bool isFishable() const;
#endif
    MCAPI EnderDragon(class ActorDefinitionGroup *, struct ActorDefinitionIdentifier const &);
    MCAPI void dieNaturally();
    MCAPI int findClosestNode();
    MCAPI int findClosestNode(class Vec3 const &);
    MCAPI std::unique_ptr<class Path> findPath(int, int, class PathfinderNode *);
    MCAPI class BlockPos getHeadPos() const;
    MCAPI std::vector<float> const getLatencyPos(int, float) const;
    MCAPI void onCrystalDestroyed(class EnderCrystal const &, class BlockPos, class ActorDamageSource const &);

//protected:
    MCAPI bool _hurt(class AABB *, class ActorDamageSource const &, float);

//private:
    MCAPI void checkCrystals();
    MCAPI bool checkWalls(class AABB);
    MCAPI float getHeadYOffset(float) const;
    MCAPI void hurtEntities(class gsl::span<class gsl::not_null<class Actor *>, -1>) const;
    MCAPI void knockBack(class gsl::span<class gsl::not_null<class Actor *>, -1>) const;
    MCAPI std::unique_ptr<class Path> reconstructPath(class PathfinderNode &, class PathfinderNode &, enum PathCompletionType);

protected:

private:
    MCAPI static int GROWL_INTERVAL_MAX;
    MCAPI static int GROWL_INTERVAL_MIN;
    MCAPI static int MAX_PATH_RADIUS;
    MCAPI static float SITTING_ALLOWED_DAMAGE_PERCENTAGE;

};