Advertisement
Guest User

Untitled

a guest
Oct 20th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.02 KB | None | 0 0
  1. package com.falanor;
  2.  
  3. import net.minecraft.server.v1_12_R1.EntityHuman;
  4. import net.minecraft.server.v1_12_R1.MobEffects;
  5. import org.bukkit.attribute.Attribute;
  6. import org.bukkit.attribute.AttributeModifier;
  7. import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.event.EventHandler;
  10. import org.bukkit.event.EventPriority;
  11. import org.bukkit.event.Listener;
  12. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  13. import org.bukkit.event.player.PlayerJoinEvent;
  14. import org.bukkit.event.player.PlayerQuitEvent;
  15. import org.bukkit.plugin.java.JavaPlugin;
  16.  
  17. public class Main extends JavaPlugin implements Listener
  18. {
  19.  
  20. public void onEnable()
  21. {
  22. this.getServer().getPluginManager().registerEvents(this,this);
  23. }
  24.  
  25. @EventHandler
  26. public void onPlayerJoin(PlayerJoinEvent e)
  27. {
  28. Player p = e.getPlayer();
  29.  
  30. p.setMaximumNoDamageTicks(17);
  31. p.getAttribute(Attribute.GENERIC_ATTACK_SPEED).addModifier(new AttributeModifier("generic.attackSpeed", 9.9999999E7D, AttributeModifier.Operation.ADD_NUMBER));
  32. }
  33.  
  34. @EventHandler
  35. public void quit(PlayerQuitEvent e){
  36.  
  37. final Player p = e.getPlayer();
  38. for(AttributeModifier a : p.getAttribute(Attribute.GENERIC_ATTACK_SPEED).getModifiers())
  39. {
  40. if(a.getName().equals("generic.attackSpeed"))
  41. {
  42. p.getAttribute(Attribute.GENERIC_ATTACK_SPEED).removeModifier(a);
  43.  
  44. }
  45. }
  46. }
  47.  
  48. private boolean isCritical(Player p)
  49. {
  50. EntityHuman eh = ((CraftPlayer) p).getHandle();
  51. return eh.fallDistance > 0.0F && !eh.onGround && !eh.m_() && !eh.isInWater() && !eh.hasEffect(MobEffects.BLINDNESS) && !eh.isPassenger() && !eh.isSprinting();
  52. }
  53.  
  54. @EventHandler(priority = EventPriority.NORMAL)
  55. public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent e){
  56. if(!e.isCancelled())
  57. {
  58. if (e.getEntity() instanceof Player && e.getDamager() instanceof Player)
  59. {
  60. Player hurtPlayer = (Player) e.getEntity();
  61. Player damager = (Player) e.getDamager();
  62.  
  63. boolean blocking = false;
  64.  
  65. if (hurtPlayer.isBlocking())
  66. {
  67. blocking = true;
  68. }
  69.  
  70. if (isCritical(damager) && !blocking)
  71. {
  72. double damage = e.getDamage();
  73. double d = damage / 3d;
  74. e.setDamage(d * 2d + (d * .25d));
  75. hurtPlayer.setVelocity(damager.getLocation().getDirection().multiply(0.265));
  76. } else if (!hurtPlayer.isOnGround())
  77. {
  78. hurtPlayer.setVelocity(damager.getLocation().getDirection().multiply(0.245).setY(0.1));
  79. } else
  80. {
  81. hurtPlayer.setVelocity(damager.getLocation().getDirection().multiply(0.19));
  82. }
  83. }
  84. }
  85. }
  86.  
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement