#pragma once #include "AbstractContainerMenu.h" #include "Slot.h" class BrewingStandTileEntity; class Inventory; class Player; class Container; class BrewingStandMenu : public AbstractContainerMenu { // 4J Stu - Made public so that we can access these from the XUI menus public: static const int INGREDIENT_SLOT = 3; static const int BOTTLE_SLOT_START = 0; static const int BOTTLE_SLOT_END = 2; static const int INV_SLOT_START = INGREDIENT_SLOT + 1; static const int INV_SLOT_END = INV_SLOT_START + 9 * 3; static const int USE_ROW_SLOT_START = INV_SLOT_END; static const int USE_ROW_SLOT_END = USE_ROW_SLOT_START + 9; private: shared_ptr brewingStand; Slot *ingredientSlot; public: BrewingStandMenu(shared_ptr inventory, shared_ptr brewingStand); private: int tc; public: virtual void addSlotListener(ContainerListener *listener); virtual void broadcastChanges(); virtual void setData(int id, int value); virtual bool stillValid(shared_ptr player); virtual shared_ptr quickMoveStack(shared_ptr player, int slotIndex); private: class PotionSlot : public Slot { private: shared_ptr player; public: PotionSlot(shared_ptr player, shared_ptr container, int slot, int x, int y); virtual bool mayPlace(shared_ptr item); virtual int getMaxStackSize(); virtual void onTake(shared_ptr player, shared_ptr carried); static bool mayPlaceItem(shared_ptr item); virtual bool mayCombine(shared_ptr item); // 4J Added }; class IngredientsSlot : public Slot { public: IngredientsSlot(shared_ptr container, int slot, int x, int y); virtual bool mayPlace(shared_ptr item); virtual int getMaxStackSize(); virtual bool mayCombine(shared_ptr item); // 4J Added }; };