summaryrefslogtreecommitdiff
path: root/TF2 Crates/src/main/java/tf2crates/handler
diff options
context:
space:
mode:
Diffstat (limited to 'TF2 Crates/src/main/java/tf2crates/handler')
-rwxr-xr-xTF2 Crates/src/main/java/tf2crates/handler/AnvilHandler.java118
-rwxr-xr-xTF2 Crates/src/main/java/tf2crates/handler/AttackHandler.java76
-rwxr-xr-xTF2 Crates/src/main/java/tf2crates/handler/DeathHandler.java88
-rwxr-xr-xTF2 Crates/src/main/java/tf2crates/handler/EventHandler.java284
-rwxr-xr-xTF2 Crates/src/main/java/tf2crates/handler/TickHandler.java40
-rwxr-xr-xTF2 Crates/src/main/java/tf2crates/handler/TooltipHandler.java40
6 files changed, 646 insertions, 0 deletions
diff --git a/TF2 Crates/src/main/java/tf2crates/handler/AnvilHandler.java b/TF2 Crates/src/main/java/tf2crates/handler/AnvilHandler.java
new file mode 100755
index 0000000..f846696
--- /dev/null
+++ b/TF2 Crates/src/main/java/tf2crates/handler/AnvilHandler.java
@@ -0,0 +1,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;
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/TF2 Crates/src/main/java/tf2crates/handler/AttackHandler.java b/TF2 Crates/src/main/java/tf2crates/handler/AttackHandler.java
new file mode 100755
index 0000000..0d6e2ff
--- /dev/null
+++ b/TF2 Crates/src/main/java/tf2crates/handler/AttackHandler.java
@@ -0,0 +1,76 @@
+package tf2crates.handler;
+
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+import tf2crates.ReferenceTC;
+import tf2crates.ServerProxyTC;
+import tlhpoeCore.network.MessagePlaySound;
+
+public class AttackHandler {
+ public static double marketGardenerMinimumFall;
+
+ @SubscribeEvent
+ public void attackHandler(LivingHurtEvent event) {
+ Entity attackerE = event.source.getEntity();
+
+ if (attackerE != null && attackerE instanceof EntityLivingBase) {
+ EntityLivingBase attacker = (EntityLivingBase) attackerE;
+ ItemStack heldItem = attacker.getHeldItem();
+
+ if (heldItem != null && heldItem.getItem() != null) {
+ Item item = heldItem.getItem();
+ boolean playSound = false;
+
+ if (item == ServerProxyTC.equalizer) {
+ float per =
+ attacker.getHealth() / attacker.getMaxHealth();
+
+ if (per <= 0.25F) {
+ event.ammount += 8;
+ } else if (per <= 0.5F) {
+ event.ammount += 4;
+ } else if (per <= 0.75F) {
+ event.ammount += 2;
+ }
+ } else if (item == ServerProxyTC.marketGardener) {
+ if (attacker.fallDistance >= marketGardenerMinimumFall) {
+ event.ammount += 15;
+
+ playSound = true;
+ }
+ } else if (item == ServerProxyTC.axtinguisher) {
+ if (event.entityLiving.isBurning()) {
+ event.ammount += 8;
+
+ playSound = true;
+ }
+ } else if (item == ServerProxyTC.sharpenedVolcanoFragment) {
+ event.entityLiving.setFire(10);
+ }
+
+ if (playSound && attacker instanceof EntityPlayerMP) {
+ new MessagePlaySound(
+ ReferenceTC.ID + ":tf2crates.crit")
+ .sendTo((EntityPlayerMP) attacker);
+ }
+ }
+ }
+
+ ItemStack heldItem = event.entityLiving.getHeldItem();
+
+ if (heldItem != null && heldItem.getItem() != null) {
+ Item item = heldItem.getItem();
+
+ if (item == ServerProxyTC.powerJack) {
+ event.ammount *= 1.5;
+ } else if (item == ServerProxyTC.conniversKunai) {
+ event.ammount *= 2;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/TF2 Crates/src/main/java/tf2crates/handler/DeathHandler.java b/TF2 Crates/src/main/java/tf2crates/handler/DeathHandler.java
new file mode 100755
index 0000000..b680e40
--- /dev/null
+++ b/TF2 Crates/src/main/java/tf2crates/handler/DeathHandler.java
@@ -0,0 +1,88 @@
+package tf2crates.handler;
+
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.monster.EntityMob;
+import net.minecraft.entity.projectile.EntityArrow;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.event.entity.living.LivingDropsEvent;
+import tf2crates.ReferenceTC;
+import tf2crates.ServerProxyTC;
+import tf2crates.crate.Crates;
+import tlhpoeCore.util.MathUtil;
+
+public class DeathHandler {
+ public static int[] crateChance;
+ public static int[] keyChance;
+
+ @SubscribeEvent
+ public void mobDeath(LivingDropsEvent event) {
+ EntityLivingBase entity = event.entityLiving;
+
+ if (entity instanceof EntityMob) {
+ if (MathUtil.getChance(crateChance[0], crateChance[1])) {
+ String special = ReferenceTC.CURRENT_SPECIAL_CRATE;
+
+ if (special != null && MathUtil.getChance(1, 5)) {
+ event.drops.add(new EntityItem(entity.worldObj,
+ entity.posX, entity.posY + 1, entity.posZ,
+ new ItemStack(ServerProxyTC.crate, 1,
+ Crates.getSeriesFromName(special))));
+ } else {
+ event.drops.add(new EntityItem(entity.worldObj,
+ entity.posX, entity.posY + 1, entity.posZ,
+ new ItemStack(ServerProxyTC.crate, 1, MathUtil
+ .nextInt(Crates.getNumberOfSeries()
+ - Crates.getNumberOfSpecialCrates()))));
+ }
+ }
+
+ if (MathUtil.getChance(keyChance[0], keyChance[1])) {
+ event.drops.add(new EntityItem(entity.worldObj,
+ entity.posX, entity.posY + 1, entity.posZ,
+ new ItemStack(ServerProxyTC.key, 1)));
+ }
+
+ Entity attacker = event.source.getSourceOfDamage();
+
+ if (attacker != null) {
+ EntityLivingBase attackerL = null;
+
+ if (attacker instanceof EntityLivingBase) {
+ attackerL = (EntityLivingBase) attacker;
+ } else if (attacker instanceof EntityArrow) {
+ EntityArrow arrow = (EntityArrow) attacker;
+
+ if (arrow.shootingEntity != null
+ && arrow.shootingEntity instanceof EntityLivingBase) {
+ attackerL =
+ (EntityLivingBase) arrow.shootingEntity;
+ }
+ }
+
+ if (attackerL != null) {
+ ItemStack held = attackerL.getHeldItem();
+
+ if (held != null) {
+ NBTTagCompound nbt = held.getTagCompound();
+
+ if (nbt != null && (nbt.hasKey("Strange")
+ || nbt.hasKey("Golden"))) {
+ nbt.setInteger("Strange",
+ nbt.getInteger("Strange") + 1);
+ }
+
+ if (held.getItem() != null && held
+ .getItem() == ServerProxyTC.powerJack) {
+ attackerL.heal(
+ attackerL.getMaxHealth() * 0.25F);
+ }
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/TF2 Crates/src/main/java/tf2crates/handler/EventHandler.java b/TF2 Crates/src/main/java/tf2crates/handler/EventHandler.java
new file mode 100755
index 0000000..212c13f
--- /dev/null
+++ b/TF2 Crates/src/main/java/tf2crates/handler/EventHandler.java
@@ -0,0 +1,284 @@
+package tf2crates.handler;
+
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import cpw.mods.fml.common.gameevent.TickEvent;
+import cpw.mods.fml.common.gameevent.TickEvent.Phase;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import tlhpoeCore.util.MCUtil;
+import tlhpoeCore.util.MathUtil;
+
+public class EventHandler {
+ @SubscribeEvent
+ public void playerTick(TickEvent.PlayerTickEvent event) {
+ EntityPlayer player = event.player;
+
+ if (event.phase == Phase.START) {
+ Minecraft mc = MCUtil.getMC();
+ if (player != mc.thePlayer || (player == mc.thePlayer
+ && mc.gameSettings.thirdPersonView != 0)) {
+ ItemStack helmet = player.getEquipmentInSlot(4);
+
+ if (helmet != null) {
+ NBTTagCompound nbt = helmet.getTagCompound();
+ if (nbt != null && nbt.hasKey("UnusualEffect")) {
+ int unusualEffect =
+ nbt.getInteger("UnusualEffect");
+
+ switch (unusualEffect) {
+ case (0):
+ if (MathUtil.getChance(1, 5)) {
+ player.worldObj.spawnParticle("flame",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(16), rDouble(16),
+ rDouble(16));
+ }
+
+ break;
+
+ case (1):
+ if (MathUtil.getChance(1, 5)) {
+ player.worldObj.spawnParticle(
+ "explode",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ }
+
+ break;
+
+ case (2):
+ if (MathUtil.getChance(1, 5)) {
+ player.worldObj.spawnParticle(
+ "fireworksSpark",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ }
+
+ break;
+ case (3):
+
+ if (MathUtil.getChance(1, 2)) {
+ player.worldObj.spawnParticle(
+ "depthsuspend",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ player.worldObj.spawnParticle(
+ "depthsuspend",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ }
+
+ break;
+
+ case (4):
+ if (MathUtil.getChance(1, 4)) {
+ player.worldObj.spawnParticle("crit",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ player.worldObj.spawnParticle("crit",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ }
+
+ break;
+
+ case (5):
+ if (MathUtil.getChance(1, 4)) {
+ player.worldObj.spawnParticle(
+ "magicCrit",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ player.worldObj.spawnParticle(
+ "magicCrit",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ }
+
+ break;
+
+ case (6):
+ if (MathUtil.getChance(1, 5)) {
+ player.worldObj.spawnParticle("note",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ }
+
+ break;
+
+ case (7):
+ if (MathUtil.getChance(1, 2)) {
+ player.worldObj.spawnParticle("portal",
+ player.posX + rDouble(4),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(4),
+ rDouble(16), rDouble(16),
+ rDouble(16));
+ player.worldObj.spawnParticle("portal",
+ player.posX + rDouble(4),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(4),
+ rDouble(16), rDouble(16),
+ rDouble(16));
+ }
+
+ break;
+
+ case (8):
+ if (MathUtil.getChance(1, 5)) {
+ player.worldObj.spawnParticle(
+ "enchantmenttable",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(2), rDouble(2),
+ rDouble(2));
+ player.worldObj.spawnParticle(
+ "enchantmenttable",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(2), rDouble(2),
+ rDouble(2));
+ }
+
+ break;
+
+ case (9):
+ if (MathUtil.getChance(1, 5)) {
+ player.worldObj.spawnParticle("lava",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), 0, rDouble(8));
+ }
+
+ break;
+
+ case (10):
+ if (MathUtil.getChance(1, 5)) {
+ player.worldObj.spawnParticle(
+ "largesmoke",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ player.worldObj.spawnParticle(
+ "reddust",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ }
+
+ break;
+
+ case (11):
+ if (MathUtil.getChance(1, 5)) {
+ player.worldObj.spawnParticle("slime",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ player.worldObj.spawnParticle("slime",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ }
+
+ break;
+
+ case (12):
+ if (MathUtil.getChance(1, 5)) {
+ player.worldObj.spawnParticle("heart",
+ player.posX + rDouble(1.25),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1.25),
+ rDouble(8), rDouble(16),
+ rDouble(8));
+ }
+
+ break;
+
+ case (13):
+ if (MathUtil.getChance(1, 5)) {
+ player.worldObj.spawnParticle(
+ MathUtil.getChance(1, 10)
+ ? "angryVillager"
+ : "happyVillager",
+ player.posX + rDouble(1),
+ player.posY + 0.5D
+ + rDouble(4),
+ player.posZ + rDouble(1),
+ rDouble(2), rDouble(16),
+ rDouble(2));
+ }
+
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private static double rDouble(double randomness) {
+ return (MathUtil.nextDouble() / randomness)
+ - (MathUtil.nextDouble() / randomness);
+ }
+} \ No newline at end of file
diff --git a/TF2 Crates/src/main/java/tf2crates/handler/TickHandler.java b/TF2 Crates/src/main/java/tf2crates/handler/TickHandler.java
new file mode 100755
index 0000000..08af067
--- /dev/null
+++ b/TF2 Crates/src/main/java/tf2crates/handler/TickHandler.java
@@ -0,0 +1,40 @@
+package tf2crates.handler;
+
+import java.util.Calendar;
+
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import cpw.mods.fml.common.gameevent.TickEvent;
+import tf2crates.ReferenceTC;
+
+public class TickHandler {
+ private short counter = 0;
+
+ @SubscribeEvent
+ public void playerTick(TickEvent.WorldTickEvent event) {
+ if (event.phase == TickEvent.Phase.START) {
+ if (counter >= 36000) {
+ counter = 0;
+
+ Calendar date = Calendar.getInstance();
+
+ int month = date.get(Calendar.MONTH);
+ int day = date.getMaximum(Calendar.DAY_OF_MONTH);
+
+ if ((month == Calendar.OCTOBER && day >= 29)
+ || (month == Calendar.NOVEMBER && day < 12)) {
+ ReferenceTC.CURRENT_SPECIAL_CRATE = "spookyCrate";
+ } else if (month == Calendar.DECEMBER
+ && (day >= 20 && day <= 31)) {
+ ReferenceTC.CURRENT_SPECIAL_CRATE = "festiveCrate";
+ } else if (month == Calendar.AUGUST
+ && (day >= 24 && day <= 31)) {
+ ReferenceTC.CURRENT_SPECIAL_CRATE = "birthdayCrate";
+ } else {
+ ReferenceTC.CURRENT_SPECIAL_CRATE = null;
+ }
+ } else {
+ counter++;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/TF2 Crates/src/main/java/tf2crates/handler/TooltipHandler.java b/TF2 Crates/src/main/java/tf2crates/handler/TooltipHandler.java
new file mode 100755
index 0000000..630463a
--- /dev/null
+++ b/TF2 Crates/src/main/java/tf2crates/handler/TooltipHandler.java
@@ -0,0 +1,40 @@
+package tf2crates.handler;
+
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+import net.minecraftforge.event.entity.player.ItemTooltipEvent;
+import tf2crates.item.ItemUnusualEffect;
+
+public class TooltipHandler {
+ @SubscribeEvent
+ public void toolTip(ItemTooltipEvent event) {
+ if (event.itemStack != null) {
+ NBTTagCompound nbt = event.itemStack.getTagCompound();
+
+ if (nbt != null) {
+ if (nbt.hasKey("UnusualEffect")) {
+ event.toolTip.add("Unusual Effect: "
+ + EnumChatFormatting.LIGHT_PURPLE
+ + StatCollector
+ .translateToLocal("unusualEffect."
+ + ItemUnusualEffect.TYPES[nbt
+ .getInteger(
+ "UnusualEffect")]
+ + ".name"));
+ }
+
+ if (nbt.hasKey("Strange") || nbt.hasKey("Golden")) {
+ event.toolTip.add("# of Mobs Killed: "
+ + EnumChatFormatting.YELLOW
+ + nbt.getInteger("Strange"));
+ }
+
+ if (nbt.hasKey("Description")) {
+ event.toolTip.add(nbt.getString("Description"));
+ }
+ }
+ }
+ }
+} \ No newline at end of file