Атака моба или игрока с зачарованным оружием.

Версия Minecraft
1.12.2
API
Forge
122
4
6
Столкнулся с небольшой проблемой, не выполняется эвент при котором тестируется ("оружие" на свое зачарование) при ударе по мобу или моб по игроку и выполняется нанесение определенного типа урона. Если знаете, как это сделать, буду благодарен если напишите.
 
Решение
мда я много чего перепробовал но вышло только с
Java:
public void onEntityDamaged(EntityLivingBase user, Entity target, int level) {
        if (target instanceof EntityLivingBase) {
            EntityLivingBase entitylivingbase = (EntityLivingBase)target;
                entitylivingbase.attackEntityFrom(DamageInit.VOID, 100.0f);
        }
    }
122
4
6
Java:
@SubscribeEvent
public void entityAttack(LivingAttackEvent e) {
if(e.getEntityLiving() != null && EnchantHelper.hasVoidDamegeEnchantment((EntityPlayer) e.getEntity())) {
    e.getEntityLiving().attackEntityFrom(DamageInit.VOID, 10.0f);
}
Java:
public class EnchantHelper {
    
    public static boolean hasVoidDamegeEnchantment(EntityPlayer player) {
        return EnchantmentHelper.getEnchantmentLevel(EnchantmentsInit.VOID_DAMAGE, player.getHeldItemMainhand()) > 0;
    }
}
Java:
public class EnchantmentVoidDamage extends Enchantment {

    public EnchantmentVoidDamage(String name, Rarity rarity, EnumEnchantmentType type, EntityEquipmentSlot... slots) {
        super(rarity, type, slots);
        
        setEnchantmentName(name);
        
        EnchantmentsInit.ENCHANTMENTS.add(this);
    }
    private void setEnchantmentName(String name) {
        this.setRegistryName(Main.MODID, name);
        this.setName(name);
    }
    
    @Override
    public int getMaxLevel() {
        return 1;
    }
    @Override
    public boolean canApplyTogether(Enchantment enchantment) {
        return super.canApplyTogether(enchantment) && enchantment != Enchantments.FIRE_ASPECT;//Несовместимости
    }
    @Override
    public int getMinEnchantability(int enchantmentLevel) {
        return 10;
    }
    @Override
    public int getMaxEnchantability(int enchantmentLevel) {
        return 20;
    }
}
 

tox1cozZ

aka Agravaine
8,456
598
2,893
Дебаж, выполняется ли ивент вообще. Подразумеваю что нет, ибо у тебя была бы рекурсия: ты в ивенте нанесения урона наносишь урон :\
Зарегай правильно ивент и добавь проверку, что урон не VOID.
 
Сверху