package joshie.harvest.shops.purchasable; import joshie.harvest.api.HFApi; import joshie.harvest.api.calendar.CalendarDate; import joshie.harvest.api.calendar.Season; import joshie.harvest.api.crops.Crop; import joshie.harvest.api.shops.IPurchasable; import joshie.harvest.api.trees.Tree; import joshie.harvest.core.helpers.MCClientHelper; import joshie.harvest.core.helpers.SpawnItemHelper; import joshie.harvest.core.helpers.TextHelper; import joshie.harvest.knowledge.HFNotes; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nonnull; import java.util.List; public class PurchasableCropSeeds implements IPurchasable { private final String resource; private final Crop crop; public PurchasableCropSeeds(Crop crop) { this.crop = crop; this.resource = crop.getResource().toString().replace(":", "_") + "Seeds"; } private boolean isCorrectSeason(Season theSeason) { for (Season season : crop.getSeasons()) { if (season == theSeason) return true; } return false; } @Override public boolean canDo(@Nonnull World world, @Nonnull EntityPlayer player, int amount) { CalendarDate date = HFApi.calendar.getDate(world); return isCorrectSeason(date.getSeason()) && crop.getRules().canDo(world, player, amount); } @Override public long getCost() { return crop.getSeedCost(); } @Override public ItemStack getDisplayStack() { return crop.getSeedStack(1); } @SideOnly(Side.CLIENT) @Override public void addTooltip(List<String> list) { list.addAll(getDisplayStack().getTooltip(MCClientHelper.getPlayer(), false)); list.remove(list.size() - 1); //Remove info about days list.add("--------------------"); int amount = crop instanceof Tree ? ((Tree)crop).getStagesToMaturity() : crop.getStages(); list.add(TextHelper.formatHF("crop.seeds.shop.days", amount)); if (crop.getRegrowStage() > 0) list.add(TextHelper.formatHF("crop.seeds.shop.regrow", (crop.getStages() - crop.getRegrowStage()))); } @Override public void onPurchased(EntityPlayer player) { ItemStack seeds = crop.getSeedStack(1); SpawnItemHelper.addToPlayerInventory(player, seeds.copy()); if (crop instanceof Tree) { HFApi.player.getTrackingForPlayer(player).learnNote(HFNotes.TREES); } } @Override public String getPurchaseableID() { return resource; } }