@@ -0,0 +1,2029 @@
+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.TNTDamageInfo;%0Aimport deterno.fight.tgm.damage.tracker.trackers.DispenserTracker;%0Aimport deterno.fight.tgm.damage.tracker.trackers.ExplosiveTracker;%0Aimport org.bukkit.entity.LivingEntity;%0Aimport org.bukkit.entity.Player;%0Aimport org.bukkit.entity.TNTPrimed;%0Aimport org.bukkit.event.entity.EntityDamageByEntityEvent;%0Aimport org.bukkit.event.entity.EntityDamageEvent;%0A%0Aimport javax.annotation.Nonnull;%0Aimport javax.annotation.Nullable;%0A%0A%0Apublic class TNTDamageResolver implements DamageResolver %7B%0A    private final ExplosiveTracker explosiveTracker;%0A    private final DispenserTracker dispenserTracker;%0A%0A    public TNTDamageResolver(ExplosiveTracker explosiveTracker, DispenserTracker dispenserTracker) %7B%0A        this.explosiveTracker = explosiveTracker;%0A        this.dispenserTracker = dispenserTracker;%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 TNTPrimed) %7B%0A                TNTPrimed tnt = (TNTPrimed) event.getDamager();%0A                Player owner = null;%0A                if(this.explosiveTracker.hasOwner(tnt)) %7B%0A                    owner = this.explosiveTracker.getOwner(tnt);%0A                %7D else if(this.dispenserTracker.hasOwner(tnt)) %7B%0A                    // getPlayer() is temporary to keep owner uniform until other services use OfflinePlayer%0A                    owner = this.dispenserTracker.getOwner(tnt).getPlayer();%0A                %7D%0A%0A                return new TNTDamageInfo(tnt, owner);%0A            %7D%0A        %7D%0A%0A        return null;%0A    %7D%0A%7D%0A

Create TNTDamageResolver.java