-
Notifications
You must be signed in to change notification settings - Fork 755
/
AchievementEvents.java
87 lines (76 loc) · 3.34 KB
/
AchievementEvents.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package tconstruct.achievements;
import com.mojang.realmsclient.gui.ChatFormatting;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.*;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.StatCollector;
import net.minecraftforge.event.entity.living.*;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import tconstruct.items.tools.FryingPan;
import tconstruct.library.event.ToolCraftedEvent;
import tconstruct.library.tools.*;
import tconstruct.tools.logic.ToolForgeLogic;
public class AchievementEvents
{
@SubscribeEvent
public void toolCreate (ToolCraftedEvent event)
{
if (event.player != null)
{
TAchievements.triggerAchievement(event.player, "tconstruct.tinkerer");
if (event.tool != null && event.tool.getItem() instanceof Weapon)
{
TAchievements.triggerAchievement(event.player, "tconstruct.preparedFight");
}
if (event.inventory != null && event.inventory instanceof ToolForgeLogic && event.tool.getItem() instanceof ToolCore && ((ToolCore) event.tool.getItem()).durabilityTypeExtra() != 0)
{
TAchievements.triggerAchievement(event.player, "tconstruct.proTinkerer");
}
}
}
@SubscribeEvent
public void entitySlain (LivingDeathEvent event)
{
if (event.source != null && event.source.getEntity() instanceof EntityPlayer)
{
EntityPlayer murderer = (EntityPlayer) event.source.getEntity();
if (murderer.getHeldItem() != null && murderer.getHeldItem().getItem() instanceof Weapon)
{
TAchievements.triggerAchievement(murderer, "tconstruct.enemySlayer");
}
}
}
@SubscribeEvent
public void entityDrops (LivingDropsEvent event)
{
if (event.source.getEntity() instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer) event.source.getEntity();
if (player.getHeldItem() != null && player.getHeldItem().getItem() instanceof FryingPan)
{
for (int i = 0; i < event.drops.size(); i++)
{
ItemStack is = event.drops.get(i).getEntityItem();
if (FurnaceRecipes.smelting().getSmeltingResult(is) != null && FurnaceRecipes.smelting().getSmeltingResult(is).getItem() instanceof ItemFood)
{
NBTTagCompound stackCompound = is.getTagCompound();
if (stackCompound == null)
{
stackCompound = new NBTTagCompound();
}
stackCompound.setBoolean("frypanKill", true);
is.setTagCompound(stackCompound);
}
}
}
}
}
@SubscribeEvent
public void tooltip(ItemTooltipEvent event) {
if(event.itemStack == null || event.itemStack.getItem() == null || !event.itemStack.hasTagCompound() || !event.itemStack.getTagCompound().hasKey("frypanKill"))
return;
event.toolTip.add("" + ChatFormatting.DARK_PURPLE + ChatFormatting.ITALIC + StatCollector.translateToLocal("frypankill.tooltip"));
}
}