Advertisement
Guest User

Untitled

a guest
Aug 21st, 2016
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. package net.madcrazydrumma.skyrimcraft.spell;
  2.  
  3. import net.madcrazydrumma.skyrimcraft.entity.spell.EntityShockwaveFX;
  4. import net.madcrazydrumma.skyrimcraft.util.SoundHandler;
  5. import net.minecraft.client.Minecraft;
  6. import net.minecraft.entity.Entity;
  7. import net.minecraft.entity.item.EntityItem;
  8. import net.minecraft.entity.player.EntityPlayer;
  9. import net.minecraft.util.SoundEvent;
  10. import net.minecraft.util.math.AxisAlignedBB;
  11. import net.minecraft.util.math.Vec3d;
  12. import net.minecraft.util.text.TextComponentString;
  13. import net.minecraft.world.World;
  14.  
  15. import java.util.List;
  16.  
  17. public class FusRoDah implements ISpell
  18. {
  19. @Override
  20. public String getSpellName() {
  21. return "Fus Ro Dah";
  22. }
  23.  
  24. @Override
  25. public SoundEvent getCastSound() {
  26. return SoundHandler.FUS_RO_DAH;
  27. }
  28.  
  29. @Override
  30. public void castSpell(EntityPlayer player) {
  31. Minecraft.getMinecraft().thePlayer.playSound(getCastSound(), 1.0F, 1.0F);
  32.  
  33. AxisAlignedBB fanBox = getEffectAABB(player.worldObj, player);
  34. Vec3d lookVec = player.getLookVec();
  35.  
  36. fanEntitiesAABB(player.worldObj, player, fanBox);
  37. player.worldObj.spawnEntityInWorld(new EntityShockwaveFX(player.worldObj, player));
  38. }
  39.  
  40. @Override
  41. public int getCooldown() { return 10; }
  42.  
  43. private static void fanEntitiesAABB(World world, EntityPlayer player, AxisAlignedBB fanBox) {
  44. Vec3d moveVec = player.getLookVec();
  45.  
  46. List<Entity> inBox = world.getEntitiesWithinAABBExcludingEntity(player, fanBox);
  47.  
  48. float force = 2.0F;
  49.  
  50. for (Entity entity : inBox) {
  51. if (entity.canBePushed() || entity instanceof EntityItem) {
  52. entity.addVelocity(moveVec.xCoord * force, 0.625, moveVec.zCoord * force);
  53. }
  54. }
  55. }
  56.  
  57. private static AxisAlignedBB getEffectAABB(World world, EntityPlayer player) {
  58. double range = 3.0D;
  59. double radius = 2.0D;
  60.  
  61. Vec3d srcVec = new Vec3d(player.posX, player.posY + player.getEyeHeight(), player.posZ);
  62. Vec3d lookVec = player.getLookVec();
  63. Vec3d destVec = srcVec.addVector(lookVec.xCoord * range, lookVec.yCoord * range, lookVec.zCoord * range);
  64.  
  65. AxisAlignedBB crumbleBox = new AxisAlignedBB(destVec.xCoord - radius, destVec.yCoord - radius, destVec.zCoord - radius, destVec.xCoord + radius, destVec.yCoord + radius, destVec.zCoord + radius);
  66.  
  67. return crumbleBox;
  68. }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement