001 package net.minecraft.enchantment; 002 003 import java.util.Random; 004 import net.minecraft.entity.Entity; 005 import net.minecraft.entity.EntityLiving; 006 import net.minecraft.item.ItemArmor; 007 import net.minecraft.item.ItemStack; 008 import net.minecraft.util.DamageSource; 009 010 public class EnchantmentThorns extends Enchantment 011 { 012 public EnchantmentThorns(int par1, int par2) 013 { 014 super(par1, par2, EnumEnchantmentType.armor_torso); 015 this.setName("thorns"); 016 } 017 018 /** 019 * Returns the minimal value of enchantability needed on the enchantment level passed. 020 */ 021 public int getMinEnchantability(int par1) 022 { 023 return 10 + 20 * (par1 - 1); 024 } 025 026 /** 027 * Returns the maximum value of enchantability nedded on the enchantment level passed. 028 */ 029 public int getMaxEnchantability(int par1) 030 { 031 return super.getMinEnchantability(par1) + 50; 032 } 033 034 /** 035 * Returns the maximum level that the enchantment can have. 036 */ 037 public int getMaxLevel() 038 { 039 return 3; 040 } 041 042 public boolean func_92037_a(ItemStack par1ItemStack) 043 { 044 return par1ItemStack.getItem() instanceof ItemArmor ? true : super.func_92037_a(par1ItemStack); 045 } 046 047 public static boolean func_92042_a(int par0, Random par1Random) 048 { 049 return par0 <= 0 ? false : par1Random.nextFloat() < 0.15F * (float)par0; 050 } 051 052 public static int func_92043_b(int par0, Random par1) 053 { 054 return par0 > 10 ? par0 - 10 : 1 + par1.nextInt(4); 055 } 056 057 public static void func_92044_a(Entity par0Entity, EntityLiving par1, Random par2Random) 058 { 059 int var3 = EnchantmentHelper.func_92046_i(par1); 060 ItemStack var4 = EnchantmentHelper.func_92047_a(Enchantment.field_92039_k, par1); 061 062 if (func_92042_a(var3, par2Random)) 063 { 064 par0Entity.attackEntityFrom(DamageSource.func_92036_a(par1), func_92043_b(var3, par2Random)); 065 par0Entity.playSound("damage.thorns", 0.5F, 1.0F); 066 067 if (var4 != null) 068 { 069 var4.damageItem(3, par1); 070 } 071 } 072 else if (var4 != null) 073 { 074 var4.damageItem(1, par1); 075 } 076 } 077 }