From a11c98c6cad501e081837ec8fa2e323edaeb1ca3 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Thu, 24 May 2018 15:52:43 -0400 Subject: Initial commit --- .../main/java/tf2crates/handler/AnvilHandler.java | 118 +++++++++ .../main/java/tf2crates/handler/AttackHandler.java | 76 ++++++ .../main/java/tf2crates/handler/DeathHandler.java | 88 +++++++ .../main/java/tf2crates/handler/EventHandler.java | 284 +++++++++++++++++++++ .../main/java/tf2crates/handler/TickHandler.java | 40 +++ .../java/tf2crates/handler/TooltipHandler.java | 40 +++ 6 files changed, 646 insertions(+) create mode 100755 TF2 Crates/src/main/java/tf2crates/handler/AnvilHandler.java create mode 100755 TF2 Crates/src/main/java/tf2crates/handler/AttackHandler.java create mode 100755 TF2 Crates/src/main/java/tf2crates/handler/DeathHandler.java create mode 100755 TF2 Crates/src/main/java/tf2crates/handler/EventHandler.java create mode 100755 TF2 Crates/src/main/java/tf2crates/handler/TickHandler.java create mode 100755 TF2 Crates/src/main/java/tf2crates/handler/TooltipHandler.java (limited to 'TF2 Crates/src/main/java/tf2crates/handler') 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 -- cgit v1.2.3