blob: e5f0ab40d140abd96d52b8b2b9082d4d454e0681 (
plain)
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
|
package gregtech.api.recipe.maps;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import gregtech.api.recipe.RecipeMapBackend;
import gregtech.api.recipe.RecipeMapBackendPropertiesBuilder;
import gregtech.api.util.GTRecipe;
import gregtech.api.util.GTRecipeBuilder;
import gregtech.api.util.GTUtility;
import gregtech.api.util.MethodsReturnNonnullByDefault;
@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
public class FuelBackend extends RecipeMapBackend {
private final Map<String, GTRecipe> recipesByFluidInput = new HashMap<>();
public FuelBackend(RecipeMapBackendPropertiesBuilder propertiesBuilder) {
super(propertiesBuilder.disableOptimize());
}
@Override
protected Collection<GTRecipe> doAdd(GTRecipeBuilder builder) {
if (builder.getDuration() == -1) {
builder.duration(0);
}
if (builder.getEUt() == -1) {
builder.eut(0);
}
return super.doAdd(builder);
}
@Override
public GTRecipe compileRecipe(GTRecipe recipe) {
super.compileRecipe(recipe);
if (recipe.mInputs != null && GTUtility.getNonnullElementCount(recipe.mInputs) == 1
&& (recipe.mFluidInputs == null || GTUtility.getNonnullElementCount(recipe.mFluidInputs) == 0)) {
FluidStack fluidStack = GTUtility.getFluidForFilledItem(recipe.mInputs[0], true);
if (fluidStack != null) {
fluidStack.amount = 0;
recipesByFluidInput.put(
fluidStack.getFluid()
.getName(),
recipe);
}
} else if ((recipe.mInputs == null || GTUtility.getNonnullElementCount(recipe.mInputs) == 0)
&& recipe.mFluidInputs != null
&& GTUtility.getNonnullElementCount(recipe.mFluidInputs) >= 1
&& recipe.mFluidInputs[0] != null) {
recipesByFluidInput.put(
recipe.mFluidInputs[0].getFluid()
.getName(),
recipe);
}
return recipe;
}
@Nullable
public GTRecipe findFuel(FluidStack fluidStack) {
return findFuel(fluidStack.getFluid());
}
@Nullable
public GTRecipe findFuel(Fluid fluid) {
return recipesByFluidInput.get(fluid.getName());
}
}
|