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

#define BEFORE_EXTRA

#undef BEFORE_EXTRA

class Village {

#define AFTER_EXTRA

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

public:
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_VILLAGE
#endif
    MCAPI Village(class Dimension &, class mce::UUID, class BlockPos const &);
    MCAPI void addActorToVillage(enum DwellerRole, struct ActorUniqueID const &);
    MCAPI void addAggressor(class Mob const &);
    MCAPI bool addPOI(class std::weak_ptr<class POIInstance>);
    MCAPI bool checkNeedMoreVillagers() const;
    MCAPI void debugDraw();
    MCAPI class std::weak_ptr<class POIInstance> fetchOwnedPOI(struct ActorUniqueID const &, enum POIType);
    MCAPI class std::optional<class BlockPos> findRandomSpawnPos(class BlockSource &, class BlockPos const &, class BlockPos const &);
    MCAPI float getApproximateRadius() const;
    MCAPI unsigned __int64 getBedPOICount() const;
    MCAPI class std::weak_ptr<class POIInstance> getClosestPOI(enum POIType, class BlockPos const &);
    MCAPI int getStanding(struct ActorUniqueID const &);
    MCAPI bool hasSpecificDweller(enum DwellerRole, struct ActorUniqueID const &) const;
    MCAPI void loadDataByKey(std::string const &, class CompoundTag const &);
    MCAPI int modifyStanding(struct ActorUniqueID const &, int);
    MCAPI class std::_List_iterator<class std::_List_val<struct std::_List_simple_types<struct std::pair<struct ActorUniqueID const, struct Tick>>>> removeActorFromVillage(enum DwellerRole, struct ActorUniqueID const &);
    MCAPI void removeVillageSavedData();
    MCAPI void rewardAllPlayers(int);
    MCAPI void tick(struct Tick, class BlockSource &);
    MCAPI bool villagerLivesHere(struct ActorUniqueID const &) const;
    MCAPI bool withinVillageBounds(class Vec3 const &, float) const;
    MCAPI static bool DEBUG_DRAWING;
    MCAPI static std::string const STORAGE_KEY_PREFIX;
    MCAPI static bool isValidRegisteredPOI(class BlockSource &, class BlockPos const &);
    MCAPI static bool isVillagePOI(class BlockSource const &, class BlockPos const &);
    MCAPI static bool isVillagePOI(class VillageManager const &, class Block const &);

//private:
    MCAPI void _addPoiToVillage(struct ActorUniqueID const &, class std::weak_ptr<class POIInstance>);
    MCAPI void _calcPOIDist();
    MCAPI void _claimUnclaimedPOIs();
    MCAPI void _clearVillagerPOIs(struct ActorUniqueID const &);
    MCAPI void _createRaid();
    MCAPI bool _findAvailablePOI(unsigned __int64, class Level &, class Random &, struct ActorUniqueID);
    MCAPI void _findClosestDweller(class Actor *, class Actor *&, float &, class std::unordered_map<struct ActorUniqueID, struct Tick, struct std::hash<struct ActorUniqueID>, struct std::equal_to<struct ActorUniqueID>, class std::allocator<struct std::pair<struct ActorUniqueID const, struct Tick>>> const &) const;
    MCAPI bool _findPlayerCentricSpawnPointForRaid(class Vec3 &, bool) const;
    MCAPI void _findPreferredPOI(std::vector<class std::weak_ptr<class POIInstance>> &, class HashedString const &, struct ActorUniqueID);
    MCAPI bool _findSpawnPointForRaid(class Vec3 &, float, float, bool, bool) const;
    MCAPI class BlockSource * _findSpawnableRegion(class Vec3, int, bool &) const;
    MCAPI void _findWeightedPOI(std::vector<class std::weak_ptr<class POIInstance>> &, class Random &, struct ActorUniqueID);
    MCAPI void _helpLocateRaiders(class Raid const &);
    MCAPI void _loadVillageData(class CompoundTag const &);
    MCAPI void _loadVillageDwellers(class CompoundTag const &);
    MCAPI void _loadVillagePOIs(class CompoundTag const &);
    MCAPI void _loadVillagePlayerStanding(class CompoundTag const &);
    MCAPI void _playSoundFrom(class Vec3 const &, enum LevelSoundEvent);
    MCAPI void _readyRaidGroup(class std::unordered_set<struct ActorUniqueID, struct std::hash<struct ActorUniqueID>, struct std::equal_to<struct ActorUniqueID>, class std::allocator<struct ActorUniqueID>> &);
    MCAPI void _ringBells(class BlockSource &, class Random &) const;
    MCAPI void _saveVillageData() const;
    MCAPI void _saveVillageDwellers() const;
    MCAPI void _saveVillagePOIs() const;
    MCAPI void _saveVillagePlayerStanding() const;
    MCAPI void _saveVillageRaid() const;
    MCAPI void _spawnPassiveDwellers(class BlockSource &, int);
    MCAPI bool _spawnRaidGroup(class Vec3, unsigned char, class std::unordered_set<struct ActorUniqueID, struct std::hash<struct ActorUniqueID>, struct std::equal_to<struct ActorUniqueID>, class std::allocator<struct ActorUniqueID>> &) const;
    MCAPI void _tryShiftStandingsTowardNeutral(struct Tick &, unsigned __int64, bool);
    MCAPI void _trySpawnDefenderDwellers(class BlockSource &, unsigned __int64);
    MCAPI void _updateClaimedPOIs(class BlockSource &);
    MCAPI void _updateUnclaimedPOIs(class BlockSource &);

private:
    MCAPI static std::string const RAIDER_CELEBRATION_EVENT;
    MCAPI static class Vec3 const RAID_BOUNDS_PADDING;
    MCAPI static int const RAID_GROUP_COMPLETE_DELAY_IN_TICKS;
    MCAPI static int const RAID_LOCATION_HELP_DELAY_IN_TICKS;
    MCAPI static unsigned char const RAID_MAX_SPAWN_FAILURES;
    MCAPI static int const RAID_PREP_TIME_IN_TICKS;
    MCAPI static struct Tick const RAID_TIMEOUT_IN_TICKS;
    MCAPI static std::string const STORAGE_KEY_DWELLERS;
    MCAPI static std::string const STORAGE_KEY_PLAYERS;
    MCAPI static std::string const STORAGE_KEY_POI;
    MCAPI static std::string const STORAGE_KEY_RAID;
    MCAPI static std::string const STORAGE_KEY_VILLAGE;

};