FutureIswap

Untitled

Feb 24th, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.87 KB | None | 0 0
  1. package com.mintyplays.tutorial.module.combat;
  2.  
  3. import com.mintyplays.tutorial.Tutorial;
  4. import com.mintyplays.tutorial.event.EventTarget;
  5. import com.mintyplays.tutorial.event.events.EventPostMotionUpdate;
  6. import com.mintyplays.tutorial.event.events.EventPreMotionUpdate;
  7. import com.mintyplays.tutorial.module.Category;
  8. import com.mintyplays.tutorial.module.Module;
  9. import de.Hero.settings.Setting;
  10. import net.minecraft.entity.Entity;
  11. import net.minecraft.entity.EntityLivingBase;
  12. import net.minecraft.entity.monster.EntityMob;
  13. import net.minecraft.entity.passive.EntityAnimal;
  14. import net.minecraft.entity.passive.EntityVillager;
  15. import net.minecraft.entity.player.EntityPlayer;
  16. import net.minecraft.item.ItemSword;
  17. import net.minecraft.util.MathHelper;
  18. import org.lwjgl.input.Keyboard;
  19.  
  20. public class KillAura extends Module {
  21. private EntityLivingBase target;
  22. private long current, last;
  23. private int delay = 8;
  24. private float yaw, pitch;
  25. private boolean others;
  26.  
  27. public KillAura() {
  28. super("KillAura", Keyboard.KEY_R, Category.COMBAT);
  29. }
  30.  
  31. @Override
  32. public void setup() {
  33. Tutorial.instance.settingsManager.rSetting(new Setting("Crack Size", this, 5, 0, 15, true));
  34. Tutorial.instance.settingsManager.rSetting(new Setting("Existed", this, 30, 0, 500, true));
  35. Tutorial.instance.settingsManager.rSetting(new Setting("FOV", this, 360, 0, 360, true));
  36. Tutorial.instance.settingsManager.rSetting(new Setting("AutoBlock", this, true));
  37. Tutorial.instance.settingsManager.rSetting(new Setting("Invisibles", this, false));
  38. Tutorial.instance.settingsManager.rSetting(new Setting("Players", this, true));
  39. Tutorial.instance.settingsManager.rSetting(new Setting("Animals", this, false));
  40. Tutorial.instance.settingsManager.rSetting(new Setting("Monsters", this, false));
  41. Tutorial.instance.settingsManager.rSetting(new Setting("Villagers", this, false));
  42. Tutorial.instance.settingsManager.rSetting(new Setting("Teams", this, false));
  43. }
  44.  
  45. @EventTarget
  46. public void onPre(EventPreMotionUpdate event) {
  47. target = getClosest(mc.playerController.getBlockReachDistance());
  48. if(target == null)
  49. return;
  50. updateTime();
  51. yaw = mc.thePlayer.rotationYaw;
  52. pitch = mc.thePlayer.rotationPitch;
  53. boolean block = target != null && Tutorial.instance.settingsManager.getSettingByName("AutoBlock").getValBoolean() && mc.thePlayer.getHeldItem() != null && mc.thePlayer.getHeldItem().getItem() != null && mc.thePlayer.getHeldItem().getItem() instanceof ItemSword;
  54. if(block && target.getDistanceToEntity(mc.thePlayer) < 8F)
  55. mc.playerController.sendUseItem(mc.thePlayer, mc.theWorld, mc.thePlayer.inventory.getCurrentItem());
  56. if(current - last > 1000 / delay) {
  57. attack(target);
  58. resetTime();
  59. }
  60. }
  61.  
  62. @EventTarget
  63. public void onPost(EventPostMotionUpdate event) {
  64. if(target == null)
  65. return;
  66. mc.thePlayer.rotationYaw = yaw;
  67. mc.thePlayer.rotationPitch = pitch;
  68. }
  69.  
  70. private void attack(Entity entity) {
  71. for(int i = 0; i < Tutorial.instance.settingsManager.getSettingByName("Crack Size").getValDouble(); i++)
  72. mc.thePlayer.onCriticalHit(entity);
  73.  
  74. mc.thePlayer.swingItem();
  75. mc.playerController.attackEntity(mc.thePlayer, entity);
  76. }
  77.  
  78. private void updateTime() {
  79. current = (System.nanoTime() / 1000000L);
  80. }
  81.  
  82. private void resetTime() {
  83. last = (System.nanoTime() / 1000000L);
  84. }
  85.  
  86. private EntityLivingBase getClosest(double range) {
  87. double dist = range;
  88. EntityLivingBase target = null;
  89. for (Object object : mc.theWorld.loadedEntityList) {
  90. Entity entity = (Entity) object;
  91. if (entity instanceof EntityLivingBase) {
  92. EntityLivingBase player = (EntityLivingBase) entity;
  93. if (canAttack(player)) {
  94. double currentDist = mc.thePlayer.getDistanceToEntity(player);
  95. if (currentDist <= dist) {
  96. dist = currentDist;
  97. target = player;
  98. }
  99. }
  100. }
  101. }
  102. return target;
  103. }
  104.  
  105. private boolean canAttack(EntityLivingBase player) {
  106. if(player instanceof EntityPlayer || player instanceof EntityAnimal || player instanceof EntityMob || player instanceof EntityVillager) {
  107. if (player instanceof EntityPlayer && !Tutorial.instance.settingsManager.getSettingByName("Players").getValBoolean())
  108. return false;
  109. if (player instanceof EntityAnimal && !Tutorial.instance.settingsManager.getSettingByName("Animals").getValBoolean())
  110. return false;
  111. if (player instanceof EntityMob && !Tutorial.instance.settingsManager.getSettingByName("Monsters").getValBoolean())
  112. return false;
  113. if (player instanceof EntityVillager && !Tutorial.instance.settingsManager.getSettingByName("Villagers").getValBoolean())
  114. return false;
  115. }
  116. if(player.isOnSameTeam(mc.thePlayer) && Tutorial.instance.settingsManager.getSettingByName("Teams").getValBoolean())
  117. return false;
  118. if(player.isInvisible() && !Tutorial.instance.settingsManager.getSettingByName("Invisibles").getValBoolean())
  119. return false;
  120. if(!isInFOV(player, Tutorial.instance.settingsManager.getSettingByName("FOV").getValDouble()))
  121. return false;
  122. return player != mc.thePlayer && player.isEntityAlive() && mc.thePlayer.getDistanceToEntity(player) <= mc.playerController.getBlockReachDistance() && player.ticksExisted > Tutorial.instance.settingsManager.getSettingByName("Existed").getValDouble();
  123. }
  124.  
  125. private boolean isInFOV(EntityLivingBase entity, double angle) {
  126. angle *= .5D;
  127. double angleDiff = getAngleDifference(mc.thePlayer.rotationYaw, getRotations(entity.posX, entity.posY, entity.posZ)[0]);
  128. return (angleDiff > 0 && angleDiff < angle) || (-angle < angleDiff && angleDiff < 0);
  129. }
  130.  
  131. private float getAngleDifference(float dir, float yaw) {
  132. float f = Math.abs(yaw - dir) % 360F;
  133. float dist = f > 180F ? 360F - f : f;
  134. return dist;
  135. }
  136.  
  137. private float[] getRotations(double x, double y, double z) {
  138. double diffX = x + .5D - mc.thePlayer.posX;
  139. double diffY = (y + .5D) / 2D - (mc.thePlayer.posY + mc.thePlayer.getEyeHeight());
  140. double diffZ = z + .5D - mc.thePlayer.posZ;
  141.  
  142. double dist = MathHelper.sqrt_double(diffX * diffX + diffZ * diffZ);
  143. float yaw = (float)(Math.atan2(diffZ, diffX) * 180D / Math.PI) - 90F;
  144. float pitch = (float)-(Math.atan2(diffY, dist) * 180D / Math.PI);
  145.  
  146. return new float[] { yaw, pitch };
  147. }
  148. }
Advertisement
Add Comment
Please, Sign In to add comment