svdragster

headmovement

Oct 27th, 2015
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.95 KB | None | 0 0
  1. // Inside of the DamageEvent
  2.  
  3. /*
  4.  * Head Movement
  5.  */
  6.  
  7.  
  8. // Check if the detection is enabled in this world
  9. HeadMovement:
  10. if (getOwner().inWorld(world, DetectionType.HEAD_MOVEMENT)) {
  11.     double rotation = attacker.getEyeLocation().getYaw();
  12.     double pitch = attacker.getEyeLocation().getPitch();
  13.     double differenceRotation = Math.abs(stats.getRotation() - rotation);
  14.     double differencePitch = stats.getPitch() - pitch;
  15.    
  16.     // just for debug messages
  17.     String stringRot = differenceRotation + "";
  18.     if (stringRot.length() > 5) {
  19.         stringRot = stringRot.substring(0, 6);
  20.     }
  21.     String stringPitch = differencePitch + "";
  22.     if (stringPitch.length() > 5) {
  23.         stringPitch = stringPitch.substring(0, 6);
  24.     }
  25.    
  26.     // Check if the difference between last two damages is <= 650
  27.     if (difference <= 650) {
  28.        
  29.         // Check if the head is moving up or down too quickly
  30.         if (differencePitch >= 13) {
  31.             if (difference <= 501) {
  32.                 stats.setHeadDangerLevel(stats.getHeadDangerLevel() + 50); 
  33.             }
  34.             stats.setHeadDangerLevel(stats.getHeadDangerLevel() + 101);
  35.         } else if (differencePitch >= 10) {
  36.             if (difference <= 501) {
  37.                 stats.setHeadDangerLevel(stats.getHeadDangerLevel() + 45); 
  38.             }
  39.             stats.setHeadDangerLevel(stats.getHeadDangerLevel() + 54);
  40.         }
  41.        
  42.         // Check if the attacked mob has moved since the last time (if the player hits the same mob again)
  43.         // to prevent false positives with mobs that are stuck somewhere
  44.         if (lastMob != null && lastMob.equals(mob)) {
  45.             double distance = mob.getLocation().distance(lastMob.getLocation());
  46.             if (distance <= 0.05 && attacker.getLocation().distance(mob.getLocation()) <= 1.0) {
  47.                 stats.setHeadDangerLevel(stats.getHeadDangerLevel() - 27);
  48.                
  49.                 // debug message
  50.                 getOwner().castToAdmins(stats, "[combat] " + ChatColor.GREEN + "(head#) enemy has not moved enough " + stringRot + ", " + stringPitch + ", DL " + ChatColor.YELLOW + stats.getHeadDangerLevel());
  51.                 break HeadMovement;
  52.             }
  53.         }
  54.        
  55.         // Check if the players head is snapping horizontally
  56.         if (differenceRotation > 116 && differenceRotation < 270) {
  57.             stats.setHeadDangerLevel(stats.getHeadDangerLevel() + 109);
  58.             if (difference <= 501) {
  59.                 stats.setHeadDangerLevel(stats.getHeadDangerLevel() + 59); 
  60.             }
  61.             if (differenceRotation > 150) {
  62.                 stats.setHeadDangerLevel(stats.getHeadDangerLevel() + 59);
  63.             }
  64.         } else {
  65.             stats.setHeadDangerLevel(stats.getHeadDangerLevel() - 70);
  66.            
  67.             // debug
  68.             getOwner().castToAdmins(stats, "[combat] " + ChatColor.GREEN + "(head#) " + stringRot + ", " + stringPitch + ", DL " + ChatColor.YELLOW + stats.getHeadDangerLevel());
  69.         }
  70.        
  71.         // debug
  72.         if (stats.getHeadDangerLevel() >= 150) {
  73.             getOwner().castToAdmins(stats, "[combat] (head!) " + stringRot + ", " + stringPitch + ", DL " + ChatColor.YELLOW + stats.getHeadDangerLevel());
  74.         }
  75.        
  76.         // get value from config
  77.         int maxLevel = (int) NoCheat.getVal("head_level").getValue();
  78.        
  79.         // prevent dealing damage if the danger level is too high
  80.         if (stats.getHeadDangerLevel() > maxLevel) {
  81.             getOwner().alert(attacker, attacker.getName() + ": Weird head movement", null, AlertPriority.LOW, stats.getCombatDangerLevel(), DetectionType.HEAD_MOVEMENT);
  82.             if (stats.shouldBlock()) {
  83.                 stats.addCombatDangerLevel(19);
  84.                 event.setCancelled(true);
  85.                 if (stats.getCombatDangerLevel() > 350) {
  86.                     // prevent the player from dealing damage for 1000 milliseconds
  87.                     stats.setBlockDamage(1000);
  88.                 }
  89.                 if (stats.getCombatDangerLevel() > 1500) {
  90.                     addBanDangerLevel(stats, 10, 2);
  91.                 }
  92.             }
  93.             stats.setHeadDangerLevel(maxLevel - 100);
  94.         }
  95.     } else {
  96.         stats.setHeadDangerLevel(stats.getHeadDangerLevel() - 40);
  97.         if (difference > 7000) {
  98.             stats.setHeadDangerLevel(stats.getHeadDangerLevel() - 40); 
  99.         }
  100.         getOwner().castToAdmins(stats, "[combat] " + ChatColor.GREEN + "(head#) " + stringRot + ", " + stringPitch + ", DL " + ChatColor.YELLOW + stats.getHeadDangerLevel());
  101.     }
  102.     stats.setRotation(rotation);
  103.     stats.setPitch(pitch);
  104. }
Advertisement
Add Comment
Please, Sign In to add comment