package tc.oc.pgm.tracker; import javax.annotation.Nullable; import org.bukkit.entity.Entity; import tc.oc.pgm.match.ParticipantState; import tc.oc.pgm.tracker.damage.PhysicalInfo; import tc.oc.pgm.tracker.damage.TrackerInfo; public interface EntityResolver { PhysicalInfo resolveEntity(Entity entity); @Nullable TrackerInfo resolveInfo(Entity entity); default @Nullable <T extends TrackerInfo> T resolveInfo(Entity entity, Class<T> infoType) { TrackerInfo info = resolveInfo(entity); return infoType.isInstance(info) ? infoType.cast(info) : null; } @Nullable ParticipantState getOwner(Entity entity); }