@@ -0,0 +1,2192 @@
+package deterno.fight.tgm.damage.tracker.damage.resolvers;%0A%0Aimport deterno.fight.tgm.damage.tracker.DamageInfo;%0Aimport deterno.fight.tgm.damage.tracker.DamageResolver;%0Aimport deterno.fight.tgm.damage.tracker.Lifetime;%0Aimport deterno.fight.tgm.damage.tracker.damage.OwnedMobDamageInfo;%0Aimport deterno.fight.tgm.damage.tracker.trackers.OwnedMobTracker;%0Aimport org.bukkit.entity.LivingEntity;%0Aimport org.bukkit.entity.Player;%0Aimport org.bukkit.entity.Projectile;%0Aimport org.bukkit.event.entity.EntityDamageByEntityEvent;%0Aimport org.bukkit.event.entity.EntityDamageEvent;%0A%0Aimport javax.annotation.Nonnull;%0Aimport javax.annotation.Nullable;%0A%0Apublic class OwnedMobDamageResolver implements DamageResolver %7B%0A    private final OwnedMobTracker ownedMobTracker;%0A%0A    public OwnedMobDamageResolver(OwnedMobTracker ownedMobTracker) %7B%0A        this.ownedMobTracker = ownedMobTracker;%0A    %7D%0A%0A    public @Nullable%0A    DamageInfo resolve(@Nonnull LivingEntity entity, @Nonnull Lifetime lifetime, @Nonnull EntityDamageEvent damageEvent) %7B%0A        if(damageEvent instanceof EntityDamageByEntityEvent) %7B%0A            EntityDamageByEntityEvent event = (EntityDamageByEntityEvent) damageEvent;%0A%0A            if(event.getDamager() instanceof Projectile) %7B%0A                if(((Projectile) event.getDamager()).getShooter() == null) return null;%0A                if(!(((Projectile) event.getDamager()).getShooter() instanceof Player) && ((Projectile) event.getDamager()).getShooter() instanceof LivingEntity) %7B%0A                    LivingEntity mob = (LivingEntity) ((Projectile) event.getDamager()).getShooter();%0A                    Player mobOwner = this.ownedMobTracker.getOwner(mob);%0A%0A                    if(mobOwner != null) return new OwnedMobDamageInfo(mob, mobOwner, (Projectile) event.getDamager());%0A                %7D%0A            %7D else if(!(event.getDamager() instanceof Player) && event.getDamager() instanceof LivingEntity) %7B%0A                LivingEntity mob = (LivingEntity) event.getDamager();%0A                Player mobOwner = this.ownedMobTracker.getOwner(mob);%0A%0A                if(mobOwner != null) return new OwnedMobDamageInfo(mob, mobOwner, null);%0A            %7D%0A        %7D%0A        return null;%0A    %7D%0A%7D%0A

Create OwnedMobDamageResolver.java