aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/mekanism/HANDLER_Mekanism.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/mekanism/HANDLER_Mekanism.java')
-rw-r--r--src/main/java/gtPlusPlus/xmod/mekanism/HANDLER_Mekanism.java277
1 files changed, 277 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/mekanism/HANDLER_Mekanism.java b/src/main/java/gtPlusPlus/xmod/mekanism/HANDLER_Mekanism.java
new file mode 100644
index 0000000000..9073f2ec7f
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/mekanism/HANDLER_Mekanism.java
@@ -0,0 +1,277 @@
+package gtPlusPlus.xmod.mekanism;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+
+import gregtech.api.util.GT_ModHandler;
+
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.lib.LoadedMods;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.NBTUtils;
+import gtPlusPlus.core.util.minecraft.RecipeUtils;
+
+public class HANDLER_Mekanism {
+
+ public static void preInit(){
+ if (LoadedMods.Mekanism){
+
+ }
+ }
+
+ public static void init(){
+ if (LoadedMods.Mekanism){
+
+ }
+ }
+
+ public static void postInit(){
+ if (LoadedMods.Mekanism && !LoadedMods.RedTech){
+
+ Logger.INFO("Performing GT recipe balance for Mek. now that it's Osmium is useless.");
+
+ //Steel Casing
+ final ItemStack tSteelCasing = ItemUtils.simpleMetaStack("Mekanism:BasicBlock:8", 8, 1);
+ addNewRecipe(
+ "plateSteel", "blockGlass", "plateSteel",
+ "blockGlass", "plateStainlessSteel", "blockGlass",
+ "plateSteel", "blockGlass", "plateSteel",
+ tSteelCasing);
+
+ //Energy Storage
+ final ItemStack tAdvancedEnergyCube = ItemUtils.simpleMetaStack("Mekanism:EnergyCube", 0, 1).copy();
+ NBTUtils.setString(tAdvancedEnergyCube, "tier", "Advanced");
+ final ItemStack tBasicEnergyCube = ItemUtils.simpleMetaStack("Mekanism:EnergyCube", 0, 1).copy();
+ NBTUtils.setString(tBasicEnergyCube, "tier", "Basic");
+
+ //Gas tanks
+ final ItemStack tBasicGasTank = ItemUtils.simpleMetaStack("Mekanism:GasTank", 0, 1).copy();
+ NBTUtils.setInteger(tBasicGasTank, "tier", 0);
+ final ItemStack tAdvancedGasTank = ItemUtils.simpleMetaStack("Mekanism:GasTank", 0, 1).copy();
+ NBTUtils.setInteger(tAdvancedGasTank, "tier", 1);
+ final ItemStack tEliteGasTank = ItemUtils.simpleMetaStack("Mekanism:GasTank", 0, 1).copy();
+ NBTUtils.setInteger(tEliteGasTank, "tier", 2);
+ final ItemStack tMasterGasTank = ItemUtils.simpleMetaStack("Mekanism:GasTank", 0, 1).copy();
+ NBTUtils.setInteger(tMasterGasTank, "tier", 3);
+
+ //Machines that use Osmium
+ final ItemStack tMachineBlock_Basic = ItemUtils.simpleMetaStack("Mekanism:MachineBlock:5", 5, 1);
+ final ItemStack tMachineBlock = ItemUtils.simpleMetaStack("Mekanism:MachineBlock:6", 6, 1);
+
+ //Smelting
+ final ItemStack tMachineBlock_0_Basic = tMachineBlock_Basic.copy();
+ NBTUtils.setInteger(tMachineBlock_0_Basic, "recipeType", 0);
+ final ItemStack tMachineBlock_0 = tMachineBlock.copy();
+ NBTUtils.setInteger(tMachineBlock_0, "recipeType", 0);
+ //Enriching
+ final ItemStack tMachineBlock_1_Basic = tMachineBlock_Basic.copy();
+ NBTUtils.setInteger(tMachineBlock_1_Basic, "recipeType", 1);
+ final ItemStack tMachineBlock_1 = tMachineBlock.copy();
+ NBTUtils.setInteger(tMachineBlock_1, "recipeType", 1);
+ //Crushing
+ final ItemStack tMachineBlock_2_Basic = tMachineBlock_Basic.copy();
+ NBTUtils.setInteger(tMachineBlock_2_Basic, "recipeType", 2);
+ final ItemStack tMachineBlock_2 = tMachineBlock.copy();
+ NBTUtils.setInteger(tMachineBlock_2, "recipeType", 2);
+ //Compressing
+ final ItemStack tMachineBlock_3_Basic = tMachineBlock_Basic.copy();
+ NBTUtils.setInteger(tMachineBlock_3_Basic, "recipeType", 3);
+ final ItemStack tMachineBlock_3 = tMachineBlock.copy();
+ NBTUtils.setInteger(tMachineBlock_3, "recipeType", 3);
+ //Combining
+ final ItemStack tMachineBlock_4_Basic = tMachineBlock_Basic.copy();
+ NBTUtils.setInteger(tMachineBlock_4_Basic, "recipeType", 4);
+ final ItemStack tMachineBlock_4 = tMachineBlock.copy();
+ NBTUtils.setInteger(tMachineBlock_4, "recipeType", 4);
+ //Purifying
+ final ItemStack tMachineBlock_5_Basic = tMachineBlock_Basic.copy();
+ NBTUtils.setInteger(tMachineBlock_5_Basic, "recipeType", 5);
+ final ItemStack tMachineBlock_5 = tMachineBlock.copy();
+ NBTUtils.setInteger(tMachineBlock_5, "recipeType", 5);
+ //Injecting
+ final ItemStack tMachineBlock_6_Basic = tMachineBlock_Basic.copy();
+ NBTUtils.setInteger(tMachineBlock_6_Basic, "recipeType", 6);
+ final ItemStack tMachineBlock_6 = tMachineBlock.copy();
+ NBTUtils.setInteger(tMachineBlock_6, "recipeType", 6);
+ //Infusing
+ final ItemStack tMachineBlock_7_Basic = tMachineBlock_Basic.copy();
+ NBTUtils.setInteger(tMachineBlock_7_Basic, "recipeType", 7);
+ final ItemStack tMachineBlock_7 = tMachineBlock.copy();
+ NBTUtils.setInteger(tMachineBlock_7, "recipeType", 7);
+
+ //Infuser
+ final ItemStack tMachineBlock_8 = ItemUtils.simpleMetaStack("Mekanism:MachineBlock:8", 8, 1);
+ //Purification
+ final ItemStack tMachineBlock_9 = ItemUtils.simpleMetaStack("Mekanism:MachineBlock:9", 9, 1);
+ //Pump
+ final ItemStack tMachineBlock_12 = ItemUtils.simpleMetaStack("Mekanism:MachineBlock:12", 12, 1);
+
+ //<Mekanism:ElectrolyticCore>
+ final ItemStack tItem_1 = ItemUtils.simpleMetaStack("Mekanism:ElectrolyticCore", 0, 1);
+ //<Mekanism:FactoryInstaller:1>
+ final ItemStack tItem_2 = ItemUtils.simpleMetaStack("Mekanism:FactoryInstaller:1", 1, 1);
+ //<Mekanism:SpeedUpgrade>
+ final ItemStack tItem_3 = ItemUtils.simpleMetaStack("Mekanism:SpeedUpgrade", 0, 1);
+
+ //MiscItems
+ final String tAdvancedAlloy = "alloyAdvanced";
+ final String tCircuitAdvanced = "circuitAdvanced";
+ final ItemStack tMekBatterySimple = ItemUtils.simpleMetaStack("Mekanism:EnergyTablet", 0, 1);
+
+ //Items
+ addNewRecipe(
+ tAdvancedAlloy, "plateTitanium", tAdvancedAlloy,
+ "dustIron", tAdvancedAlloy, "dustGold",
+ tAdvancedAlloy, "plateTitanium", tAdvancedAlloy,
+ tItem_1);
+ addNewRecipe(
+ tAdvancedAlloy, "circuitAdvanced", tAdvancedAlloy,
+ "plateStainlessSteel", "plankWood", "plateStainlessSteel",
+ tAdvancedAlloy, "circuitAdvanced", tAdvancedAlloy,
+ tItem_2);
+ addNewRecipe(
+ null, "blockGlass", null,
+ tAdvancedAlloy, "plateTungsten", tAdvancedAlloy,
+ null, "blockGlass", null,
+ tItem_3);
+
+ //Power Storage
+ addNewRecipe(
+ tAdvancedAlloy, tMekBatterySimple, tAdvancedAlloy,
+ "plateAluminium", tBasicEnergyCube, "plateAluminium",
+ tAdvancedAlloy, tMekBatterySimple, tAdvancedAlloy,
+ tAdvancedEnergyCube);
+
+ //Blocks
+ addNewRecipe(
+ "plateSteel", "craftingFurnace", "plateSteel",
+ "plateRedstone", "platePlatinum", "plateRedstone",
+ "plateSteel", "craftingFurnace", "plateSteel",
+ tMachineBlock_8);
+ addNewRecipe(
+ tAdvancedAlloy, "circuitAdvanced", tAdvancedAlloy,
+ "plateTitanium", ItemUtils.simpleMetaStack("Mekanism:MachineBlock", 0, 1), "plateTitanium",
+ tAdvancedAlloy, "circuitAdvanced", tAdvancedAlloy,
+ tMachineBlock_9);
+ addNewRecipe(
+ null, ItemUtils.getSimpleStack(Items.bucket), null,
+ tAdvancedAlloy, tSteelCasing, tAdvancedAlloy,
+ "plateStainlessSteel", "plateStainlessSteel", "plateStainlessSteel",
+ tMachineBlock_12);
+
+ //Machines
+ addNewRecipe(
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ "plateStainlessSteel", tMachineBlock_0_Basic, "plateStainlessSteel",
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ tMachineBlock_0);
+ addNewRecipe(
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ "plateStainlessSteel", tMachineBlock_1_Basic, "plateStainlessSteel",
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ tMachineBlock_1);
+ addNewRecipe(
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ "plateStainlessSteel", tMachineBlock_2_Basic, "plateStainlessSteel",
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ tMachineBlock_2);
+ addNewRecipe(
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ "plateStainlessSteel", tMachineBlock_3_Basic, "plateStainlessSteel",
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ tMachineBlock_3);
+ addNewRecipe(
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ "plateStainlessSteel", tMachineBlock_4_Basic, "plateStainlessSteel",
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ tMachineBlock_4);
+ addNewRecipe(
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ "plateStainlessSteel", tMachineBlock_5_Basic, "plateStainlessSteel",
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ tMachineBlock_5);
+ addNewRecipe(
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ "plateStainlessSteel", tMachineBlock_6_Basic, "plateStainlessSteel",
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ tMachineBlock_6);
+ addNewRecipe(
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ "plateStainlessSteel", tMachineBlock_7_Basic, "plateStainlessSteel",
+ tAdvancedAlloy, tCircuitAdvanced, tAdvancedAlloy,
+ tMachineBlock_7);
+
+ //Gas Tanks
+ addNewRecipe(
+ "plateRedstone", "plateAluminium", "plateRedstone",
+ "plateAluminium", null, "plateAluminium",
+ "plateRedstone", "plateAluminium", "plateRedstone",
+ tBasicGasTank);
+ addNewRecipe(
+ tAdvancedAlloy, "plateStainlessSteel", tAdvancedAlloy,
+ "plateStainlessSteel", tBasicGasTank, "plateStainlessSteel",
+ tAdvancedAlloy, "plateStainlessSteel", tAdvancedAlloy,
+ tAdvancedGasTank);
+ addNewRecipe(
+ "alloyElite", "plateTitanium", "alloyElite",
+ "plateTitanium", tAdvancedGasTank, "plateTitanium",
+ "alloyElite", "plateTitanium", "alloyElite",
+ tEliteGasTank);
+ addNewRecipe(
+ "alloyUltimate", "plateTungsten", "alloyUltimate",
+ "plateTungsten", tEliteGasTank, "plateTungsten",
+ "alloyUltimate", "plateTungsten", "alloyUltimate",
+ tMasterGasTank);
+ }
+ }
+
+ private static boolean addNewRecipe(
+ final Object InputItem1, final Object InputItem2, final Object InputItem3,
+ final Object InputItem4, final Object InputItem5, final Object InputItem6,
+ final Object InputItem7, final Object InputItem8, final Object InputItem9,
+ final ItemStack OutputItem){
+
+ /*if (removeRecipe(OutputItem)){
+ return RecipeUtils.recipeBuilder(
+ InputItem1, InputItem2, InputItem3,
+ InputItem4, InputItem5, InputItem6,
+ InputItem7, InputItem8, InputItem9,
+ OutputItem);
+ }*/
+
+ removeRecipe(OutputItem);
+ return RecipeUtils.recipeBuilder(
+ InputItem1, InputItem2, InputItem3,
+ InputItem4, InputItem5, InputItem6,
+ InputItem7, InputItem8, InputItem9,
+ OutputItem);
+ }
+
+ private static boolean removeRecipe(final ItemStack item){
+ Class<?> mekUtils;
+ boolean removed = false;
+ try {
+ mekUtils = Class.forName("mekanism.common.util.RecipeUtils");
+ if (mekUtils != null){
+ final Method mRemoveRecipe = mekUtils.getDeclaredMethod("removeRecipes", ItemStack.class);
+ if (mRemoveRecipe != null){
+ removed = (boolean) mRemoveRecipe.invoke(null, item);
+ if (!removed) {
+ removed = (boolean) mRemoveRecipe.invoke(mekUtils, item);
+ }
+ }
+ }
+ } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ Logger.INFO("[Mek] Failed to use the built-in recipe remover from Mekanism.");
+ }
+ if (!removed){
+ removed = GT_ModHandler.removeRecipeByOutput(item);
+ }
+ Logger.INFO("[Mek] Successfully removed the recipe for "+item.getDisplayName()+".");
+ return removed;
+ }
+
+}