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

#define BEFORE_EXTRA

#undef BEFORE_EXTRA

class Potion {

#define AFTER_EXTRA
public:
     enum PotionType{
         Undefined_9 = 0xFFFFFFFF,
         Regular = 0x0,
         Splash_0 = 0x1,
         Lingering = 0x2,
     };
    enum PotionVariant{
        MOVESLOW = 0x0,
        MOVESPEED = 0x1,
        DIGSLOW = 0x2,
        DIGSPEED = 0x3,
        DAMAGEBOOST = 0x4,
        HEAL = 0x5,
        HARM = 0x6,
        JUMP_0 = 0x7,
        CONFUSION = 0x8,
        REGEN = 0x9,
        RESISTANCE = 0xA,
        FIRERESISTANCE = 0xB,
        WATERBREATH = 0xC,
        INVISIBILITY = 0xD,
        BLINDNESS = 0xE,
        NIGHTVISION = 0xF,
        HUNGER = 0x10,
        WEAKNESS = 0x11,
        POISON = 0x12,
        WITHER = 0x13,
        HEALTHBOOST = 0x14,
        ABSORPTION = 0x15,
        SATURATION = 0x16,
        LEVITATION = 0x17,
        TURTLEMASTER = 0x18,
        SLOWFALL = 0x19,
        BASE = 0x1A,
    };
#undef AFTER_EXTRA
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_POTION
public:
    class Potion& operator=(class Potion const &) = delete;
    Potion(class Potion const &) = delete;
    Potion() = delete;
#endif

public:
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_POTION
#endif
    MCAPI void appendFormattedPotionText(std::string &, enum Potion::PotionType, float) const;
    MCAPI std::string effectDurationToString(enum Potion::PotionType, float, class MobEffectInstance const &) const;
    MCAPI std::string effectPotencyToString(class MobEffectInstance const &) const;
    MCAPI std::string getDescriptionId(enum Potion::PotionType) const;
    MCAPI std::string getPotentencyDescription(enum Potion::PotionType, float) const;
    MCAPI std::string getPotentencyDescription(enum Potion::PotionType, float, std::string const &, class MobEffectInstance const &) const;
    MCAPI int getPotionId() const;
    MCAPI ~Potion();
    MCAPI static class std::shared_ptr<class Potion const> const Awkward;
    MCAPI static class std::shared_ptr<class Potion const> const FireResistance;
    MCAPI static class std::shared_ptr<class Potion const> const Harming;
    MCAPI static class std::shared_ptr<class Potion const> const Healing;
    MCAPI static class std::shared_ptr<class Potion const> const Invisibility;
    MCAPI static class std::shared_ptr<class Potion const> const Leaping;
    MCAPI static class std::shared_ptr<class Potion const> const LongFireResistance;
    MCAPI static class std::shared_ptr<class Potion const> const LongInvisibility;
    MCAPI static class std::shared_ptr<class Potion const> const LongLeaping;
    MCAPI static class std::shared_ptr<class Potion const> const LongMundane;
    MCAPI static class std::shared_ptr<class Potion const> const LongNightvision;
    MCAPI static class std::shared_ptr<class Potion const> const LongPoison;
    MCAPI static class std::shared_ptr<class Potion const> const LongRegeneration;
    MCAPI static class std::shared_ptr<class Potion const> const LongSlowFalling;
    MCAPI static class std::shared_ptr<class Potion const> const LongSlowness;
    MCAPI static class std::shared_ptr<class Potion const> const LongStrength;
    MCAPI static class std::shared_ptr<class Potion const> const LongSwiftness;
    MCAPI static class std::shared_ptr<class Potion const> const LongTurtleMaster;
    MCAPI static class std::shared_ptr<class Potion const> const LongWaterBreathing;
    MCAPI static class std::shared_ptr<class Potion const> const LongWeakness;
    MCAPI static class std::shared_ptr<class Potion const> const Mundane;
    MCAPI static class std::shared_ptr<class Potion const> const Nightvision;
    MCAPI static class std::shared_ptr<class Potion const> const Poison;
    MCAPI static class std::shared_ptr<class Potion const> const Regeneration;
    MCAPI static class std::shared_ptr<class Potion const> const SlowFalling;
    MCAPI static class std::shared_ptr<class Potion const> const Slowness;
    MCAPI static class std::shared_ptr<class Potion const> const Strength;
    MCAPI static class std::shared_ptr<class Potion const> const StrongHarming;
    MCAPI static class std::shared_ptr<class Potion const> const StrongHealing;
    MCAPI static class std::shared_ptr<class Potion const> const StrongLeaping;
    MCAPI static class std::shared_ptr<class Potion const> const StrongPoison;
    MCAPI static class std::shared_ptr<class Potion const> const StrongRegeneration;
    MCAPI static class std::shared_ptr<class Potion const> const StrongSlowness;
    MCAPI static class std::shared_ptr<class Potion const> const StrongStrength;
    MCAPI static class std::shared_ptr<class Potion const> const StrongSwiftness;
    MCAPI static class std::shared_ptr<class Potion const> const StrongTurtleMaster;
    MCAPI static class std::shared_ptr<class Potion const> const Swiftness;
    MCAPI static class std::shared_ptr<class Potion const> const Thick;
    MCAPI static class std::shared_ptr<class Potion const> const TurtleMaster;
    MCAPI static class std::shared_ptr<class Potion const> const Water;
    MCAPI static class std::shared_ptr<class Potion const> const WaterBreathing;
    MCAPI static class std::shared_ptr<class Potion const> const Weakness;
    MCAPI static class std::shared_ptr<class Potion const> const Wither;
    MCAPI static class std::shared_ptr<class Potion const> getPotion(int);
    MCAPI static class std::shared_ptr<class Potion const> getPotion(std::string const &);
    MCAPI static void initPotions();

//private:
    MCAPI Potion(std::string const &, std::vector<std::string>, std::vector<class MobEffectInstance>, enum Potion::PotionVariant);
    MCAPI static void addPotion(class std::shared_ptr<class Potion const>);

private:
    MCAPI static int mLastId;
    MCAPI static class std::shared_ptr<class Potion const> mPotionsById[];
    MCAPI static class std::unordered_map<std::string, int, struct std::hash<std::string>, struct std::equal_to<std::string>, class std::allocator<struct std::pair<std::string const, int>>> mPotionsByName;

};