package com.bergerkiller.bukkit.common.reflection.classes; import org.bukkit.entity.Arrow; import org.bukkit.entity.Entity; import org.bukkit.entity.Fireball; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.LivingEntity; import com.bergerkiller.bukkit.common.internal.CommonNMS; import net.minecraft.server.DamageSource; import net.minecraft.server.EntityArrow; import net.minecraft.server.EntityFireball; import net.minecraft.server.Explosion; public class DamageSourceRef { public static final Object FIRE = DamageSource.FIRE; public static final Object LAVA = DamageSource.LAVA; public static final Object STUCK = DamageSource.STUCK; public static final Object DROWN = DamageSource.DROWN; public static final Object STARVE = DamageSource.STARVE; public static final Object CACTUS = DamageSource.CACTUS; public static final Object FALL = DamageSource.FALL; public static final Object OUT_OF_WORLD = DamageSource.OUT_OF_WORLD; public static final Object GENERIC = DamageSource.GENERIC; public static final Object MAGIC = DamageSource.MAGIC; public static final Object WITHER = DamageSource.WITHER; public static final Object ANVIL = DamageSource.ANVIL; public static final Object FALLING_BLOCK = DamageSource.FALLING_BLOCK; public static Object forMobAttack(LivingEntity damager) { return DamageSource.mobAttack(CommonNMS.getNative(damager)); } public static Object forPlayerAttack(HumanEntity damager) { return DamageSource.playerAttack(CommonNMS.getNative(damager)); } public static Object forArrowHit(Arrow arrowEntity, Entity hitEntity) { return DamageSource.arrow(CommonNMS.getNative(arrowEntity, EntityArrow.class), CommonNMS.getNative(hitEntity)); } public static Object forFireballHit(Fireball fireballEntity, Entity hitEntity) { return DamageSource.fireball(CommonNMS.getNative(fireballEntity, EntityFireball.class), CommonNMS.getNative(hitEntity)); } public static Object forThrownHit(Entity projectile, Entity hitEntity) { return DamageSource.projectile(CommonNMS.getNative(projectile), CommonNMS.getNative(hitEntity)); } public static Object forMagicHit(Entity source, Entity hitEntity) { return DamageSource.b(CommonNMS.getNative(source), CommonNMS.getNative(hitEntity)); } public static Object forThornsDamage(Entity damagedEntity) { return DamageSource.a(CommonNMS.getNative(damagedEntity)); } public static Object forExplosion(Entity explodableEntity) { Explosion expl = null; if (explodableEntity != null) { expl = new Explosion(null, CommonNMS.getNative(explodableEntity), 0.0, 0.0, 0.0, 0.0f); } return DamageSource.explosion(expl); } public static Entity getEntity(Object damageSource) { return CommonNMS.getEntity(((DamageSource) damageSource).getEntity()); } public static boolean isExplosive(Object damageSource) { return ((DamageSource) damageSource).isExplosion(); } public static boolean isFireDamage(Object damageSource) { return ((DamageSource) damageSource).o(); } }