Newer
Older
void-pack-super-server / work / decompile-ee3ecae0 / net / minecraft / server / EnchantmentThorns.java
package net.minecraft.server;

import java.util.Random;
import java.util.Map.Entry;

public class EnchantmentThorns extends Enchantment {

    public EnchantmentThorns(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
        super(enchantment_rarity, EnchantmentSlotType.ARMOR_CHEST, aenumitemslot);
    }

    @Override
    public int a(int i) {
        return 10 + 20 * (i - 1);
    }

    @Override
    public int b(int i) {
        return super.a(i) + 50;
    }

    @Override
    public int getMaxLevel() {
        return 3;
    }

    @Override
    public boolean canEnchant(ItemStack itemstack) {
        return itemstack.getItem() instanceof ItemArmor ? true : super.canEnchant(itemstack);
    }

    @Override
    public void b(EntityLiving entityliving, Entity entity, int i) {
        Random random = entityliving.getRandom();
        Entry<EnumItemSlot, ItemStack> entry = EnchantmentManager.b(Enchantments.THORNS, entityliving);

        if (a(i, random)) {
            if (entity != null) {
                entity.damageEntity(DamageSource.a((Entity) entityliving), (float) b(i, random));
            }

            if (entry != null) {
                ((ItemStack) entry.getValue()).damage(3, entityliving, (entityliving1) -> {
                    entityliving1.broadcastItemBreak((EnumItemSlot) entry.getKey());
                });
            }
        } else if (entry != null) {
            ((ItemStack) entry.getValue()).damage(1, entityliving, (entityliving1) -> {
                entityliving1.broadcastItemBreak((EnumItemSlot) entry.getKey());
            });
        }

    }

    public static boolean a(int i, Random random) {
        return i <= 0 ? false : random.nextFloat() < 0.15F * (float) i;
    }

    public static int b(int i, Random random) {
        return i > 10 ? i - 10 : 1 + random.nextInt(4);
    }
}