#pragma once using namespace std; class MobEffectInstance; class PotionBrewing { public: static const bool SIMPLIFIED_BREWING = true; // 4J Stu - Made #define so we can use it to select const initialisation #define _SIMPLIFIED_BREWING 1 static const int BREWING_TIME_SECONDS = 20; static const int THROWABLE_BIT = 14; static const int THROWABLE_MASK = (1 << THROWABLE_BIT); static const wstring MOD_WATER; static const wstring MOD_SUGAR; static const wstring MOD_GHASTTEARS; static const wstring MOD_SPIDEREYE; static const wstring MOD_FERMENTEDEYE; static const wstring MOD_SPECKLEDMELON; static const wstring MOD_BLAZEPOWDER; static const wstring MOD_MAGMACREAM; static const wstring MOD_REDSTONE; static const wstring MOD_GLOWSTONE; static const wstring MOD_NETHERWART; static const wstring MOD_GUNPOWDER; static const wstring MOD_GOLDENCARROT; private: typedef unordered_map intStringMap; static intStringMap potionEffectDuration; static intStringMap potionEffectAmplifier; public: static void staticCtor(); static const int NUM_BITS = 15; // 4J Stu - Made public static const int BREW_MASK = 0x7fff; private: static const int TOP_BIT = 0x4000; static bool isWrappedLit(int brew, int position); public: static bool isLit(int brew, int position); private: static int isBit(int brew, int position); static int isNotBit(int brew, int position); public: static int getAppearanceValue(int brew); static int getColorValue(vector *effects); private: static unordered_map cachedColors; public: static int getColorValue(int brew, bool includeDisabledEffects); static int getSmellValue(int brew); private: static const int DEFAULT_APPEARANCES[]; public: static int getAppearanceName(int brew); private: static const int NO_COUNT = -1; static const int EQUAL_COUNT = 0; static const int GREATER_COUNT = 1; static const int LESS_COUNT = 2; static int constructParsedValue(bool isNot, bool hasMultiplier, bool isNeg, int countCompare, int valuePart, int multiplierPart, int brew); static int countOnes(int brew); static int parseEffectFormulaValue(const wstring &definition, int start, int end, int brew); public: static vector *getEffects(int brew, bool includeDisabledEffects); #if !(_SIMPLIFIED_BREWING) static int boil(int brew); static int shake(int brew); static int stirr(int brew); #endif private: static int applyBrewBit(int currentBrew, int bit, bool isNeg, bool isNot, bool isRequired); public: static int applyBrew(int currentBrew, const wstring &formula); static int setBit(int brew, int position, bool onOff); static int valueOf(int brew, int p1, int p2, int p3, int p4); static int valueOf(int brew, int p1, int p2, int p3, int p4, int p5); static wstring toString(int brew); //static void main(String[] args); };