// 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 WitherBoss : public Monster {

#define AFTER_EXTRA

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

public:
    /*1*/ virtual void reloadHardcoded(enum Actor::InitializationMethod, class VariantParameterList const &);
    /*2*/ virtual void reloadHardcodedClient(enum Actor::InitializationMethod, class VariantParameterList const &);
    /*7*/ virtual ~WitherBoss();
    /*11*/ virtual void remove();
    /*17*/ virtual class Vec3 getFiringPos() const;
    /*30*/ virtual void __unk_vfn_30();
    /*44*/ virtual bool startRiding(class Actor &);
    /*54*/ virtual void __unk_vfn_54();
    /*61*/ virtual void __unk_vfn_61();
    /*71*/ virtual void makeStuckInBlock(float);
    /*76*/ virtual void __unk_vfn_76();
    /*81*/ virtual void __unk_vfn_81();
    /*88*/ virtual void __unk_vfn_88();
    /*90*/ virtual void __unk_vfn_90();
    /*98*/ virtual void __unk_vfn_98();
    /*100*/ virtual void __unk_vfn_100();
    /*121*/ virtual void __unk_vfn_121();
    /*124*/ virtual bool isInvulnerableTo(class ActorDamageSource const &) const;
    /*132*/ virtual void handleEntityEvent(enum ActorEvent, int);
    /*169*/ virtual void __unk_vfn_169();
    /*173*/ virtual void causeFallDamage(float);
    /*182*/ virtual void __unk_vfn_182();
    /*197*/ virtual bool canBeAffected(class MobEffectInstance const &) const;
    /*198*/ virtual bool canBeAffectedByArrow(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();
    /*233*/ virtual void die(class ActorDamageSource const &);
    /*238*/ virtual void __unk_vfn_238();
    /*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 &);
    /*246*/ virtual void __unk_vfn_246();
    /*257*/ virtual void __unk_vfn_257();
    /*272*/ virtual bool hurtEffects(class ActorDamageSource const &, int, bool, bool);
    /*278*/ virtual void aiStep();
    /*290*/ virtual void __unk_vfn_290();
    /*300*/ virtual void __unk_vfn_300();
    /*305*/ virtual int getArmorValue();
    /*332*/ virtual void __unk_vfn_332();
    /*339*/ virtual void newServerAiStep();
    /*348*/ virtual void __unk_vfn_348();
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_WITHERBOSS
#endif
    MCAPI WitherBoss(class ActorDefinitionGroup *, struct ActorDefinitionIdentifier const &);
    MCAPI bool getAerialAttack() const;
    MCAPI struct ActorUniqueID getAlternativeTarget(int);
    MCAPI class Vec3 getHeadPos(int) const;
    MCAPI void setAerialAttack(bool);
    MCAPI void setAlternativeTarget(int, struct ActorUniqueID);
    MCAPI void setInvulnerableTicks(int);
    MCAPI static class mce::UUID const MAX_HEALTH_CAP_UUID;
    MCAPI static bool canDestroy(class Block const &);

//private:
    MCAPI void _performRangedAttack(int, class Actor &);
    MCAPI void _performRangedAttack(int, class Vec3 const &, bool);
    MCAPI bool canShoot();

private:

};