Added Achievements

This commit is contained in:
Arcaratus 2015-02-02 17:20:21 -05:00
parent 25c8d238dd
commit 35bb173292
5 changed files with 115 additions and 0 deletions

View file

@ -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);
}
}
}
}

View file

@ -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<Achievement> 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);
}
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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());
}
}