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

#define BEFORE_EXTRA
template<class T, class T1, int T2>
class SimpleServerNetId {
public:
    SimpleServerNetId() = delete;
    SimpleServerNetId(SimpleServerNetId const&) = delete;
    SimpleServerNetId(SimpleServerNetId const&&) = delete;
};
#undef BEFORE_EXTRA

class Item {

#define AFTER_EXTRA
public:
    inline std::string const & getFullItemName() const{
        //ItemRegistry::registerItem Line25
        return dAccess<std::string>(this,216);
    };
#undef AFTER_EXTRA
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_ITEM
public:
    class Item& operator=(class Item const &) = delete;
    Item(class Item const &) = delete;
    Item() = delete;
#endif

public:
    /*0*/ virtual ~Item();
    /*1*/ virtual void tearDown();
    /*2*/ virtual int getMaxUseDuration(class ItemInstance const *) const;
    /*3*/ virtual int getMaxUseDuration(class ItemStack const *) const;
    /*4*/ virtual bool isExperimental(class ItemDescriptor const *) const;
    /*5*/ virtual void __unk_vfn_5();
    /*6*/ virtual class Item & setMaxStackSize(unsigned char);
    /*7*/ virtual class Item & setCategory(enum CreativeItemCategory);
    /*8*/ virtual class Item & setStackedByData(bool);
    /*9*/ virtual class Item & setMaxDamage(int);
    /*10*/ virtual class Item & setHandEquipped();
    /*11*/ virtual class Item & setUseAnimation(enum UseAnimation);
    /*12*/ virtual class Item & setMaxUseDuration(int);
    /*13*/ virtual class Item & setRequiresWorldBuilder(bool);
    /*14*/ virtual class Item & setExplodable(bool);
    /*15*/ virtual class Item & setFireResistant(bool);
    /*16*/ virtual class Item & setIsGlint(bool);
    /*17*/ virtual class Item & setShouldDespawn(bool);
    /*18*/ virtual enum BlockShape getBlockShape() const;
    /*19*/ virtual bool canBeDepleted() const;
    /*20*/ virtual bool canDestroySpecial(class Block const &) const;
    /*21*/ virtual int getLevelDataForAuxValue(int) const;
    /*22*/ virtual bool isStackedByData() const;
    /*23*/ virtual short getMaxDamage() const;
    /*24*/ virtual int getAttackDamage() const;
    /*25*/ virtual bool isHandEquipped() const;
    /*26*/ virtual void __unk_vfn_26();
    /*27*/ virtual void __unk_vfn_27();
    /*28*/ virtual bool isFertilizer(int) const;
    /*29*/ virtual bool isGlint(class ItemStackBase const &) const;
    /*30*/ virtual bool isThrowable() const;
    /*31*/ virtual void __unk_vfn_31();
    /*32*/ virtual void __unk_vfn_32();
    /*33*/ virtual bool isWearableThroughLootTable(class CompoundTag const *) const;
    /*34*/ virtual void __unk_vfn_34();
    /*35*/ virtual bool isDestructive(int) const;
    /*36*/ virtual bool isLiquidClipItem(int) const;
    /*37*/ virtual void __unk_vfn_37();
    /*38*/ virtual void appendFormattedHovertext(class ItemStackBase const &, class Level &, std::string &, bool) const;
    /*39*/ virtual bool isValidRepairItem(class ItemStackBase const &, class ItemStackBase const &) const;
    /*40*/ virtual int getEnchantSlot() const;
    /*41*/ virtual int getEnchantValue() const;
    /*42*/ virtual int getArmorValue() const;
    /*43*/ virtual void __unk_vfn_43();
    /*44*/ virtual bool isValidAuxValue(int) const;
    /*45*/ virtual int getDamageChance(int) const;
    /*46*/ virtual void __unk_vfn_46();
    /*47*/ virtual void __unk_vfn_47();
    /*48*/ virtual class Color getColor(class CompoundTag const *, class ItemDescriptor const &) const;
    /*49*/ virtual void __unk_vfn_49();
    /*50*/ virtual void __unk_vfn_50();
    /*51*/ virtual void saveAdditionalData(class ItemStackBase const &, class CompoundTag &) const;
    /*52*/ virtual void readAdditionalData(class ItemStackBase &, class CompoundTag const &) const;
    /*53*/ virtual bool isTintable() const;
    /*54*/ virtual int buildIdAux(short, class CompoundTag const *) const;
    /*55*/ virtual class ItemDescriptor buildDescriptor(short, class CompoundTag const *) const;
    /*56*/ virtual class ItemStack & use(class ItemStack &, class Player &) const;
    /*57*/ virtual bool dispense(class BlockSource &, class Container &, int, class Vec3 const &, unsigned char) const;
    /*58*/ virtual enum ItemUseMethod useTimeDepleted(class ItemStack &, class Level *, class Player *) const;
    /*59*/ virtual void releaseUsing(class ItemStack &, class Player *, int) const;
    /*60*/ virtual float getDestroySpeed(class ItemInstance const &, class Block const &) const;
    /*61*/ virtual void hurtEnemy(class ItemInstance &, class Mob *, class Mob *) const;
    /*62*/ virtual void hurtEnemy(class ItemStack &, class Mob *, class Mob *) const;
    /*63*/ virtual bool mineBlock(class ItemInstance &, class Block const &, int, int, int, class Actor *) const;
    /*64*/ virtual bool mineBlock(class ItemStack &, class Block const &, int, int, int, class Actor *) const;
    /*65*/ virtual std::string buildDescriptionId(class ItemDescriptor const &, class CompoundTag const *) const;
    /*66*/ virtual std::string buildEffectDescriptionName(class ItemStackBase const &) const;
    /*67*/ virtual std::string buildCategoryDescriptionName() const;
    /*68*/ virtual void readUserData(class ItemStackBase &, class IDataInput &, class ReadOnlyBinaryStream &) const;
    /*69*/ virtual void writeUserData(class ItemStackBase const &, class IDataOutput &) const;
    /*70*/ virtual unsigned char getMaxStackSize(class ItemDescriptor const &) const;
    /*71*/ virtual bool inventoryTick(class ItemStack &, class Level &, class Actor &, int, bool) const;
    /*72*/ virtual void refreshedInContainer(class ItemStackBase const &, class Level &) const;
    /*73*/ virtual enum CooldownType getCooldownType() const;
    /*74*/ virtual int getCooldownTime() const;
    /*75*/ virtual void fixupOnLoad(class ItemStackBase &) const;
    /*76*/ virtual void fixupOnLoad(class ItemStackBase &, class Level &) const;
    /*77*/ virtual short getDamageValue(class CompoundTag const *) const;
    /*78*/ virtual void setDamageValue(class ItemStackBase &, short) const;
    /*79*/ virtual void __unk_vfn_79();
    /*80*/ virtual void __unk_vfn_80();
    /*81*/ virtual bool isSameItem(class ItemStackBase const &, class ItemStackBase const &) const;
    /*82*/ virtual std::string getInteractText(class Player const &) const;
    /*83*/ virtual int getAnimationFrameFor(class Mob *, bool, class ItemStack const *, bool) const;
    /*84*/ virtual struct Brightness getLightEmission(int) const;
    /*85*/ virtual struct TextureUVCoordinateSet const & getIcon(class ItemStackBase const &, int, bool) const;
    /*86*/ virtual int getIconYOffset() const;
    /*87*/ virtual class Item & setIcon(std::string const &, int);
    /*88*/ virtual class Item & setIcon(struct TextureUVCoordinateSet const &);
    /*89*/ virtual class Item & setIconAtlas(std::string const &, int);
    /*90*/ virtual void __unk_vfn_90();
    /*91*/ virtual void playSoundIncrementally(class ItemInstance const &, class Mob &) const;
    /*92*/ virtual void playSoundIncrementally(class ItemStack const &, class Mob &) const;
    /*93*/ virtual std::string getAuxValuesDescription() const;
    /*94*/ virtual bool _checkUseOnPermissions(class Actor &, class ItemInstance &, unsigned char const &, class BlockPos const &) const;
    /*95*/ virtual bool _checkUseOnPermissions(class Actor &, class ItemStack &, unsigned char const &, class BlockPos const &) const;
    /*96*/ virtual bool _calculatePlacePos(class ItemStack &, class Actor &, unsigned char &, class BlockPos &) const;
    /*97*/ virtual void __unk_vfn_97();
    /*98*/ virtual bool _useOn(class ItemInstance &, class Actor &, class BlockPos, unsigned char, float, float, float) const;
    /*99*/ virtual bool _useOn(class ItemStack &, class Actor &, class BlockPos, unsigned char, float, float, float) const;
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_ITEM
    MCVAPI bool _calculatePlacePos(class ItemInstance &, class Actor &, unsigned char &, class BlockPos &) const;
    MCVAPI bool canBeCharged() const;
    MCVAPI bool canDestroyInCreative() const;
    MCVAPI class Color getBaseColor(class ItemStack const &) const;
    MCVAPI enum InHandUpdateType getInHandUpdateType(class Player const &, class ItemInstance const &, class ItemInstance const &, bool, bool) const;
    MCVAPI enum InHandUpdateType getInHandUpdateType(class Player const &, class ItemStack const &, class ItemStack const &, bool, bool) const;
    MCVAPI class Color getSecondaryColor(class ItemStack const &) const;
    MCVAPI bool isArmor() const;
    MCVAPI bool isComplex() const;
    MCVAPI bool isDye() const;
    MCVAPI bool isMultiColorTinted(class ItemStack const &) const;
    MCVAPI bool isMusicDisk() const;
    MCVAPI bool isPattern() const;
    MCVAPI bool requiresInteract() const;
    MCVAPI bool showsDurabilityInCreative() const;
    MCVAPI bool uniqueAuxValues() const;
#endif
    MCAPI Item(std::string const &, short);
    MCAPI bool allowOffhand() const;
    MCAPI std::string buildDescriptionName(class ItemStackBase const &) const;
    MCAPI std::string const & getCommandName() const;
    MCAPI std::string getSerializedName() const;
    MCAPI bool initServer(class Json::Value &);
    MCAPI class Item & setAllowOffhand(bool);
    MCAPI class Item & setIsMirroredArt(bool);
    MCAPI class Item & setMinRequiredBaseGameVersion(class BaseGameVersion const &);
    MCAPI bool updateCustomBlockEntityTag(class BlockSource &, class ItemStack &, class BlockPos &) const;
    MCAPI bool useOn(class ItemStack &, class Actor &, int, int, int, unsigned char, float, float, float) const;
    MCAPI static std::string const ICON_DESCRIPTION_PREFIX;
    MCAPI static std::string const TAG_DAMAGE;
    MCAPI static void addCreativeItem(class Block const &);
    MCAPI static void addCreativeItem(class Item *, short);
    MCAPI static void addCreativeItem(class ItemInstance const &);
    MCAPI static void addCreativeItem(class ItemStack const &);
    MCAPI static void beginCreativeGroup(std::string const &, class ItemInstance const &);
    MCAPI static void beginCreativeGroup(std::string const &, class Block const *, class CompoundTag const *);
    MCAPI static void beginCreativeGroup(std::string const &, class Item *, short, class CompoundTag const *);
    MCAPI static void beginCreativeGroup(std::string const &, short, short, class CompoundTag const *);
    MCAPI static class std::optional<unsigned __int64> findCreativeEntry(class ItemInstance const &);
    MCAPI static struct TextureUVCoordinateSet const & getIconTextureUVSet(class TextureAtlasItem const &, int, int);
    MCAPI static class TextureAtlasItem const & getTextureItem(std::string const &);
    MCAPI static struct TextureUVCoordinateSet getTextureUVCoordinateSet(std::string const &, int);
    MCAPI static int mActiveCreativeGroup;
    MCAPI static bool mAllowExperimental;
    MCAPI static std::vector<struct CreativeGroupInfo> mCreativeGroupInfo;
    MCAPI static std::vector<class CreativeItemEntry> mCreativeList;
    MCAPI static class std::mutex mCreativeListMutex;
    MCAPI static class std::unordered_map<class SimpleServerNetId<struct CreativeItemNetIdTag, unsigned int, 0>, unsigned __int64, struct std::hash<class SimpleServerNetId<struct CreativeItemNetIdTag, unsigned int, 0>>, struct std::equal_to<class SimpleServerNetId<struct CreativeItemNetIdTag, unsigned int, 0>>, class std::allocator<struct std::pair<class SimpleServerNetId<struct CreativeItemNetIdTag, unsigned int, 0> const, unsigned __int64>>> mCreativeNetIdIndex;
    MCAPI static bool const mGenerateDenyParticleEffect;
    MCAPI static struct TextureUVCoordinateSet mInvalidTextureUVCoordinateSet;
    MCAPI static bool mIsClientInitializingCreativeItems;
    MCAPI static class std::weak_ptr<class AtlasItemManager> mItemTextureItems;
    MCAPI static class BaseGameVersion mWorldBaseGameVersion;

//protected:
    MCAPI void _helpChangeInventoryItemInPlace(class Actor &, class ItemStack &, class ItemStack &, enum ItemAcquisitionMethod) const;
    MCAPI float destroySpeedBonus(class ItemInstance const &) const;

protected:

};