Files
CatServer/patches/net/minecraft/enchantment/EnchantmentThorns.java.patch
2019-02-24 22:29:41 +08:00

53 lines
1.7 KiB
Diff

--- ../src-base/minecraft/net/minecraft/enchantment/EnchantmentThorns.java
+++ ../src-work/minecraft/net/minecraft/enchantment/EnchantmentThorns.java
@@ -11,7 +11,7 @@
public class EnchantmentThorns extends Enchantment
{
- public EnchantmentThorns(Enchantment.Rarity rarityIn, EntityEquipmentSlot... slots)
+ public EnchantmentThorns(Rarity rarityIn, EntityEquipmentSlot... slots)
{
super(rarityIn, EnumEnchantmentType.ARMOR_CHEST, slots);
this.setName("thorns");
@@ -51,12 +51,12 @@
if (!itemstack.isEmpty())
{
- itemstack.damageItem(3, user);
+ damageArmor(itemstack, 3, user);
}
}
else if (!itemstack.isEmpty())
{
- itemstack.damageItem(1, user);
+ damageArmor(itemstack, 1, user);
}
}
@@ -76,4 +76,25 @@
{
return level > 10 ? level - 10 : 1 + rnd.nextInt(4);
}
+
+ private void damageArmor(ItemStack stack, int amount, EntityLivingBase entity)
+ {
+ int slot = -1;
+ int x = 0;
+ for (ItemStack i : entity.getArmorInventoryList())
+ {
+ if (i == stack){
+ slot = x;
+ break;
+ }
+ x++;
+ }
+ if (slot == -1 || !(stack.getItem() instanceof net.minecraftforge.common.ISpecialArmor))
+ {
+ stack.damageItem(1, entity);
+ return;
+ }
+ net.minecraftforge.common.ISpecialArmor armor = (net.minecraftforge.common.ISpecialArmor)stack.getItem();
+ armor.damageArmor(entity, stack, DamageSource.causeThornsDamage(entity), amount, slot);
+ }
}