package joshie.harvest.shops.requirement; import joshie.harvest.animals.HFAnimals; import joshie.harvest.animals.item.ItemAnimalProduct.Sizeable; import joshie.harvest.api.core.Size; import joshie.harvest.api.shops.IRequirement; import joshie.harvest.core.helpers.InventoryHelper; import joshie.harvest.shops.purchasable.PurchasableTrade; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import static joshie.harvest.core.helpers.InventoryHelper.ITEM_STACK; public class RequirementSizeable implements IRequirement { private final ItemStack large; private final ItemStack medium; private final ItemStack small; private PurchasableTrade ticker; private int amount; public RequirementSizeable(PurchasableTrade ticker, Sizeable sizeable) { this.ticker = ticker; this.large = HFAnimals.ANIMAL_PRODUCT.getStack(sizeable, Size.LARGE); this.medium = HFAnimals.ANIMAL_PRODUCT.getStack(sizeable, Size.MEDIUM); this.small = HFAnimals.ANIMAL_PRODUCT.getStack(sizeable, Size.SMALL); } @Override public boolean isFulfilled(World world, EntityPlayer player, int amount) { if (amount != 1) return false; if (InventoryHelper.hasInInventory(player, ITEM_STACK, small, amount) || InventoryHelper.hasInInventory(player, ITEM_STACK, medium, amount) || InventoryHelper.hasInInventory(player, ITEM_STACK, large, amount)) { return true; } return false; } @Override public void onPurchased(EntityPlayer player) {} @Override public int getCost() { return 1; } @Override public ItemStack getIcon() { int num = PurchasableTrade.ticker %1800; if (num < 600) return small; else if (num < 1200) return medium; else return large; } public int getPurchased(EntityPlayer player) { if (InventoryHelper.hasInInventory(player, ITEM_STACK, small)) { InventoryHelper.takeItemsInInventory(player, ITEM_STACK, small); return 1; } else if (InventoryHelper.hasInInventory(player, ITEM_STACK, medium)) { InventoryHelper.takeItemsInInventory(player, ITEM_STACK, medium); return 2; } else if (InventoryHelper.hasInInventory(player, ITEM_STACK, large)) { InventoryHelper.takeItemsInInventory(player, ITEM_STACK, large); return 3; } return 0; } }