ThrowableEffects.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package me.km.effects.passive;
  2. import me.km.KajetansMod;
  3. import me.km.api.Module;
  4. import me.km.api.ModuleListener;
  5. import me.km.api.Utils;
  6. import me.km.effects.Effect;
  7. import me.km.effects.EffectUtils;
  8. import me.km.events.PlayerHurtEvent;
  9. import me.km.events.ThrowableLaunchEvent;
  10. import net.minecraft.entity.Entity;
  11. import net.minecraft.entity.item.EntityEnderPearl;
  12. import net.minecraft.entity.player.EntityPlayer;
  13. import net.minecraft.entity.projectile.EntityPotion;
  14. import net.minecraft.entity.projectile.EntityThrowable;
  15. import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
  16. public class ThrowableEffects extends ModuleListener
  17. {
  18. public ThrowableEffects(Module m)
  19. {
  20. super(m);
  21. }
  22. @SubscribeEvent(receiveCanceled = false)
  23. public void preventEnderPearlDamage(PlayerHurtEvent e)
  24. {
  25. Entity ent = e.getSource().getImmediateSource();
  26. if(ent != null && ent.getClass() == EntityEnderPearl.class &&
  27. KajetansMod.worldManager.getWorldPreferences(ent.world).skills &&
  28. EffectUtils.getEffectLevel(e.getEntityPlayer(), Effect.NO_ENDERPEARL_DAMAGE) >= 1)
  29. {
  30. e.setCanceled(true);
  31. }
  32. }
  33. @SubscribeEvent(receiveCanceled = false)
  34. public void useThrowableEvent(ThrowableLaunchEvent e)
  35. {
  36. if(!KajetansMod.worldManager.getWorldPreferences(e.getWorld()).skills)
  37. {
  38. return;
  39. }
  40. EntityThrowable ent = e.getEntityThrowable();
  41. if(ent instanceof EntityEnderPearl)
  42. {
  43. EntityPlayer p = e.getEntityPlayer();
  44. if(Utils.randomBoolean() && EffectUtils.getEffectLevel(p, Effect.PEARL_SAVER) >= 1)
  45. {
  46. p.getHeldItemMainhand().grow(1);
  47. }
  48. int speed = EffectUtils.getEffectLevel(p, Effect.FAST_ENDERPEARL_SHOOT);
  49. if(speed >= 1)
  50. {
  51. Utils.scaleVelocity(e.getEntityThrowable(), speed + 1);
  52. }
  53. }
  54. else if(ent instanceof EntityPotion)
  55. {
  56. EntityPlayer p = e.getEntityPlayer();
  57. int saver = EffectUtils.getEffectLevel(p, Effect.POTION_SAVER);
  58. if(saver >= 1 && saver >= Utils.randomInt(1, 5))
  59. {
  60. p.getHeldItemMainhand().grow(1);
  61. }
  62. }
  63. }
  64. }