146 lines
4.8 KiB
Java
146 lines
4.8 KiB
Java
|
|
package thermalexpansion.api.crafting;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.item.ItemStack;
|
|
import thermalexpansion.api.item.ItemRegistry;
|
|
|
|
/**
|
|
* This class adds some basic and fool-proof recipe handlers that can help you out. They will add
|
|
* simple recipes that follow the TE defaults - they are not the only way of adding recipes. You can
|
|
* also use the more specific recipe functions defined in the Manager interfaces if necessary. Once
|
|
* again, only call these during @PostInit or things may not go so rosy.
|
|
*/
|
|
public class CraftingHelpers {
|
|
|
|
private static ItemStack sawdust = ItemRegistry.getItem("sawdust", 1);
|
|
private static ItemStack slag = ItemRegistry.getItem("slag", 1);
|
|
private static ItemStack slagRich = ItemRegistry.getItem("slagRich", 1);
|
|
private static ItemStack blockSand = new ItemStack(Block.sand);
|
|
|
|
/**
|
|
* Ore x1 to Dust x2 conversion. 400 MJ. Will return false if recipe already exists.
|
|
*/
|
|
public static boolean addPulverizerOreToDustRecipe(ItemStack inputOre, ItemStack outputDust) {
|
|
|
|
if (inputOre == null || outputDust == null) {
|
|
return false;
|
|
}
|
|
|
|
ItemStack ore = inputOre.copy();
|
|
ore.stackSize = 1;
|
|
|
|
ItemStack primaryDust = outputDust.copy();
|
|
primaryDust.stackSize = 2;
|
|
|
|
return CraftingManagers.pulverizerManager.addRecipe(400, ore, primaryDust);
|
|
}
|
|
|
|
/**
|
|
* Ingot x1 to Dust x1 conversion. 240 MJ. Will return false if recipe already exists.
|
|
*/
|
|
public static boolean addPulverizerIngotToDustRecipe(ItemStack inputIngot, ItemStack outputDust) {
|
|
|
|
if (inputIngot == null || outputDust == null) {
|
|
return false;
|
|
}
|
|
|
|
ItemStack ingot = inputIngot.copy();
|
|
ingot.stackSize = 1;
|
|
|
|
ItemStack primaryDust = outputDust.copy();
|
|
primaryDust.stackSize = 1;
|
|
|
|
return CraftingManagers.pulverizerManager.addRecipe(240, ingot, primaryDust);
|
|
}
|
|
|
|
/**
|
|
* Ore x1 to Dust x2 conversion, 10% chance of Secondary x1 being generated. 400 MJ. Will return
|
|
* false if recipe already exists.
|
|
*/
|
|
public static boolean addPulverizerOreToDustRecipe(ItemStack inputOre, ItemStack outputDust, ItemStack outputSecondary) {
|
|
|
|
if (inputOre == null || outputDust == null || outputSecondary == null) {
|
|
return false;
|
|
}
|
|
|
|
ItemStack ore = inputOre.copy();
|
|
ore.stackSize = 1;
|
|
|
|
ItemStack primaryDust = outputDust.copy();
|
|
primaryDust.stackSize = 2;
|
|
|
|
ItemStack secondary = outputSecondary.copy();
|
|
secondary.stackSize = 1;
|
|
|
|
return CraftingManagers.pulverizerManager.addRecipe(400, ore, primaryDust, secondary, 10);
|
|
}
|
|
|
|
/**
|
|
* Log x1 to Plank x6 conversion, 100% chance of Sawdust. 80 MJ. Will return false if recipe
|
|
* already exists.
|
|
*/
|
|
public static boolean addSawmillLogToPlankRecipe(ItemStack inputLog, ItemStack outputPlanks) {
|
|
|
|
if (inputLog == null || outputPlanks == null) {
|
|
return false;
|
|
}
|
|
|
|
ItemStack log = inputLog.copy();
|
|
log.stackSize = 1;
|
|
|
|
ItemStack planks = outputPlanks.copy();
|
|
planks.stackSize = 6;
|
|
|
|
return CraftingManagers.sawmillManager.addRecipe(80, log, planks, sawdust);
|
|
}
|
|
|
|
/**
|
|
* Dust x2, Sand x1 to Ingot x2, 25% chance of Slag. 80 MJ. Will return false if recipe already
|
|
* exists.
|
|
*/
|
|
public static boolean addSmelterDustToIngotsRecipe(ItemStack inputDust, ItemStack outputIngots) {
|
|
|
|
if (inputDust == null || outputIngots == null) {
|
|
return false;
|
|
}
|
|
|
|
ItemStack dust = inputDust.copy();
|
|
dust.stackSize = 2;
|
|
|
|
ItemStack ingots = outputIngots.copy();
|
|
ingots.stackSize = 2;
|
|
|
|
return CraftingManagers.smelterManager.addRecipe(80, dust, blockSand, ingots, slag, 25);
|
|
}
|
|
|
|
/**
|
|
* Ore x1, Sand x1 to Ingot x2, 5% chance of Rich Slag. 320 MJ. Also, Ore x1, Rich Slag x1 to
|
|
* Ingot x3, 75% chance of Slag. 400 MJ. Will return false if recipe already exists.
|
|
*/
|
|
public static boolean addSmelterOreToIngotsRecipe(ItemStack inputOre, ItemStack outputIngots) {
|
|
|
|
if (inputOre == null || outputIngots == null) {
|
|
return false;
|
|
}
|
|
|
|
ItemStack ore = inputOre.copy();
|
|
ore.stackSize = 1;
|
|
|
|
ItemStack ingots2 = outputIngots.copy();
|
|
ingots2.stackSize = 2;
|
|
|
|
ItemStack ingots3 = outputIngots.copy();
|
|
ingots3.stackSize = 3;
|
|
|
|
if (!CraftingManagers.smelterManager.addRecipe(320, ore, blockSand, ingots2, slagRich, 5)) {
|
|
return false;
|
|
}
|
|
if (!CraftingManagers.smelterManager.addRecipe(400, ore, slagRich, ingots3, slag, 75)) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
}
|