+ update
This commit is contained in:
@@ -1,58 +1,44 @@
|
||||
package me.skymc.taboolib.damage;
|
||||
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
*/
|
||||
public class DamageUtils {
|
||||
|
||||
public static Player getAttackerInDamageEvent(EntityDamageByEntityEvent e) {
|
||||
if (e.getDamager() instanceof Player) {
|
||||
return (Player) e.getDamager();
|
||||
} else if (e.getDamager() instanceof Projectile && ((Projectile) e.getDamager()).getShooter() instanceof Player) {
|
||||
return (Player) ((Projectile) e.getDamager()).getShooter();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// *********************************
|
||||
//
|
||||
// Deprecated
|
||||
//
|
||||
// *********************************
|
||||
|
||||
@Deprecated
|
||||
public static void damage(Player player, LivingEntity victim, double damage) {
|
||||
dmg(player, victim, damage);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void damage(Player player, Entity victim, double damage) {
|
||||
if (victim instanceof LivingEntity) {
|
||||
dmg(player, (LivingEntity) victim, damage);
|
||||
}
|
||||
dmg(player, (LivingEntity) victim, damage);
|
||||
}
|
||||
|
||||
public static void dmg(LivingEntity paramLivingEntity1, LivingEntity paramLivingEntity2, double paramDouble) {
|
||||
if ((paramLivingEntity2.hasMetadata("NPC")) || (paramLivingEntity1.hasMetadata("NPC"))) {
|
||||
return;
|
||||
}
|
||||
|
||||
Object localObject1;
|
||||
try {
|
||||
localObject1 = paramLivingEntity1.getClass().getDeclaredMethod("getHandle").invoke(paramLivingEntity1);
|
||||
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException localIllegalAccessException1) {
|
||||
return;
|
||||
}
|
||||
|
||||
Object localObject2;
|
||||
try {
|
||||
localObject2 = paramLivingEntity2.getClass().getDeclaredMethod("getHandle").invoke(paramLivingEntity2);
|
||||
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException localIllegalAccessException2) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
Class<?> DamageSource = nmsClass("DamageSource");
|
||||
Object localObject3 = DamageSource.getDeclaredMethod("playerAttack", nmsClass("EntityHuman")).invoke(DamageSource, localObject1);
|
||||
|
||||
localObject2.getClass().getDeclaredMethod("damageEntity", new Class[]{DamageSource, Float.TYPE}).invoke(localObject2, localObject3, (float) paramDouble);
|
||||
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private static Class<?> nmsClass(String paramString) {
|
||||
String str = "net.minecraft.server." + TabooLib.getVersion() + "." + paramString;
|
||||
try {
|
||||
return Class.forName(str);
|
||||
} catch (ClassNotFoundException e) {
|
||||
return null;
|
||||
}
|
||||
@Deprecated
|
||||
public static void dmg(LivingEntity attacker, LivingEntity victim, double damage) {
|
||||
attacker.damage(damage, victim);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,19 +4,11 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
|
||||
@Deprecated
|
||||
public class GetDamager {
|
||||
|
||||
public static Player get(EntityDamageByEntityEvent e) {
|
||||
Player p = null;
|
||||
if (e.getDamager() instanceof Projectile) {
|
||||
Projectile arrow = (Projectile) e.getDamager();
|
||||
if (arrow.getShooter() instanceof Player) {
|
||||
p = (Player) arrow.getShooter();
|
||||
}
|
||||
} else if (e.getDamager() instanceof Player) {
|
||||
p = (Player) e.getDamager();
|
||||
}
|
||||
return p;
|
||||
return DamageUtils.getAttackerInDamageEvent(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,22 +1,13 @@
|
||||
package me.skymc.taboolib.damage;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.event.entity.EntityDeathEvent;
|
||||
|
||||
@Deprecated
|
||||
public class GetKiller {
|
||||
|
||||
public static Player get(EntityDeathEvent e) {
|
||||
Player p = null;
|
||||
if (e.getEntity().getKiller() instanceof Projectile) {
|
||||
Projectile arrow = (Projectile) e.getEntity().getKiller();
|
||||
if (arrow.getShooter() instanceof Player) {
|
||||
p = (Player) arrow.getShooter();
|
||||
}
|
||||
} else if (e.getEntity().getKiller() != null) {
|
||||
p = e.getEntity().getKiller();
|
||||
}
|
||||
return p;
|
||||
return e.getEntity().getKiller();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user