@@ -0,0 +1,1636 @@
+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.base.SimpleMeleeDamageInfo;%0Aimport org.bukkit.Material;%0Aimport org.bukkit.entity.LivingEntity;%0Aimport org.bukkit.event.entity.EntityDamageByEntityEvent;%0Aimport org.bukkit.event.entity.EntityDamageEvent;%0Aimport org.bukkit.event.entity.EntityDamageEvent.DamageCause;%0Aimport org.bukkit.inventory.ItemStack;%0A%0Aimport javax.annotation.Nonnull;%0Aimport javax.annotation.Nullable;%0A%0Apublic class MeleeDamageResolver implements DamageResolver %7B%0A    public @Nullable%0A    DamageInfo resolve(@Nonnull LivingEntity entity, @Nonnull Lifetime lifetime, @Nonnull EntityDamageEvent damageEvent) %7B%0A        if(damageEvent instanceof EntityDamageByEntityEvent && damageEvent.getCause() == DamageCause.ENTITY_ATTACK) %7B%0A            EntityDamageByEntityEvent entityEvent = (EntityDamageByEntityEvent) damageEvent;%0A%0A            if(entityEvent.getDamager() instanceof LivingEntity) %7B%0A                LivingEntity attacker = (LivingEntity) entityEvent.getDamager();%0A%0A                Material weaponMaterial;%0A                ItemStack held = attacker.getEquipment().getItemInMainHand();%0A                if(held != null) %7B%0A                    weaponMaterial = held.getType();%0A                %7D else %7B%0A                    weaponMaterial = Material.AIR;%0A                %7D%0A%0A                return new SimpleMeleeDamageInfo(attacker, weaponMaterial);%0A            %7D%0A        %7D%0A%0A        return null;%0A    %7D%0A%7D%0A

Create MeleeDamageResolver.java