#pragma once class MerchantRecipe { private: std::shared_ptr buyA; std::shared_ptr buyB; std::shared_ptr sell; int uses; int maxUses; void _init(std::shared_ptr buyA, std::shared_ptr buyB, std::shared_ptr sell); public: MerchantRecipe(CompoundTag *tag); MerchantRecipe(std::shared_ptr buyA, std::shared_ptr buyB, std::shared_ptr sell, int uses = 0, int maxUses = 7); MerchantRecipe(std::shared_ptr buy, std::shared_ptr sell); MerchantRecipe(std::shared_ptr buy, Item *sell); MerchantRecipe(std::shared_ptr buy, Tile *sell); std::shared_ptr getBuyAItem(); std::shared_ptr getBuyBItem(); bool hasSecondaryBuyItem(); std::shared_ptr getSellItem(); bool isSame(MerchantRecipe *other); bool isSameSameButBetter(MerchantRecipe *other); int getUses(); int getMaxUses(); void increaseUses(); void increaseMaxUses(int amount); bool isDeprecated(); void enforceDeprecated(); void load(CompoundTag *tag); CompoundTag *createTag(); };