From b56487b680000a646fdd4667d08249d28d6534a0 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Mon, 8 Jun 2015 18:26:22 +0100 Subject: [PATCH] This should fix bc 6 compatibility Can some one test please. --- .../compat/recipes/RecipeManager.java | 2 +- .../compat/recipes/RecipesBuildcraft.java | 55 +++++++++++++------ 2 files changed, 38 insertions(+), 19 deletions(-) diff --git a/src/main/java/techreborn/compat/recipes/RecipeManager.java b/src/main/java/techreborn/compat/recipes/RecipeManager.java index 5105cdfb3..c36ce2330 100644 --- a/src/main/java/techreborn/compat/recipes/RecipeManager.java +++ b/src/main/java/techreborn/compat/recipes/RecipeManager.java @@ -14,7 +14,7 @@ public class RecipeManager { LogHelper.info("IC2 Compat Loaded"); } - if (Loader.isModLoaded("BuildCraft|Builders")) + if (Loader.isModLoaded("BuildCraft")) { RecipesBuildcraft.init(); diff --git a/src/main/java/techreborn/compat/recipes/RecipesBuildcraft.java b/src/main/java/techreborn/compat/recipes/RecipesBuildcraft.java index 63c1d8c36..f5a551e4e 100644 --- a/src/main/java/techreborn/compat/recipes/RecipesBuildcraft.java +++ b/src/main/java/techreborn/compat/recipes/RecipesBuildcraft.java @@ -1,40 +1,59 @@ package techreborn.compat.recipes; -import buildcraft.BuildCraftBuilders; +import buildcraft.builders.BlockQuarry; +import buildcraft.core.Version; +import cpw.mods.fml.common.Loader; import ic2.api.item.IC2Items; import net.minecraft.item.ItemStack; import techreborn.util.CraftingHelper; +import techreborn.util.LogHelper; import techreborn.util.RecipeRemover; public class RecipesBuildcraft { - public static void init() - { + public static BlockQuarry quarryBlock; + + public static void init() { + try { + String itemClass = "buildcraft.BuildCraftBuilders"; + if (!Version.getVersion().startsWith("7")) {//Buildcraft 6 + if (Loader.isModLoaded("BuildCraft|Factory")) { + itemClass = "buildcraft.BuildCraftFactory"; + } + } else if (!Loader.isModLoaded("Buildcraft|Builders")) { //Buildcraft 7 + return; + } + Object obj = Class.forName(itemClass).getField("quarryBlock").get(null); + if (obj instanceof BlockQuarry) { + quarryBlock = (BlockQuarry) obj; + } + } catch (Exception ex) { + LogHelper.fatal("Could not retrieve quarry block from Buildcraft! This is a fatal error!"); + ex.printStackTrace(); + } removeRecipes(); addRecipies(); } - public static void removeRecipes() - { + public static void removeRecipes() { RecipeRemover.removeAnyRecipe(new ItemStack( - BuildCraftBuilders.quarryBlock)); + quarryBlock)); } - public static void addRecipies() - { + public static void addRecipies() { //Quarry CraftingHelper.addShapedOreRecipe( - new ItemStack (BuildCraftBuilders.quarryBlock), + new ItemStack(quarryBlock), new Object[] - { - "IAI", "GIG", "DED", - 'I', "gearIron", - 'G', "gearGold", - 'D', "gearDiamond", - 'A', IC2Items.getItem("advancedCircuit"), - 'E', IC2Items.getItem("diamondDrill") - } - ); + { + "IAI", "GIG", "DED", + 'I', "gearIron", + 'G', "gearGold", + 'D', "gearDiamond", + 'A', IC2Items.getItem("advancedCircuit"), + 'E', IC2Items.getItem("diamondDrill") + } + ); } }