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

#define BEFORE_EXTRA

#undef BEFORE_EXTRA

class LevelChunk {

#define AFTER_EXTRA
// Add Member There
public:
enum Finalization : int {
    Requeue = 0x0,
    Done = 0x1,
    Noop = 0x2,
};

class Neighbors {
public:
    Neighbors() = delete;
    Neighbors(Neighbors const&) = delete;
    Neighbors(Neighbors const&&) = delete;
};

enum HardcodedSpawnAreaType : char {
    NONE = 0,
    NETHER_FORTRESS = 1,
    SWAMP_HUT = 2,
    OCEAN_MONUMENT = 3,
    UNKNOWN4 = 4,
    PILLAGER_OUTPOST = 5,
};

struct HardcodedSpawningArea {
    class BoundingBox aabb;
    enum HardcodedSpawnAreaType type;
};
public:
    struct Tick const & getLastTick() const{
        //CommandAreaFactory::_getArea Line156
        return *dAccess<Tick*>(this, 144);
    };
    inline int getHeightmap(const ChunkBlockPos *pos){
        //LevelChunk::_lightingCallbacks Line31 应该是这样的
        auto chunk = pos->x +16 * pos->z;
        return dAccess<int>(this,chunk+1960);
    };
#undef AFTER_EXTRA
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_LEVELCHUNK
public:
    class LevelChunk& operator=(class LevelChunk const &) = delete;
    LevelChunk(class LevelChunk const &) = delete;
    LevelChunk() = delete;
#endif

public:
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_LEVELCHUNK
#endif
    MCAPI LevelChunk(class Dimension &, class ChunkPos const &, bool);
    MCAPI void addEntity(std::unique_ptr<class Actor>);
    MCAPI void addHardcodedSpawningArea(class BoundingBox const &, enum HardcodedSpawnAreaType);
    MCAPI bool applySeasonsPostProcess(class BlockSource &);
    MCAPI void checkBiomeStates();
    MCAPI bool checkSeasonsPostProcessDirty();
    MCAPI void deserializeBlockEntities(class IDataInput &);
    MCAPI void deserializeCheckSums(class IDataInput &);
    MCAPI bool deserializeKey(class gsl::basic_string_span<char const, -1>, class gsl::basic_string_span<char const, -1>);
    MCAPI void fetchBlocks(class BlockPos const &, class BlockVolume &) const;
    MCAPI class BlockPos findLightningTarget(class BlockPos const &, class BlockSource &);
    MCAPI bool generateOriginalLighting(class ChunkViewSource &, bool);
    MCAPI short getAboveTopSolidBlock(class ChunkBlockPos const &, bool, bool, bool);
    MCAPI class Biome & getBiome(class ChunkBlockPos const &) const;
    MCAPI class Block const & getBlock(class ChunkBlockPos const &) const;
    MCAPI class BlockActor * getBlockEntity(class ChunkBlockPos const &);
    MCAPI struct BrightnessPair getBrightness(class ChunkBlockPos const &) const;
    MCAPI signed char getCachedTemperatureNoise(class ChunkBlockPos const &);
    MCAPI void getEntities(class gsl::span<class gsl::not_null<class Actor const *>, -1>, class AABB const &, std::vector<class Actor *> &, bool) const;
    MCAPI void getEntities(enum ActorType, class AABB const &, std::vector<class Actor *> &, bool) const;
    MCAPI class Block const & getExtraBlock(class ChunkBlockPos const &) const;
    MCAPI class BlockPos const getTopRainBlockPos(class ChunkBlockPos const &);
    MCAPI bool hasEntity(class Actor &);
    MCAPI void legacyDeserializeBlockExtraData(class IDataInput &);
    MCAPI void legacyDeserializeTerrain(class IDataInput &);
    MCAPI bool needsSaving(int, int) const;
    MCAPI class LevelChunk & operator=(class LevelChunk &&);
    MCAPI void placeCallbacks(class ChunkBlockPos const &, class Block const &, class Block const &, class BlockSource *, class std::shared_ptr<class BlockActor>);
    MCAPI void recomputeHeightMap(bool);
    MCAPI class std::shared_ptr<class BlockActor> removeBlockEntity(class BlockPos const &);
    MCAPI std::unique_ptr<class Actor> removeEntity(class Actor &);
    MCAPI void removeHardcodedSpawningArea(enum HardcodedSpawnAreaType);
    MCAPI void runtimeRelightSubchunk(class BlockSource &, unsigned __int64, std::vector<struct SubChunkLightUpdate> const &, std::vector<class BlockPos> &);
    MCAPI void serializeBlockEntities(class IDataOutput &) const;
    MCAPI bool serializeBorderBlocks(class IDataOutput &) const;
    MCAPI void serializeCheckSums(class IDataOutput &) const;
    MCAPI void serializeEntities(class IDataOutput &) const;
    MCAPI bool serializeHardcodedSpawners(class IDataOutput &) const;
    MCAPI void serializeRandomTicks(class IDataOutput &) const;
    MCAPI void setAllLegacyBlockIDAndData(class buffer_span<struct BlockID>, class buffer_span<struct NibblePair>);
    MCAPI void setBiome(class Biome const &, class ChunkBlockPos const &);
    MCAPI class Block const & setBlock(class ChunkBlockPos const &, class Block const &, class BlockSource *, class std::shared_ptr<class BlockActor>);
    MCAPI void setBlockVolume(class BlockVolume const &);
    MCAPI void setBorder(class ChunkBlockPos const &, bool);
    MCAPI class Block const & setExtraBlock(class ChunkBlockPos const &, class Block const &, class BlockSource *);
    MCAPI void setPreWorldGenHeightMap(std::unique_ptr<std::vector<short>>);
    MCAPI void setSaved();
    MCAPI void setUnsaved();
    MCAPI void setupRedstoneCircuit(class BlockSource &);
    MCAPI void tick(class BlockSource &, struct Tick const &);
    MCAPI void tickBlockEntities(class BlockSource &);
    MCAPI void tickBlocks(class BlockSource &);
    MCAPI void updateCheckSum(enum LevelChunkTag, class gsl::basic_string_span<char const, -1>, unsigned __int64);
    MCAPI ~LevelChunk();

//protected:
    MCAPI bool _compareCheckSumAgainstExpectedForKey(class std::unordered_map<struct LevelChunkHashMapKey, unsigned __int64, struct std::hash<struct LevelChunkHashMapKey>, struct std::equal_to<struct LevelChunkHashMapKey>, class std::allocator<struct std::pair<struct LevelChunkHashMapKey const, unsigned __int64>>> const &, struct LevelChunkHashMapKey const &) const;
    MCAPI struct SubChunk & _createSubChunk(unsigned __int64, bool, enum SubChunkInitMode);
    MCAPI void _deserializeEntity(class BlockSource &, class IDataInput &, std::vector<struct ActorLink> &);
    MCAPI void _fixupCorruptedBlockActors(class std::unordered_map<class ChunkBlockPos, class std::shared_ptr<class BlockActor>, struct std::hash<class ChunkBlockPos>, struct std::equal_to<class ChunkBlockPos>, class std::allocator<struct std::pair<class ChunkBlockPos const, class std::shared_ptr<class BlockActor>>>> &);
    MCAPI void _generateOriginalLightingSubChunk(class BlockSource &, unsigned __int64, bool);
    MCAPI void _lightingCallbacks(class ChunkBlockPos const &, class Block const &, class Block const &, class BlockSource *);
    MCAPI void _placeBlockEntity(class std::shared_ptr<class BlockActor>);
    MCAPI void _reassignSubChunks(class buffer_span_mut<struct SubChunk>);
    MCAPI bool _recalcHeight(class ChunkBlockPos const &, class BlockSource *);
    MCAPI void _removeCallbacks(class ChunkBlockPos const &, class Block const &, class Block const &, class BlockSource *);

//private:
    MCAPI void _fixupCommandBlocksOnTickingQueue(class BlockSource &);

protected:

private:

};