#pragma once class MerchantRecipe { private: shared_ptr buyA; shared_ptr buyB; shared_ptr sell; int uses; int maxUses; void _init(shared_ptr buyA, shared_ptr buyB, shared_ptr sell); public: MerchantRecipe(CompoundTag *tag); MerchantRecipe(shared_ptr buyA, shared_ptr buyB, shared_ptr sell, int uses = 0, int maxUses = 7); MerchantRecipe(shared_ptr buy, shared_ptr sell); MerchantRecipe(shared_ptr buy, Item *sell); MerchantRecipe(shared_ptr buy, Tile *sell); shared_ptr getBuyAItem(); shared_ptr getBuyBItem(); bool hasSecondaryBuyItem(); 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(); };