aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/railcraft
diff options
context:
space:
mode:
authorRaven Szewczyk <git@eigenraven.me>2024-05-24 19:50:35 +0100
committerRaven Szewczyk <git@eigenraven.me>2024-05-24 19:50:35 +0100
commit6d1b2216464d4dad449ac6fcfec476832224a55e (patch)
tree526a0c15f7056313c80e6c0386e025e9b3f61781 /src/main/java/gtPlusPlus/xmod/railcraft
parentb5d35f40afa606ed1b07061dad82e0521a59c186 (diff)
downloadGT5-Unofficial-6d1b2216464d4dad449ac6fcfec476832224a55e.tar.gz
GT5-Unofficial-6d1b2216464d4dad449ac6fcfec476832224a55e.tar.bz2
GT5-Unofficial-6d1b2216464d4dad449ac6fcfec476832224a55e.zip
Merge addon sources
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/railcraft')
-rw-r--r--src/main/java/gtPlusPlus/xmod/railcraft/HANDLER_Railcraft.java217
-rw-r--r--src/main/java/gtPlusPlus/xmod/railcraft/utils/RailcraftUtils.java22
2 files changed, 239 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/railcraft/HANDLER_Railcraft.java b/src/main/java/gtPlusPlus/xmod/railcraft/HANDLER_Railcraft.java
new file mode 100644
index 0000000000..4efa85992a
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/railcraft/HANDLER_Railcraft.java
@@ -0,0 +1,217 @@
+package gtPlusPlus.xmod.railcraft;
+
+import static gregtech.api.enums.Mods.GTPlusPlus;
+import static gregtech.api.enums.Mods.NewHorizonsCoreMod;
+import static gregtech.api.enums.Mods.Railcraft;
+import static gregtech.api.recipe.RecipeMaps.fluidExtractionRecipes;
+import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
+import static gregtech.api.util.GT_RecipeBuilder.TICKS;
+import static gregtech.api.util.GT_RecipeConstants.UniversalChemical;
+import static gtPlusPlus.core.creative.AddToCreativeTab.tabMisc;
+
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_Utility;
+import gtPlusPlus.core.item.ModItems;
+import gtPlusPlus.core.item.base.BaseItemBurnable;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.recipe.common.CI;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.xmod.railcraft.utils.RailcraftUtils;
+
+public class HANDLER_Railcraft {
+
+ public static void preInit() {
+ // Register Custom Coal Coke
+ ModItems.itemCoalCoke = new BaseItemBurnable(
+ "itemCoalCoke",
+ "Coking Coal",
+ tabMisc,
+ 64,
+ 0,
+ "Used for metallurgy.",
+ "fuelCoke",
+ 3200,
+ 0).setTextureName(GTPlusPlus.ID + ":burnables/itemCoalCoke");
+
+ // Add in things that once existed in 1.5.2
+ ModItems.itemCactusCharcoal = new BaseItemBurnable(
+ "itemCactusCharcoal",
+ "Cactus Charcoal",
+ tabMisc,
+ 64,
+ 0,
+ "Used for smelting.",
+ "fuelCactusCharcoal",
+ 400,
+ 0).setTextureName(GTPlusPlus.ID + ":burnables/itemCactusCharcoal");
+ ModItems.itemSugarCharcoal = new BaseItemBurnable(
+ "itemSugarCharcoal",
+ "Sugar Charcoal",
+ tabMisc,
+ 64,
+ 0,
+ "Used for smelting.",
+ "fuelSugarCharcoal",
+ 400,
+ 0).setTextureName(GTPlusPlus.ID + ":burnables/itemSugarCharcoal");
+ ModItems.itemCactusCoke = new BaseItemBurnable(
+ "itemCactusCoke",
+ "Cactus Coke",
+ tabMisc,
+ 64,
+ 0,
+ "Used for smelting.",
+ "fuelCactusCoke",
+ 800,
+ 0).setTextureName(GTPlusPlus.ID + ":burnables/itemCactusCoke");
+ ModItems.itemSugarCoke = new BaseItemBurnable(
+ "itemSugarCoke",
+ "Sugar Coke",
+ tabMisc,
+ 64,
+ 0,
+ "Used for smelting.",
+ "fuelSugarCoke",
+ 800,
+ 0).setTextureName(GTPlusPlus.ID + ":burnables/itemSugarCoke");
+
+ ItemUtils.addItemToOreDictionary(ItemUtils.getSimpleStack(ModItems.itemCactusCharcoal), "itemCharcoalCactus");
+ ItemUtils.addItemToOreDictionary(ItemUtils.getSimpleStack(ModItems.itemCactusCoke), "itemCokeCactus");
+ ItemUtils.addItemToOreDictionary(ItemUtils.getSimpleStack(ModItems.itemSugarCharcoal), "itemCharcoalSugar");
+ ItemUtils.addItemToOreDictionary(ItemUtils.getSimpleStack(ModItems.itemSugarCoke), "itemCokeSugar");
+ }
+
+ public static void postInit() {
+ generateCokeOvenRecipes();
+ }
+
+ private static void generateCokeOvenRecipes() {
+ ItemStack[] aInputs1 = new ItemStack[] { ItemUtils.getSimpleStack(Blocks.cactus),
+ ItemUtils.getSimpleStack(Items.reeds) };
+ ItemStack[] aInputs2 = new ItemStack[] { ItemUtils.getSimpleStack(ModItems.itemCactusCharcoal),
+ ItemUtils.getSimpleStack(ModItems.itemSugarCharcoal) };
+ ItemStack[] aOutputs = new ItemStack[] { ItemUtils.getSimpleStack(ModItems.itemCactusCoke),
+ ItemUtils.getSimpleStack(ModItems.itemSugarCoke) };
+ for (int i = 0; i < aOutputs.length; i++) {
+ // Recipes for the Charcoals and Cokes, outputting either Creosote or Charcoal Byproducts depending on the
+ // fluid input
+ CORE.RA.addCokeOvenRecipe(
+ aInputs1[i],
+ CI.getNumberedCircuit(3),
+ null,
+ FluidUtils.getFluidStack("creosote", 100),
+ aInputs2[i],
+ 20,
+ 16);
+ CORE.RA.addCokeOvenRecipe(
+ aInputs1[i],
+ CI.getNumberedCircuit(4),
+ FluidUtils.getFluidStack("nitrogen", 100),
+ FluidUtils.getFluidStack("charcoal_byproducts", 200),
+ aInputs2[i],
+ 10,
+ 16);
+ CORE.RA.addCokeOvenRecipe(
+ aInputs2[i],
+ CI.getNumberedCircuit(3),
+ null,
+ FluidUtils.getFluidStack("creosote", 200),
+ aOutputs[i],
+ 40,
+ 16);
+ CORE.RA.addCokeOvenRecipe(
+ aInputs2[i],
+ CI.getNumberedCircuit(4),
+ FluidUtils.getFluidStack("nitrogen", 50),
+ FluidUtils.getFluidStack("charcoal_byproducts", 100),
+ aOutputs[i],
+ 20,
+ 16);
+
+ // Generate Wood Tar and Wood Gas from these Cokes
+ CORE.RA.addCokeOvenRecipe(
+ aOutputs[i],
+ CI.getNumberedCircuit(5),
+ FluidUtils.getFluidStack("steam", 100),
+ Materials.WoodTar.getFluid(200),
+ Materials.Ash.getDustSmall(1),
+ 60,
+ 240);
+ CORE.RA.addCokeOvenRecipe(
+ aOutputs[i],
+ CI.getNumberedCircuit(6),
+ FluidUtils.getFluidStack("steam", 100),
+ Materials.WoodGas.getFluid(300),
+ Materials.Ash.getDustSmall(1),
+ 60,
+ 240);
+
+ // Fluid Extracting the Charcoals for Wood Tar
+ GT_Values.RA.stdBuilder()
+ .itemInputs(aInputs2[i])
+ .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Ash, 1L))
+ .outputChances(1000)
+ .fluidOutputs(Materials.WoodTar.getFluid(50L))
+ .duration(1 * SECONDS + 10 * TICKS)
+ .eut(16)
+ .addTo(fluidExtractionRecipes);
+
+ // Processing the Charcoals with Oxygen to get CO and CO2
+ // C + O = CO
+ GT_Values.RA.stdBuilder()
+ .itemInputs(aInputs2[i], GT_Utility.getIntegratedCircuit(1))
+ .itemOutputs(Materials.Ash.getDustTiny(1))
+ .fluidInputs(Materials.Oxygen.getGas(500))
+ .fluidOutputs(Materials.CarbonMonoxide.getGas(500))
+ .duration(4 * SECONDS)
+ .eut(8)
+ .addTo(UniversalChemical);
+ // C + 2O = CO2
+ GT_Values.RA.stdBuilder()
+ .itemInputs(aInputs2[i], GT_Utility.getIntegratedCircuit(2))
+ .itemOutputs(Materials.Ash.getDustTiny(1))
+ .fluidInputs(Materials.Oxygen.getGas(2000))
+ .fluidOutputs(Materials.CarbonDioxide.getGas(1000))
+ .duration(2 * SECONDS)
+ .eut(8)
+ .addTo(UniversalChemical);
+ }
+ if (Railcraft.isModLoaded()) {
+ for (int i = 0; i < aOutputs.length; i++) {
+ RailcraftUtils.addCokeOvenRecipe(
+ aInputs1[i],
+ true,
+ true,
+ aInputs2[i],
+ FluidUtils.getFluidStack("creosote", 30),
+ 500);
+ }
+ for (int i = 0; i < aOutputs.length; i++) {
+ RailcraftUtils.addCokeOvenRecipe(
+ aInputs2[i],
+ true,
+ true,
+ aOutputs[i],
+ FluidUtils.getFluidStack("creosote", 30),
+ 500);
+ }
+
+ if (NewHorizonsCoreMod.isModLoaded()) {
+ for (int i = 0; i < aOutputs.length; i++) {
+ RailcraftUtils.addAdvancedCokeOvenRecipe(aInputs1[i], true, true, aInputs2[i], 20);
+ }
+ for (int i = 0; i < aOutputs.length; i++) {
+ RailcraftUtils.addAdvancedCokeOvenRecipe(aInputs2[i], true, true, aOutputs[i], 20);
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/gtPlusPlus/xmod/railcraft/utils/RailcraftUtils.java b/src/main/java/gtPlusPlus/xmod/railcraft/utils/RailcraftUtils.java
new file mode 100644
index 0000000000..f2f538ab38
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/railcraft/utils/RailcraftUtils.java
@@ -0,0 +1,22 @@
+package gtPlusPlus.xmod.railcraft.utils;
+
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidStack;
+
+import mods.railcraft.common.util.crafting.BlastFurnaceCraftingManager;
+import mods.railcraft.common.util.crafting.CokeOvenCraftingManager;
+
+public class RailcraftUtils {
+
+ public static void addCokeOvenRecipe(ItemStack input, boolean matchDamage, boolean matchNBT, ItemStack output,
+ FluidStack fluidOutput, int cookTime) {
+ CokeOvenCraftingManager.getInstance()
+ .addRecipe(input, matchDamage, matchNBT, output, fluidOutput, cookTime);
+ }
+
+ public static void addAdvancedCokeOvenRecipe(ItemStack input, boolean matchDamage, boolean matchNBT,
+ ItemStack output, int cookTime) {
+ BlastFurnaceCraftingManager.getInstance()
+ .addRecipe(input, matchDamage, matchNBT, cookTime, output);
+ }
+}