Skip to content

Commit a58e051

Browse files
Ghostipediascreret
andauthored
Holistic Rebalance to the Large and Small Boiler (#4075)
Co-authored-by: screret <68943070+screret@users.noreply.github.com>
1 parent ee11380 commit a58e051

File tree

3 files changed

+57
-41
lines changed

3 files changed

+57
-41
lines changed

src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ public class GTRecipeTypes {
6666
.setMaxIOSize(1, 0, 1, 1)
6767
.setProgressBar(GuiTextures.PROGRESS_BAR_BOILER_FUEL.get(true), DOWN_TO_UP)
6868
.onRecipeBuild((builder, provider) -> {
69-
// remove the * 12 if SteamBoilerMachine:240 is uncommented
70-
var duration = (builder.duration / 12 / 80); // copied for large boiler
69+
// all LBB recipes' duration is 1/4 the small boiler recipe's duration
70+
int duration = builder.duration / 4;
7171
if (duration > 0) {
7272
GTRecipeTypes.LARGE_BOILER_RECIPES.copyFrom(builder).duration(duration).save(provider);
7373
}

src/main/java/com/gregtechceu/gtceu/data/recipe/misc/FuelRecipes.java

Lines changed: 54 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66

77
import net.minecraft.core.registries.BuiltInRegistries;
88
import net.minecraft.data.recipes.FinishedRecipe;
9+
import net.minecraft.resources.ResourceLocation;
910
import net.minecraft.world.item.Item;
10-
import net.minecraft.world.level.block.entity.FurnaceBlockEntity;
1111
import net.minecraft.world.level.material.Fluids;
1212
import net.minecraftforge.fluids.FluidStack;
13+
import net.minecraftforge.fluids.FluidUtil;
1314

1415
import java.util.HashSet;
16+
import java.util.Optional;
1517
import java.util.Set;
1618
import java.util.function.Consumer;
1719

@@ -21,73 +23,88 @@
2123

2224
public class FuelRecipes {
2325

26+
public static void addBoilerFuel(Consumer<FinishedRecipe> provider, Set<Item> added,
27+
Item item, int burnTime) {
28+
if (added.contains(item) || burnTime <= 0) {
29+
return;
30+
}
31+
added.add(item);
32+
33+
Optional<FluidStack> containedFluid = FluidUtil.getFluidContained(item.getDefaultInstance());
34+
if (containedFluid.isEmpty()) {
35+
ResourceLocation id = BuiltInRegistries.ITEM.getKey(item);
36+
STEAM_BOILER_RECIPES.recipeBuilder(GTCEu.id(id.getNamespace() + "_" + id.getPath()))
37+
.inputItems(item)
38+
.duration(burnTime)
39+
.save(provider);
40+
} else {
41+
FluidStack fluid = new FluidStack(containedFluid.get(), 250);
42+
ResourceLocation id = BuiltInRegistries.FLUID.getKey(fluid.getFluid());
43+
44+
// the lava recipe's duration is 4/9 of the bucket's burn time
45+
// the creosote recipe's duration is 7/32 of the bucket's burn time
46+
// as such, the mean ratio is 191/576, or approximately 1/3.
47+
STEAM_BOILER_RECIPES.recipeBuilder(id.getNamespace() + "_" + id.getPath())
48+
.inputFluids(fluid)
49+
.duration(burnTime / 3)
50+
.save(provider);
51+
}
52+
}
53+
2454
public static void init(Consumer<FinishedRecipe> provider) {
2555
// TODO this all needs to be cleaned up, but this will make it somewhat work for now
2656
// do these first because for some reason vanilla fuels are not set up yet at this phase?
2757
Set<Item> addedItems = new HashSet<>();
28-
for (var fuelEntry : FurnaceBlockEntity.getFuel().entrySet()) {
29-
addedItems.add(fuelEntry.getKey());
30-
var resLoc = BuiltInRegistries.ITEM.getKey(fuelEntry.getKey());
31-
STEAM_BOILER_RECIPES.recipeBuilder(GTCEu.id(resLoc.getNamespace() + "_" + resLoc.getPath()))
32-
.inputItems(fuelEntry.getKey())
33-
.duration(fuelEntry.getValue() * 12) // remove the * 12 if SteamBoilerMachine:240 is uncommented
34-
.save(provider);
35-
}
3658
for (Item item : BuiltInRegistries.ITEM) {
37-
var burnTime = GTUtil.getItemBurnTime(item);
38-
if (burnTime > 0 && !addedItems.contains(item)) {
39-
var resLoc = BuiltInRegistries.ITEM.getKey(item);
40-
STEAM_BOILER_RECIPES.recipeBuilder(GTCEu.id(resLoc.getNamespace() + "_" + resLoc.getPath()))
41-
.inputItems(item)
42-
.duration(burnTime * 12)
43-
.save(provider);
44-
}
59+
int burnTime = GTUtil.getItemBurnTime(item);
60+
addBoilerFuel(provider, addedItems, item, burnTime);
4561
}
4662

47-
STEAM_BOILER_RECIPES.recipeBuilder("lava")
63+
// override the default fluid recipes for lava and creosote
64+
STEAM_BOILER_RECIPES.recipeBuilder("minecraft_lava")
4865
.inputFluids(new FluidStack(Fluids.LAVA, 100))
49-
.duration(100 * 12)
66+
.duration(900) // 60s -> 45s Might still be too good with drip stone farming.
5067
.save(provider);
5168

52-
STEAM_BOILER_RECIPES.recipeBuilder("creosote")
69+
STEAM_BOILER_RECIPES.recipeBuilder("gtceu_creosote")
5370
.inputFluids(Creosote.getFluid(250))
54-
.duration(250 * 12)
71+
.duration(350) // 150s -> 17.5s
5572
.save(provider);
5673

57-
// semi-fluid fuels, like creosote
58-
LARGE_BOILER_RECIPES.recipeBuilder("creosote")
59-
.inputFluids(Creosote.getFluid(160))
60-
.duration(10)
74+
// semi-fluid fuels, like creosote - these are awful and need to be scrutinized heavily...
75+
LARGE_BOILER_RECIPES.recipeBuilder("gtceu_creosote")
76+
.inputFluids(Creosote.getFluid(250))
77+
.duration(35)
6178
.save(provider);
6279

63-
LARGE_BOILER_RECIPES.recipeBuilder("biomass")
80+
LARGE_BOILER_RECIPES.recipeBuilder("gtceu_biomass")
6481
.inputFluids(Biomass.getFluid(40))
65-
.duration(10)
82+
.duration(85)
6683
.save(provider);
6784

68-
LARGE_BOILER_RECIPES.recipeBuilder("oil")
85+
LARGE_BOILER_RECIPES.recipeBuilder("gtceu_oil")
6986
.inputFluids(Oil.getFluid(200))
70-
.duration(10)
87+
.duration(50)
7188
.save(provider);
7289

73-
LARGE_BOILER_RECIPES.recipeBuilder("oil_heavy")
90+
LARGE_BOILER_RECIPES.recipeBuilder("gtceu_oil_heavy")
7491
.inputFluids(OilHeavy.getFluid(32))
75-
.duration(10)
92+
.duration(50)
7693
.save(provider);
7794

78-
LARGE_BOILER_RECIPES.recipeBuilder("sulfuric_heavy_fuel")
95+
LARGE_BOILER_RECIPES.recipeBuilder("gtceu_sulfuric_heavy_fuel")
7996
.inputFluids(SulfuricHeavyFuel.getFluid(32))
80-
.duration(10)
97+
.duration(50)
8198
.save(provider);
8299

83-
LARGE_BOILER_RECIPES.recipeBuilder("heavy_fuel")
100+
LARGE_BOILER_RECIPES.recipeBuilder("gtceu_heavy_fuel")
84101
.inputFluids(HeavyFuel.getFluid(16))
85-
.duration(30)
102+
.duration(90)
86103
.save(provider);
87104

88-
LARGE_BOILER_RECIPES.recipeBuilder("fish_oil")
105+
LARGE_BOILER_RECIPES.recipeBuilder("gtceu_fish_oil")
89106
.inputFluids(FishOil.getFluid(160))
90-
.duration(10)
107+
.duration(50)
91108
.save(provider);
92109

93110
// diesel generator fuels

src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import net.minecraft.world.item.DyeColor;
3434
import net.minecraft.world.item.Item;
3535
import net.minecraft.world.item.ItemStack;
36-
import net.minecraft.world.item.crafting.RecipeType;
3736
import net.minecraft.world.level.Level;
3837
import net.minecraft.world.level.biome.Biome;
3938
import net.minecraft.world.level.block.Block;
@@ -372,7 +371,7 @@ public static boolean isItemStackCountDivisible(ItemStack itemStack, int divisor
372371
}
373372

374373
public static int getItemBurnTime(Item item) {
375-
return ForgeHooks.getBurnTime(item.getDefaultInstance(), RecipeType.SMELTING);
374+
return ForgeHooks.getBurnTime(item.getDefaultInstance(), null);
376375
}
377376

378377
public static int getPumpBiomeModifier(Holder<Biome> biome) {

0 commit comments

Comments
 (0)