package tc.oc.pgm.tracker.resolvers;

import javax.annotation.Nullable;
import org.bukkit.entity.Entity;
import org.bukkit.event.entity.EntityDamageEvent;
import tc.oc.pgm.api.tracker.DamageResolver;
import tc.oc.pgm.api.tracker.info.PhysicalInfo;
import tc.oc.pgm.tracker.info.ExplosionInfo;

public class ExplosionDamageResolver implements DamageResolver {
  @Override
  public @Nullable ExplosionInfo resolveDamage(
      EntityDamageEvent.DamageCause damageType, Entity victim, @Nullable PhysicalInfo damager) {
    switch (damageType) {
      case ENTITY_EXPLOSION:
      case BLOCK_EXPLOSION:
        // Bukkit fires block explosion events with a null damager in rare situations
        return damager == null ? null : new ExplosionInfo(damager);

      default:
        return null;
    }
  }
}