AreaDamage.java 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package me.km.effects.active;
  2. import me.km.KajetansMod;
  3. import me.km.effects.ActiveEffectBase;
  4. import me.km.effects.EffectUtils;
  5. import net.minecraft.entity.player.EntityPlayerMP;
  6. import net.minecraft.util.DamageSource;
  7. import net.minecraft.util.EnumParticleTypes;
  8. import net.minecraft.util.math.Vec3d;
  9. import net.minecraft.world.WorldServer;
  10. public class AreaDamage extends ActiveEffectBase
  11. {
  12. @Override
  13. protected boolean executeEffect(EntityPlayerMP p, int power)
  14. {
  15. if(!KajetansMod.playerbank.getData(p).hasData("aoe"))
  16. {
  17. // just adding a bit to time to make sure the last call works
  18. KajetansMod.playerbank.getData(p).addGoodTimedData("aoe", true, power * 20 + 3, "AOE Schaden", 61);
  19. for(int i = 0; i < power; i++)
  20. {
  21. KajetansMod.scheduler.scheduleTask(() -> attack(p), i * 20);
  22. }
  23. return true;
  24. }
  25. return false;
  26. }
  27. private void attack(EntityPlayerMP p)
  28. {
  29. if(KajetansMod.playerbank.getData(p).hasData("aoe"))
  30. {
  31. WorldServer w = p.getServerWorld();
  32. Vec3d v = p.getPositionVector();
  33. EffectUtils.playEffectCircleWithData(w, v, EnumParticleTypes.FLAME, 5, 12);
  34. EffectUtils.playEffectCircleWithData(w, v, EnumParticleTypes.FLAME, 4, 12);
  35. EffectUtils.playEffectCircleWithData(w, v, EnumParticleTypes.FLAME, 3, 12);
  36. EffectUtils.playEffectCircleWithData(w, v, EnumParticleTypes.FLAME, 2, 12);
  37. EffectUtils.playEffectCircleWithData(w, v, EnumParticleTypes.FLAME, 1, 12);
  38. DamageSource ds = DamageSource.causeMobDamage(p);
  39. EffectUtils.getEntsOfNotGuild(p, 5).stream().forEach((m) ->
  40. {
  41. m.attackEntityFrom(ds, 2);
  42. });
  43. }
  44. }
  45. @Override
  46. protected int getManaCost(int manaFactor)
  47. {
  48. return 1;
  49. }
  50. }