diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/achievements/AchievementTrigger.java b/src/main/java/WayofTime/alchemicalWizardry/common/achievements/AchievementTrigger.java new file mode 100644 index 00000000..8e5ad2c0 --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/achievements/AchievementTrigger.java @@ -0,0 +1,39 @@ +package WayofTime.alchemicalWizardry.common.achievements; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.PlayerEvent; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.Achievement; + +public class AchievementTrigger +{ + @SubscribeEvent + public void onItemPickedUp(PlayerEvent.ItemPickupEvent event) + { + ItemStack stack = event.pickedUp.getEntityItem(); + + if (stack != null && stack.getItem() instanceof IPickupAchievement) + { + Achievement achievement = ((IPickupAchievement) stack.getItem()).getAchievementOnPickup(stack, event.player, event.pickedUp); + + if (achievement != null) + { + event.player.addStat(achievement, 1); + } + } + } + + @SubscribeEvent + public void onItemCrafted(PlayerEvent.ItemCraftedEvent event) + { + if (event.crafting != null && event.crafting.getItem() instanceof ICraftAchievement) + { + Achievement achievement = ((ICraftAchievement) event.crafting.getItem()).getAchievementOnCraft(event.crafting, event.player, event.craftMatrix); + + if (achievement != null) + { + event.player.addStat(achievement, 1); + } + } + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/achievements/AchievementsMod.java b/src/main/java/WayofTime/alchemicalWizardry/common/achievements/AchievementsMod.java new file mode 100644 index 00000000..c499c440 --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/achievements/AchievementsMod.java @@ -0,0 +1,31 @@ +package WayofTime.alchemicalWizardry.common.achievements; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.Achievement; + +import java.util.ArrayList; +import java.util.List; + +public class AchievementsMod extends Achievement +{ + public static List achievements = new ArrayList(); + + public AchievementsMod(String name, int x, int y, ItemStack icon, Achievement parent) + { + super("achievement.alchemicalwizardry:" + name, "alchemicalwizardry:" + name, x, y, icon, parent); + achievements.add(this); + registerStat(); + } + + public AchievementsMod(String name, int x, int y, Item icon, Achievement parent) + { + this(name, x, y, new ItemStack(icon), parent); + } + + public AchievementsMod(String name, int x, int y, Block icon, Achievement parent) + { + this(name, x, y, new ItemStack(icon), parent); + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/achievements/ICraftAchievement.java b/src/main/java/WayofTime/alchemicalWizardry/common/achievements/ICraftAchievement.java new file mode 100644 index 00000000..7e941c8d --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/achievements/ICraftAchievement.java @@ -0,0 +1,11 @@ +package WayofTime.alchemicalWizardry.common.achievements; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.Achievement; + +public interface ICraftAchievement +{ + public Achievement getAchievementOnCraft(ItemStack stack, EntityPlayer player, IInventory matrix); +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/achievements/IPickupAchievement.java b/src/main/java/WayofTime/alchemicalWizardry/common/achievements/IPickupAchievement.java new file mode 100644 index 00000000..10b3fda3 --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/achievements/IPickupAchievement.java @@ -0,0 +1,11 @@ +package WayofTime.alchemicalWizardry.common.achievements; + +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.Achievement; + +public interface IPickupAchievement +{ + public Achievement getAchievementOnPickup(ItemStack stack, EntityPlayer player, EntityItem item); +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/achievements/ModAchievements.java b/src/main/java/WayofTime/alchemicalWizardry/common/achievements/ModAchievements.java new file mode 100644 index 00000000..ce727eca --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/achievements/ModAchievements.java @@ -0,0 +1,23 @@ +package WayofTime.alchemicalWizardry.common.achievements; + +import WayofTime.alchemicalWizardry.ModItems; +import cpw.mods.fml.common.FMLCommonHandler; +import net.minecraft.stats.Achievement; +import net.minecraft.util.StatCollector; +import net.minecraftforge.common.AchievementPage; + +public class ModAchievements +{ + public static AchievementPage alchemicalWizardryPage; + + public static Achievement firstPrick; + + public static void init() + { + firstPrick = new AchievementsMod(StatCollector.translateToLocal("achievements.firstPrick"), 0, 0, ModItems.sacrificialDagger, firstPrick); + + alchemicalWizardryPage = new AchievementPage("AlchemicalWizardry", AchievementsMod.achievements.toArray(new Achievement[AchievementsMod.achievements.size()])); + AchievementPage.registerAchievementPage(alchemicalWizardryPage); + FMLCommonHandler.instance().bus().register(new AchievementTrigger()); + } +}