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

#define BEFORE_EXTRA
// Include Headers or Declare Types Here
#include "StructureBlockPalette.hpp"
#undef BEFORE_EXTRA

class StructureTemplateData {

#define AFTER_EXTRA
    // Add Member There
private:
    void* __vftable;
    int mFormatVersion;
    BlockPos mSize;
    BlockPos mStructureWorldOrigin;
    std::vector<int> mBlockIndices;
    std::vector<int> mExtraBlockIndices;
    std::unordered_map<std::string, StructureBlockPalette> mPalettes;
    std::vector<std::unique_ptr<CompoundTag>> mEntityData;
public:
    inline BlockPos const & getSize() const{
        return mSize;
    };
#undef AFTER_EXTRA
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_STRUCTURETEMPLATEDATA
public:
    class StructureTemplateData& operator=(class StructureTemplateData const &) = delete;
    StructureTemplateData(class StructureTemplateData const &) = delete;
    StructureTemplateData() = delete;
#endif

public:
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_STRUCTURETEMPLATEDATA
#endif
    MCAPI class StructureBlockPalette const * getPalette(std::string const &) const;
    MCAPI bool load(class CompoundTag const &);
    MCAPI std::unique_ptr<class CompoundTag> save() const;
    MCAPI static std::string const DEFAULT_PALETTE_NAME;

//protected:
    MCAPI enum StructureLoadResult _parseBlockIndices(class CompoundTag const &);
    MCAPI enum StructureLoadResult _parseEntities(class CompoundTag const &);
    MCAPI enum StructureLoadResult _parseFormatVersion(class CompoundTag const &);
    MCAPI enum StructureLoadResult _parsePalettes(class CompoundTag const &);
    MCAPI enum StructureLoadResult _parseSize(class CompoundTag const &);
    MCAPI enum StructureLoadResult _parseStructureWorldOrigin(class CompoundTag const &);
    MCAPI void _saveBlockIndices(class CompoundTag &) const;
    MCAPI void _savePalettes(class CompoundTag &) const;
    MCAPI void _saveStructureTag(class CompoundTag &) const;

//private:
    MCAPI void _contentErrorMissingField(std::string const &) const;

protected:

private:

};