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

#define BEFORE_EXTRA

#undef BEFORE_EXTRA

class NpcComponent {

#define AFTER_EXTRA

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

public:
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_NPCCOMPONENT
#endif
    MCAPI NpcComponent(class NpcComponent &&);
    MCAPI void addAdditionalSaveData(class Actor &, class CompoundTag &) const;
    MCAPI void executeCommandAction(class Actor &, int);
    MCAPI std::vector<int> getButtonCounts() const;
    MCAPI void getUpdatedActions(std::string const &, std::vector<std::unique_ptr<class NpcAction>> &, bool &, bool &);
    MCAPI void handleNpcRequest(class Actor &, class Player const &, class NpcRequestPacket const &);
    MCAPI void initClientOnlyData(class Actor &);
    MCAPI void initFromDefinition(class Actor &);
    MCAPI void loadActions(class Actor &);
    MCAPI void loadInteractiveRawText(class Actor &);
    MCAPI void loadNameRawText(class Actor &);
    MCAPI class NpcComponent & operator=(class NpcComponent &&);
    MCAPI void readAdditionalSaveData(class Actor &, class CompoundTag const &, class DataLoadHelper &);
    MCAPI void setInteractiveText(class Actor &, std::string const &, bool);
    MCAPI void setName(class Actor &, std::string const &, bool);
    MCAPI void setSkinIndex(class Actor &, int, bool);

//private:
    MCAPI void _defineEntityDataString(class Actor &, enum ActorDataIDs);
    MCAPI void _deserializeData();
    MCAPI void _loadActions(std::vector<std::unique_ptr<class NpcAction>> &, std::string const &) const;
    MCAPI void _loadData(class Actor &);
    MCAPI void _sendNpcRequest(class Actor &, class NpcRequestPacket) const;
    MCAPI std::string _serializeActions() const;

private:
    MCAPI static std::string const ACTIONS_TAG;
    MCAPI static std::string const INTERACTIVE_TAG;
    MCAPI static std::string const NAME_RAW_TEXT_TAG;
    MCAPI static std::string const URL_TAG;

};