package joshie.harvest.core.achievements;
import joshie.harvest.animals.HFAnimals;
import joshie.harvest.animals.item.ItemAnimalProduct.Sizeable;
import joshie.harvest.api.HFApi;
import joshie.harvest.api.core.Size;
import joshie.harvest.cooking.CookingHelper;
import joshie.harvest.core.HFCore;
import joshie.harvest.core.block.BlockFlower.FlowerType;
import joshie.harvest.core.block.BlockStorage.Storage;
import joshie.harvest.core.util.annotations.HFLoader;
import joshie.harvest.crops.HFCrops;
import joshie.harvest.mining.HFMining;
import joshie.harvest.mining.block.BlockOre.Ore;
import joshie.harvest.mining.item.ItemDarkSpawner.DarkSpawner;
import joshie.harvest.mining.item.ItemMaterial.Material;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.stats.Achievement;
import net.minecraftforge.common.AchievementPage;
import static joshie.harvest.core.lib.HFModInfo.MODID;
import static joshie.harvest.core.lib.HFModInfo.MODNAME;
@HFLoader
public class HFAchievements {
public static final AchievementPage PAGE = new AchievementPage(MODNAME);
public static Achievement summon;
public static Achievement friend;
public static Achievement marriage;
public static Achievement harvest;
public static Achievement onion;
public static Achievement spinach;
public static Achievement milker;
public static Achievement egger;
public static Achievement milkerLarge;
public static Achievement eggerLarge;
public static Achievement firstChristmas;
public static Achievement birthday;
public static Achievement firstShipping;
public static Achievement millionaire;
public static Achievement theMine;
public static Achievement killChick;
public static Achievement killChicken;
public static Achievement killSheep;
public static Achievement killCow;
public static Achievement junk;
public static Achievement copper;
public static Achievement silver;
public static Achievement gold;
public static Achievement mystril;
public static Achievement cooking;
public static Achievement recipes;
public static Achievement cabbage;
public static Achievement pineapple;
public static Achievement greenPepper;
public static Achievement strawberries;
public static Achievement corn;
public static Achievement sweetPotatoes;
public static Achievement cucumbers;
public static Achievement tomatoes;
public static Achievement eggplants;
@SuppressWarnings("unused")
public static void postInit() {
AchievementPage.registerAchievementPage(PAGE);
summon = addAchievement("summon", 0, 0, HFCore.FLOWERS.getStackFromEnum(FlowerType.GODDESS), null);
friend = addAchievement("friend", 2, 2, new ItemStack(Items.COOKIE), summon);
//marriage = addAchievement("marriage", 4, 3, HFNPCs.TOOLS.getStackFromEnum(NPCTool.BLUE_FEATHER), summon); //TODO: Readd when i do marriage
harvest = addAchievement("harvest", 0, 4, HFCrops.TURNIP.getCropStack(1), summon);
onion = addAchievement("onion", 0, 6, HFCrops.ONION.getCropStack(1), harvest);
spinach = addAchievement("spinach", 0, 8, HFCrops.SPINACH.getCropStack(1), onion);
cabbage = addAchievement("cabbage", 2, 4, HFCrops.CABBAGE.getCropStack(1), harvest);
pineapple = addAchievement("pineapple", 2, 6, HFCrops.PINEAPPLE.getCropStack(1), onion);
sweetPotatoes = addAchievement("sweetPotatoes", 2, 8, HFCrops.SWEET_POTATO.getCropStack(1), spinach);
cucumbers = addAchievement("cucumber", -2, 4, HFCrops.CUCUMBER.getCropStack(1), harvest);
tomatoes = addAchievement("tomato", -2, 6, HFCrops.TOMATO.getCropStack(1), onion);
eggplants = addAchievement("eggplant", -2, 8, HFCrops.EGGPLANT.getCropStack(1), spinach);
strawberries = addAchievement("strawberries", -4, 4, HFCrops.STRAWBERRY.getCropStack(1), cucumbers);
corn = addAchievement("corn", -4, 6, HFCrops.CORN.getCropStack(1), tomatoes);
greenPepper = addAchievement("greenPepper", -4, 8, HFCrops.GREEN_PEPPER.getCropStack(1), eggplants);
milker = addAchievement("milker", 2, -2, HFAnimals.ANIMAL_PRODUCT.getStack(Sizeable.MILK, Size.SMALL), summon);
egger = addAchievement("egger", -2, -2, HFAnimals.ANIMAL_PRODUCT.getStack(Sizeable.EGG, Size.SMALL), summon);
milkerLarge = addAchievement("milkerLarge", 2, -4, HFAnimals.ANIMAL_PRODUCT.getStack(Sizeable.MILK, Size.LARGE), milker);
eggerLarge = addAchievement("eggerLarge", -2, -4, HFAnimals.ANIMAL_PRODUCT.getStack(Sizeable.EGG, Size.LARGE), egger);
firstChristmas = addAchievement("firstChristmas", 0, -3, new ItemStack(Blocks.SAPLING, 1, 1), summon);
birthday = addAchievement("birthday", 0, -5, new ItemStack(Items.CAKE), firstChristmas);
firstShipping = addAchievement("firstShipping", -2, 2, HFCore.STORAGE.getStackFromEnum(Storage.SHIPPING), summon);
millionaire = addAchievement("millionaire", -4, 2, new ItemStack(Items.GOLD_INGOT), firstShipping);
theMine = addAchievement("theMine", 3, 0, HFMining.ORE.getStackFromEnum(Ore.ROCK), summon);
killChick = addAchievement("killChick", 5, -1, HFMining.DARK_SPAWNER.getStackFromEnum(DarkSpawner.CHICK), theMine);
killChicken = addAchievement("killChicken", 7, -1, HFMining.DARK_SPAWNER.getStackFromEnum(DarkSpawner.CHICKEN), killChick);
killSheep = addAchievement("killSheep", 9, -1, HFMining.DARK_SPAWNER.getStackFromEnum(DarkSpawner.SHEEP), killChicken);
killCow = addAchievement("killCow", 11, -1, HFMining.DARK_SPAWNER.getStackFromEnum(DarkSpawner.COW), killSheep);
junk = addAchievement("junk", 5, 1, HFMining.MATERIALS.getStackFromEnum(Material.JUNK), theMine);
copper = addAchievement("copper", 7, 1, HFMining.MATERIALS.getStackFromEnum(Material.COPPER), junk);
silver = addAchievement("silver", 9, 1, HFMining.MATERIALS.getStackFromEnum(Material.SILVER), copper);
gold = addAchievement("gold", 11, 1, HFMining.MATERIALS.getStackFromEnum(Material.GOLD), silver);
mystril = addAchievement("mystril", 13, 1, HFMining.MATERIALS.getStackFromEnum(Material.MYSTRIL), gold);
cooking = addAchievement("cooking", -2, 0, HFApi.cooking.getBestMeal("turnip_pickled"), summon);
recipes = addAchievement("recipes", -4, 0, CookingHelper.getRecipe("turnip_pickled"), summon);
}
private static Achievement addAchievement(String name, int column, int row, ItemStack stack, Achievement parent) {
Achievement achievement = new Achievement(MODID + ".achievement." + name.replace("_", "."), MODID + "." + name, column, row, stack, parent);
achievement.registerStat();
PAGE.getAchievements().add(achievement);
return achievement;
}
}