1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
package gtPlusPlus.xmod.tinkers.util;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import gtPlusPlus.core.material.Material;
import tconstruct.library.TConstructRegistry;
import tconstruct.library.crafting.CastingRecipe;
import tconstruct.library.crafting.FluidType;
import tconstruct.library.crafting.LiquidCasting;
import tconstruct.library.crafting.Smeltery;
import tconstruct.library.tools.DynamicToolPart;
import tconstruct.library.util.IPattern;
import tconstruct.smeltery.TinkerSmeltery;
public class TinkersUtils {
/**
* Add a new fluid as a valid Smeltery fuel.
*
* @param fluid The fluid.
* @param power The temperature of the fluid. This also influences the melting speed. Lava is 1000.
* @param duration How long one "portion" of liquid fuels the smeltery. Lava is 10.
*/
public static void addSmelteryFuel(Fluid fluid, int power, int duration) {
Smeltery.addSmelteryFuel(fluid, power, duration);
}
public static boolean registerFluidType(String name, Block block, int meta, int baseTemperature, Fluid fluid,
boolean isToolpart) {
FluidType.registerFluidType(name, block, meta, baseTemperature, fluid, isToolpart);
return true;
}
public static void addMelting(ItemStack input, Block block, int metadata, int temperature, FluidStack liquid) {
Smeltery.addMelting(input, block, metadata, temperature, liquid);
}
public static void addMelting(FluidType type, ItemStack input, int temperatureDifference, int fluidAmount) {
Smeltery.addMelting(type, input, temperatureDifference, fluidAmount);
}
public static void addBasinRecipe(ItemStack output, FluidStack metal, ItemStack cast, boolean consume, int delay) {
LiquidCasting tableCasting = TConstructRegistry.getTableCasting();
tableCasting.addCastingRecipe(output, metal, cast, consume, delay);
}
public static void addCastingTableRecipe(ItemStack output, FluidStack metal, ItemStack cast, boolean consume,
int delay) {
LiquidCasting basinCasting = TConstructRegistry.getBasinCasting();
basinCasting.addCastingRecipe(output, metal, cast, consume, delay);
}
public static List<CastingRecipe> getTableCastingRecipes() {
LiquidCasting tableCasting = TConstructRegistry.getTableCasting();
return tableCasting.getCastingRecipes();
}
public static void generateCastingRecipes(Material aMaterial, int aID) {
Fluid aMoltenIron = TinkerSmeltery.moltenIronFluid;
FluidType fluidType = FluidType.getFluidType(aMaterial.getLocalizedName());
for (CastingRecipe recipe : getTableCastingRecipes()) {
CastingRecipeHandler newRecipe = new CastingRecipeHandler(recipe);
if (newRecipe.castingMetal.getFluid() == aMoltenIron && newRecipe.cast != null
&& newRecipe.cast.getItem() instanceof IPattern
&& newRecipe.getResult()
.getItem() instanceof DynamicToolPart) {
ItemStack output = newRecipe.getResult()
.copy();
output.setItemDamage(aID);
FluidStack liquid = new FluidStack(
aMaterial.getFluidStack(0)
.getFluid(),
newRecipe.castingMetal.amount);
addCastingTableRecipe(output, liquid, newRecipe.cast, newRecipe.consumeCast, newRecipe.coolTime);
addMelting(fluidType, output, 0, liquid.amount / 2);
}
}
}
public static ItemStack getPattern(int aType) {
return new ItemStack(TinkerSmeltery.metalPattern, aType, 0);
}
private static class CastingRecipeHandler {
public ItemStack output;
public FluidStack castingMetal;
public ItemStack cast;
public boolean consumeCast;
public int coolTime;
public CastingRecipeHandler(CastingRecipe castingRecipe) {
this.output = castingRecipe.output;
this.castingMetal = castingRecipe.castingMetal;
this.cast = castingRecipe.cast;
this.consumeCast = castingRecipe.consumeCast;
this.coolTime = castingRecipe.coolTime;
}
public ItemStack getResult() {
return this.output.copy();
}
}
}
|