--- ../src-base/minecraft/net/minecraft/item/ItemArmor.java
+++ ../src-work/minecraft/net/minecraft/item/ItemArmor.java
@@ -192,7 +192,7 @@
 
         if (itemstack1 == null)
         {
-            p_77659_3_.func_70062_b(i, p_77659_1_.func_77946_l());
+            p_77659_3_.func_70062_b(i + 1, p_77659_1_.func_77946_l()); //Forge: Vanilla bug fix associated with fixed setCurrentItemOrArmor indexs for players.
             p_77659_1_.field_77994_a = 0;
         }
 
@@ -213,6 +213,9 @@
 
         private static final String __OBFID = "CL_00001768";
 
+        //Added by forge for custom Armor materials.
+        public Item customCraftingMaterial = null;
+
         private ArmorMaterial(String p_i45789_3_, int p_i45789_4_, int[] p_i45789_5_, int p_i45789_6_)
         {
             this.field_179243_f = p_i45789_3_;
@@ -238,7 +241,15 @@
 
         public Item func_151685_b()
         {
-            return this == LEATHER ? Items.field_151116_aA : (this == CHAIN ? Items.field_151042_j : (this == GOLD ? Items.field_151043_k : (this == IRON ? Items.field_151042_j : (this == DIAMOND ? Items.field_151045_i : null))));
+            switch (this)
+            {
+                case LEATHER: return Items.field_151116_aA;
+                case CHAIN:   return Items.field_151042_j;
+                case GOLD:    return Items.field_151043_k;
+                case IRON:    return Items.field_151042_j;
+                case DIAMOND: return Items.field_151045_i;
+                default:      return customCraftingMaterial;
+            }
         }
 
         @SideOnly(Side.CLIENT)
