ModRecipes.java 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. package me.km.items;
  2. import me.km.blocks.EnumMetals;
  3. import me.km.blocks.ModBlocks;
  4. import net.minecraft.block.Block;
  5. import net.minecraft.init.Items;
  6. import net.minecraft.item.Item;
  7. import net.minecraft.item.ItemStack;
  8. import net.minecraft.item.crafting.CraftingManager;
  9. import net.minecraft.item.crafting.FurnaceRecipes;
  10. public class ModRecipes
  11. {
  12. public static void init()
  13. {
  14. CraftingManager cm = CraftingManager.getInstance();
  15. FurnaceRecipes fr = FurnaceRecipes.instance();
  16. // misc
  17. cm.addShapelessRecipe(new ItemStack(ModItems.bronzeIngot, 9), new Object[]
  18. {
  19. ModItems.copperIngot, ModItems.copperIngot, ModItems.copperIngot,
  20. ModItems.copperIngot, ModItems.copperIngot, ModItems.copperIngot,
  21. ModItems.copperIngot, ModItems.copperIngot, ModItems.tinIngot
  22. });
  23. cm.addRecipe(new ItemStack(ModItems.realHayBed, 3), new Object[] {"XXX", 'X', ModBlocks.realHayBlock});
  24. cm.addRecipe(new ItemStack(ModItems.strawHat, 1), new Object[] {" X ", "XXX", 'X', Items.WHEAT});
  25. // traps
  26. addMetalRecipes(cm, new String[] {" X ", "XXX"}, ModBlocks.spikes, 3);
  27. // furnace recipes
  28. fr.addSmeltingRecipeForBlock(ModBlocks.copperOre, new ItemStack(ModItems.copperIngot), 0.5f);
  29. fr.addSmeltingRecipeForBlock(ModBlocks.tinOre, new ItemStack(ModItems.tinIngot), 1);
  30. fr.addSmeltingRecipeForBlock(ModBlocks.silverOre, new ItemStack(ModItems.silverIngot), 1);
  31. // armor recipes
  32. String[][] armorPatterns = new String[][] {{"XXX", "X X"}, {"X X", "XXX", "XXX"}, {"XXX", "X X", "X X"}, {"X X", "X X"}};
  33. Item[][] armorItems = new Item[][]
  34. {
  35. {ModItems.copperIngot, ModItems.bronzeIngot},
  36. {ModItems.copperHelmet, ModItems.bronzeHelmet},
  37. {ModItems.copperChestplate, ModItems.bronzeChestplate},
  38. {ModItems.copperLeggings, ModItems.bronzeLeggings},
  39. {ModItems.copperBoots, ModItems.bronzeBoots}
  40. };
  41. addArmorRecipes(cm, armorPatterns, armorItems);
  42. // tool recipes
  43. String[][] toolPatterns = new String[][] {{"XXX", " # ", " # "}, {"X", "#", "#"}, {"XX", "X#", " #"}, {"XX", " #", " #"}};
  44. Object[][] toolItems = new Object[][]
  45. {
  46. {ModItems.copperIngot, ModItems.bronzeIngot},
  47. {ModItems.copperPickaxe, ModItems.bronzePickaxe},
  48. {ModItems.copperShovel, ModItems.bronzeShovel},
  49. {ModItems.copperAxe, ModItems.bronzeAxe},
  50. {ModItems.copperHoe, ModItems.bronzeHoe}
  51. };
  52. addToolRecipes(cm, toolPatterns, toolItems);
  53. // weapon recipes
  54. String[][] weaponPatterns = new String[][] {{"X", "X", "#"}};
  55. Object[][] weaponItems = new Object[][]
  56. {
  57. {ModItems.copperIngot, ModItems.bronzeIngot},
  58. {ModItems.copperSword, ModItems.bronzeSword}
  59. };
  60. addWeaponRecipes(cm, weaponPatterns, weaponItems);
  61. // block <-> parts <-> smaller parts recipes
  62. Object[][] ingotItems = new Object[][]
  63. {
  64. {ModBlocks.copperBlock, new ItemStack(ModItems.copperIngot, 9)},
  65. {ModItems.copperIngot, new ItemStack(ModItems.copperNugget, 9)},
  66. {ModBlocks.tinBlock, new ItemStack(ModItems.tinIngot, 9)},
  67. {ModItems.tinIngot, new ItemStack(ModItems.tinNugget, 9)},
  68. {ModBlocks.bronzeBlock, new ItemStack(ModItems.bronzeIngot, 9)},
  69. {ModItems.bronzeIngot, new ItemStack(ModItems.bronzeNugget, 9)},
  70. {ModBlocks.silverBlock, new ItemStack(ModItems.silverIngot, 9)},
  71. {ModItems.silverIngot, new ItemStack(ModItems.silverNugget, 9)},
  72. {ModBlocks.realHayBlock, new ItemStack(ModItems.hayBundle, 9)},
  73. };
  74. addIngotRecipes(cm, ingotItems);
  75. addNuggetRecipes(fr, toolItems, armorItems, weaponItems, ModItems.copperNugget, ModItems.bronzeNugget);
  76. }
  77. private static void addArmorRecipes(CraftingManager cm, String[][] armorPatterns, Item[][] armorItems)
  78. {
  79. for (int i = 0; i < armorItems[0].length; ++i)
  80. {
  81. Item item = armorItems[0][i];
  82. for (int j = 0; j < armorItems.length - 1; ++j)
  83. {
  84. Item item2 = armorItems[j + 1][i];
  85. cm.addRecipe(new ItemStack(item2), new Object[] {armorPatterns[j], 'X', item});
  86. }
  87. }
  88. }
  89. private static void addToolRecipes(CraftingManager cm, String[][] toolPatterns, Object[][] toolItems)
  90. {
  91. for(int i = 0; i < toolItems[0].length; ++i)
  92. {
  93. Object object = toolItems[0][i];
  94. for(int j = 0; j < toolItems.length - 1; ++j)
  95. {
  96. Item item = (Item) toolItems[j + 1][i];
  97. cm.addRecipe(new ItemStack(item), new Object[] {toolPatterns[j], '#', Items.STICK, 'X', object});
  98. }
  99. }
  100. }
  101. private static void addWeaponRecipes(CraftingManager cm, String[][] weaponPatterns, Object[][] weaponItems)
  102. {
  103. for(int i = 0; i < weaponItems[0].length; ++i)
  104. {
  105. Object object = weaponItems[0][i];
  106. for(int j = 0; j < weaponItems.length - 1; ++j)
  107. {
  108. Item item = (Item) weaponItems[j + 1][i];
  109. cm.addRecipe(new ItemStack(item), new Object[] {weaponPatterns[j], '#', Items.STICK, 'X', object});
  110. }
  111. }
  112. }
  113. private static void addIngotRecipes(CraftingManager cm, Object[][] ingotItems)
  114. {
  115. for(Object[] aobject : ingotItems)
  116. {
  117. try
  118. {
  119. Item block = (Item) aobject[0];
  120. ItemStack parts = (ItemStack) aobject[1];
  121. ItemStack ingot = parts.copy();
  122. ingot.setCount(1);
  123. cm.addRecipe(new ItemStack(block), new Object[] {"###", "###", "###", '#', ingot});
  124. cm.addRecipe(parts, new Object[] {"#", '#', block});
  125. }
  126. catch(ClassCastException ex)
  127. {
  128. Block block = (Block) aobject[0];
  129. ItemStack parts = (ItemStack) aobject[1];
  130. ItemStack ingot = parts.copy();
  131. ingot.setCount(1);
  132. cm.addRecipe(new ItemStack(block), new Object[] {"###", "###", "###", '#', ingot});
  133. cm.addRecipe(parts, new Object[] {"#", '#', block});
  134. }
  135. }
  136. }
  137. private static void addNuggetRecipes(FurnaceRecipes fr, Object[][] toolItems, Item[][] armorItems, Object[][] weaponItems, Item... nuggets)
  138. {
  139. for(int i = 0; i < nuggets.length; i++)
  140. {
  141. for(int j = 1; j < toolItems.length; j++)
  142. {
  143. fr.addSmelting((Item) toolItems[j][i], new ItemStack(nuggets[i]), 0.1f);
  144. }
  145. for(int j = 1; j < armorItems.length; j++)
  146. {
  147. fr.addSmelting((Item) armorItems[j][i], new ItemStack(nuggets[i]), 0.1f);
  148. }
  149. for(int j = 1; j < weaponItems.length; j++)
  150. {
  151. fr.addSmelting((Item) weaponItems[j][i], new ItemStack(nuggets[i]), 0.1f);
  152. }
  153. }
  154. }
  155. private static void addMetalRecipes(CraftingManager cm, String[] patterns, Item output, int amount)
  156. {
  157. for(EnumMetals metal : EnumMetals.values())
  158. {
  159. cm.addRecipe(new ItemStack(output, amount, metal.getMetadata()),
  160. new Object[] {patterns, 'X', metal.getMetalIngot()});
  161. }
  162. }
  163. private static void addMetalRecipes(CraftingManager cm, String[] patterns, Block output, int amount)
  164. {
  165. addMetalRecipes(cm, patterns, Item.getItemFromBlock(output), amount);
  166. }
  167. }