summaryrefslogtreecommitdiff
path: root/TF2 Crates/src/main/java/tf2crates/handler/AnvilHandler.java
blob: f8466964f155505884f718bc1ce7478dfb602137 (plain)
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package tf2crates.handler;

import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemTool;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.event.AnvilUpdateEvent;
import tf2crates.ServerProxyTC;
import tf2crates.crate.RandomLoot;
import tf2crates.item.ItemUnusualEffect;

public class AnvilHandler {
	public static boolean	repairHat, makeUnbreakable;

	public static int		strangeCost, unusualCost, descriptionCost;

	@SubscribeEvent
	public void anvilUpdate(AnvilUpdateEvent event) {
		ItemStack left = event.left;
		ItemStack right = event.right;

		if (left != null && right != null) {
			String leftN = left.getItem().getUnlocalizedName();

			if (left.getItem() instanceof ItemTool
					|| leftN.contains("sword") || leftN.contains("Sword")
					|| leftN.contains("hoe") || leftN.contains("Hoe")) {
				if (left.getItemDamage() > 0) {
					if (right.stackSize == 1
							&& right.getItem() == ServerProxyTC.scrap) {
						ItemStack res = left.copy();

						double amt = 0.1111D;
						int dmg = right.getItemDamage();

						if (dmg == 1) {
							amt = 0.3333D;
						} else if (dmg == 2) {
							amt = 1D;
						}

						res.setItemDamage((int) (res.getItemDamage()
								- (res.getMaxDamage() * amt)));

						event.output = res;
						event.cost = 2;

						return;
					}
				}
			}

			NBTTagCompound lNbt = left.getTagCompound();

			if (lNbt == null) {
				left.setTagCompound(lNbt = new NBTTagCompound());
			}

			if (RandomLoot.WEAPONS.contains(left.getItem())
					&& !lNbt.getBoolean("Golden")) {
				if (right.getItem() == ServerProxyTC.paint
						&& right.getItemDamage() == 11) {
					ItemStack res = left.copy();

					res.getTagCompound().setBoolean("Golden", true);
					res.setItemDamage(0);

					res.setStackDisplayName(EnumChatFormatting.YELLOW
							+ "Strange Minecraftium "
							+ res.getDisplayName());

					event.output = res;
					event.cost = 1;
				}
			}

			if (!lNbt.hasKey("UnusualEffect")) {
				if (left.getItem() instanceof ItemArmor) {
					ItemArmor armor = (ItemArmor) left.getItem();

					if (armor.armorType == 0) {
						if (right.getItem() instanceof ItemUnusualEffect) {
							ItemStack result = left.copy();

							result.getTagCompound().setInteger(
									"UnusualEffect",
									right.getItemDamage());

							if (makeUnbreakable) {
								result.getTagCompound()
										.setBoolean("Unbreakable", true);
							} else if (repairHat) {
								result.setItemDamage(0);
							}

							event.output = result;
							event.cost = unusualCost;
						}

					}
				}
			}

			if (!lNbt.hasKey("Strange") && left.stackSize == 1) {
				if (right.getItem() == ServerProxyTC.strangifier) {
					ItemStack result = left.copy();

					result.getTagCompound().setInteger("Strange", 0);

					event.output = result;
					event.cost = strangeCost;
				}
			}
		}
	}
}