Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.falanor;
- import net.minecraft.server.v1_12_R1.EntityHuman;
- import net.minecraft.server.v1_12_R1.MobEffects;
- import org.bukkit.attribute.Attribute;
- import org.bukkit.attribute.AttributeModifier;
- import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.Listener;
- import org.bukkit.event.entity.EntityDamageByEntityEvent;
- import org.bukkit.event.player.PlayerJoinEvent;
- import org.bukkit.event.player.PlayerQuitEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- public class Main extends JavaPlugin implements Listener
- {
- public void onEnable()
- {
- this.getServer().getPluginManager().registerEvents(this,this);
- }
- @EventHandler
- public void onPlayerJoin(PlayerJoinEvent e)
- {
- Player p = e.getPlayer();
- p.setMaximumNoDamageTicks(17);
- p.getAttribute(Attribute.GENERIC_ATTACK_SPEED).addModifier(new AttributeModifier("generic.attackSpeed", 9.9999999E7D, AttributeModifier.Operation.ADD_NUMBER));
- }
- @EventHandler
- public void quit(PlayerQuitEvent e){
- final Player p = e.getPlayer();
- for(AttributeModifier a : p.getAttribute(Attribute.GENERIC_ATTACK_SPEED).getModifiers())
- {
- if(a.getName().equals("generic.attackSpeed"))
- {
- p.getAttribute(Attribute.GENERIC_ATTACK_SPEED).removeModifier(a);
- }
- }
- }
- private boolean isCritical(Player p)
- {
- EntityHuman eh = ((CraftPlayer) p).getHandle();
- return eh.fallDistance > 0.0F && !eh.onGround && !eh.m_() && !eh.isInWater() && !eh.hasEffect(MobEffects.BLINDNESS) && !eh.isPassenger() && !eh.isSprinting();
- }
- @EventHandler(priority = EventPriority.NORMAL)
- public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent e){
- if(!e.isCancelled())
- {
- if (e.getEntity() instanceof Player && e.getDamager() instanceof Player)
- {
- Player hurtPlayer = (Player) e.getEntity();
- Player damager = (Player) e.getDamager();
- boolean blocking = false;
- if (hurtPlayer.isBlocking())
- {
- blocking = true;
- }
- if (isCritical(damager) && !blocking)
- {
- double damage = e.getDamage();
- double d = damage / 3d;
- e.setDamage(d * 2d + (d * .25d));
- hurtPlayer.setVelocity(damager.getLocation().getDirection().multiply(0.265));
- } else if (!hurtPlayer.isOnGround())
- {
- hurtPlayer.setVelocity(damager.getLocation().getDirection().multiply(0.245).setY(0.1));
- } else
- {
- hurtPlayer.setVelocity(damager.getLocation().getDirection().multiply(0.19));
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement