001 package net.minecraft.src; 002 003 import java.util.ArrayList; 004 005 public class RecipesArmorDyes implements IRecipe 006 { 007 /** 008 * Used to check if a recipe matches current crafting inventory 009 */ 010 public boolean matches(InventoryCrafting par1InventoryCrafting, World par2World) 011 { 012 ItemStack var3 = null; 013 ArrayList var4 = new ArrayList(); 014 015 for (int var5 = 0; var5 < par1InventoryCrafting.getSizeInventory(); ++var5) 016 { 017 ItemStack var6 = par1InventoryCrafting.getStackInSlot(var5); 018 019 if (var6 != null) 020 { 021 if (var6.getItem() instanceof ItemArmor) 022 { 023 ItemArmor var7 = (ItemArmor)var6.getItem(); 024 025 if (var7.func_82812_d() != EnumArmorMaterial.CLOTH || var3 != null) 026 { 027 return false; 028 } 029 030 var3 = var6; 031 } 032 else 033 { 034 if (var6.itemID != Item.dyePowder.shiftedIndex) 035 { 036 return false; 037 } 038 039 var4.add(var6); 040 } 041 } 042 } 043 044 return var3 != null && !var4.isEmpty(); 045 } 046 047 /** 048 * Returns an Item that is the result of this recipe 049 */ 050 public ItemStack getCraftingResult(InventoryCrafting par1InventoryCrafting) 051 { 052 ItemStack var2 = null; 053 int[] var3 = new int[3]; 054 int var4 = 0; 055 int var5 = 0; 056 ItemArmor var6 = null; 057 int var7; 058 int var9; 059 float var10; 060 float var11; 061 int var17; 062 063 for (var7 = 0; var7 < par1InventoryCrafting.getSizeInventory(); ++var7) 064 { 065 ItemStack var8 = par1InventoryCrafting.getStackInSlot(var7); 066 067 if (var8 != null) 068 { 069 if (var8.getItem() instanceof ItemArmor) 070 { 071 var6 = (ItemArmor)var8.getItem(); 072 073 if (var6.func_82812_d() != EnumArmorMaterial.CLOTH || var2 != null) 074 { 075 return null; 076 } 077 078 var2 = var8.copy(); 079 080 if (var6.func_82816_b_(var8)) 081 { 082 var9 = var6.func_82814_b(var2); 083 var10 = (float)(var9 >> 16 & 255) / 255.0F; 084 var11 = (float)(var9 >> 8 & 255) / 255.0F; 085 float var12 = (float)(var9 & 255) / 255.0F; 086 var4 = (int)((float)var4 + Math.max(var10, Math.max(var11, var12)) * 255.0F); 087 var3[0] = (int)((float)var3[0] + var10 * 255.0F); 088 var3[1] = (int)((float)var3[1] + var11 * 255.0F); 089 var3[2] = (int)((float)var3[2] + var12 * 255.0F); 090 ++var5; 091 } 092 } 093 else 094 { 095 if (var8.itemID != Item.dyePowder.shiftedIndex) 096 { 097 return null; 098 } 099 100 float[] var14 = EntitySheep.fleeceColorTable[BlockCloth.getBlockFromDye(var8.getItemDamage())]; 101 int var16 = (int)(var14[0] * 255.0F); 102 int var15 = (int)(var14[1] * 255.0F); 103 var17 = (int)(var14[2] * 255.0F); 104 var4 += Math.max(var16, Math.max(var15, var17)); 105 var3[0] += var16; 106 var3[1] += var15; 107 var3[2] += var17; 108 ++var5; 109 } 110 } 111 } 112 113 if (var6 == null) 114 { 115 return null; 116 } 117 else 118 { 119 var7 = var3[0] / var5; 120 int var13 = var3[1] / var5; 121 var9 = var3[2] / var5; 122 var10 = (float)var4 / (float)var5; 123 var11 = (float)Math.max(var7, Math.max(var13, var9)); 124 var7 = (int)((float)var7 * var10 / var11); 125 var13 = (int)((float)var13 * var10 / var11); 126 var9 = (int)((float)var9 * var10 / var11); 127 var17 = (var7 << 8) + var13; 128 var17 = (var17 << 8) + var9; 129 var6.func_82813_b(var2, var17); 130 return var2; 131 } 132 } 133 134 /** 135 * Returns the size of the recipe area 136 */ 137 public int getRecipeSize() 138 { 139 return 10; 140 } 141 142 public ItemStack getRecipeOutput() 143 { 144 return null; 145 } 146 }