package tc.oc.pgm.tracker.resolvers; import javax.annotation.Nullable; import org.bukkit.entity.Entity; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.potion.PotionEffectType; import tc.oc.pgm.tracker.damage.GenericPotionInfo; import tc.oc.pgm.tracker.damage.PhysicalInfo; import tc.oc.pgm.tracker.damage.PotionInfo; import tc.oc.pgm.tracker.damage.ProjectileInfo; public class PotionDamageResolver implements DamageResolver { @Override public @Nullable PotionInfo resolveDamage(EntityDamageEvent.DamageCause damageType, Entity victim, @Nullable PhysicalInfo damager) { // If potion is already resolved (i.e. as a splash potion), leave it alone if(damager instanceof PotionInfo || damager instanceof ProjectileInfo && ((ProjectileInfo) damager).getProjectile() instanceof PotionInfo) { return null; } final PotionEffectType effect; switch(damageType) { case POISON: effect = PotionEffectType.POISON; break; case WITHER: effect = PotionEffectType.WITHER; break; case MAGIC: effect = PotionEffectType.HARM; break; default: return null; } return new GenericPotionInfo(effect); } }