diff options
Diffstat (limited to 'src/Java/gtPlusPlus')
-rw-r--r-- | src/Java/gtPlusPlus/GTplusplus.java | 3 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/api/interfaces/IPlugin.java | 19 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/api/plugin/Sample_Plugin.java | 5 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/core/config/ConfigHandler.java | 4 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/core/lib/CORE.java | 1 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java | 24 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/plugin/fishing/Core_Fishing.java | 5 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/plugin/manager/Core_Manager.java | 20 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/plugin/sulfurchem/Core_SulfuricChemistry.java | 166 |
9 files changed, 195 insertions, 52 deletions
diff --git a/src/Java/gtPlusPlus/GTplusplus.java b/src/Java/gtPlusPlus/GTplusplus.java index 5dfa2cfb93..aae1b32602 100644 --- a/src/Java/gtPlusPlus/GTplusplus.java +++ b/src/Java/gtPlusPlus/GTplusplus.java @@ -81,7 +81,8 @@ public class GTplusplus implements ActionListener { @Mod.EventHandler public void preInit(final FMLPreInitializationEvent event) { Logger.INFO("Loading " + CORE.name + " V" + CORE.VERSION); - + //Load all class objects within the plugin package. + Core_Manager.veryEarlyInit(); if(!Utils.isServer()){ enableCustomCapes = true; diff --git a/src/Java/gtPlusPlus/api/interfaces/IPlugin.java b/src/Java/gtPlusPlus/api/interfaces/IPlugin.java index 99c71a5823..6a8e8c085d 100644 --- a/src/Java/gtPlusPlus/api/interfaces/IPlugin.java +++ b/src/Java/gtPlusPlus/api/interfaces/IPlugin.java @@ -1,8 +1,27 @@ package gtPlusPlus.api.interfaces; +import gtPlusPlus.api.objects.Logger; + public interface IPlugin { + /** + * @return A {@link String} object which returns the {@link IPlugin}'s name. + */ public String getPluginName(); + + /** + * @return + * A {@link String} object which returns the {@link IPlugin}'s short name. + * This String should only contain 4 Characters. + */ + public String getPluginAbbreviation(); + + /** + * @param message - A {@link String} object which holds a message to be logged to console. + */ + default void log(String message) { + Logger.INFO("["+getPluginAbbreviation()+"] "+message); + } public boolean preInit(); public boolean init(); diff --git a/src/Java/gtPlusPlus/api/plugin/Sample_Plugin.java b/src/Java/gtPlusPlus/api/plugin/Sample_Plugin.java index d2959df58d..82671acaea 100644 --- a/src/Java/gtPlusPlus/api/plugin/Sample_Plugin.java +++ b/src/Java/gtPlusPlus/api/plugin/Sample_Plugin.java @@ -29,4 +29,9 @@ public final class Sample_Plugin implements IPlugin { return "Sample Plugin"; } + @Override + public String getPluginAbbreviation() { + return "Test"; + } + } diff --git a/src/Java/gtPlusPlus/core/config/ConfigHandler.java b/src/Java/gtPlusPlus/core/config/ConfigHandler.java index d01df7f5f3..4c992ed8f4 100644 --- a/src/Java/gtPlusPlus/core/config/ConfigHandler.java +++ b/src/Java/gtPlusPlus/core/config/ConfigHandler.java @@ -61,7 +61,9 @@ public class ConfigHandler { // GT-Fixes enableNitroFix = config.getBoolean("enableNitroFix", "gregtech", false, - "Restores the old Nitro-Diesel recipes."); + "Restores the old Nitro-Diesel recipes."); + enableSulfuricAcidFix = config.getBoolean("enableSulfuricAcidFix", "gregtech", false, + "Adds GT6 recipes for Sulfuric Acid. Should remove all pre-existing recipes."); enableAnimatedTurbines = config.getBoolean("enableAnimatedTurbines", "gregtech", true, "Gives GT Gas/Steam turbines animated textures while running."); diff --git a/src/Java/gtPlusPlus/core/lib/CORE.java b/src/Java/gtPlusPlus/core/lib/CORE.java index b539c9c036..d31f15ef1b 100644 --- a/src/Java/gtPlusPlus/core/lib/CORE.java +++ b/src/Java/gtPlusPlus/core/lib/CORE.java @@ -202,6 +202,7 @@ public class CORE { //GT Fixes public static boolean enableNitroFix = false; + public static boolean enableSulfuricAcidFix = false; public static boolean enableAnimatedTurbines = true; //Single Block Machines diff --git a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java index d8afcf7e00..510913d794 100644 --- a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java +++ b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java @@ -1,5 +1,6 @@ package gtPlusPlus.core.util.reflect; +import java.io.IOException; import java.lang.reflect.*; import java.net.URL; import java.util.HashSet; @@ -7,10 +8,12 @@ import java.util.Scanner; import org.apache.commons.lang3.reflect.FieldUtils; +import com.google.common.reflect.ClassPath; + import net.minecraft.client.Minecraft; import gregtech.GT_Mod; - +import gtPlusPlus.GTplusplus; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.lib.CORE; @@ -334,6 +337,25 @@ public class ReflectionUtils { } return null; } + + public static boolean dynamicallyLoadClassesInPackage(String aPackageName) { + ClassLoader classLoader = GTplusplus.class.getClassLoader(); + int loaded = 0; + try { + ClassPath path = ClassPath.from(classLoader); + for (ClassPath.ClassInfo info : path.getTopLevelClassesRecursive(aPackageName)) { + Class<?> clazz = Class.forName(info.getName(), true, classLoader); + if (clazz != null) { + loaded++; + Logger.INFO("Found "+clazz.getCanonicalName()+". ["+loaded+"]"); + } + } + } catch (ClassNotFoundException | IOException e) { + + } + + return loaded > 0; + } } diff --git a/src/Java/gtPlusPlus/plugin/fishing/Core_Fishing.java b/src/Java/gtPlusPlus/plugin/fishing/Core_Fishing.java index fed07135fb..60c599d191 100644 --- a/src/Java/gtPlusPlus/plugin/fishing/Core_Fishing.java +++ b/src/Java/gtPlusPlus/plugin/fishing/Core_Fishing.java @@ -29,4 +29,9 @@ public class Core_Fishing implements IPlugin { return "GT++ Fishing Module"; } + @Override + public String getPluginAbbreviation() { + return "FISH"; + } + } diff --git a/src/Java/gtPlusPlus/plugin/manager/Core_Manager.java b/src/Java/gtPlusPlus/plugin/manager/Core_Manager.java index 4fd18b4959..4526a43a5b 100644 --- a/src/Java/gtPlusPlus/plugin/manager/Core_Manager.java +++ b/src/Java/gtPlusPlus/plugin/manager/Core_Manager.java @@ -3,15 +3,29 @@ package gtPlusPlus.plugin.manager; import gtPlusPlus.api.interfaces.IPlugin; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.AutoMap; +import gtPlusPlus.core.util.reflect.ReflectionUtils; public class Core_Manager { public static AutoMap<IPlugin> mPlugins = new AutoMap<IPlugin>(); - public static void registerPlugin(IPlugin plug) { - Logger.INFO("[Plugin] " + "Registered "+plug.getPluginName()+"."); - mPlugins.put(plug); + /** + * @param plugin - Dynamically registers the plugin for loading. + */ + public static void registerPlugin(IPlugin plugin) { + Logger.INFO("[Plugin] " + "Registered "+plugin.getPluginName()+"."); + mPlugins.put(plugin); } + + /** + * Dynamically loads all class objects within the "gtPlusPlus.plugin" package. + */ + public static void veryEarlyInit() { + if (ReflectionUtils.dynamicallyLoadClassesInPackage("gtPlusPlus.plugin")) { + Logger.INFO("[Plugin] Plugin System loaded."); + } + } + public static boolean preInit() { try { for (IPlugin h : mPlugins) { diff --git a/src/Java/gtPlusPlus/plugin/sulfurchem/Core_SulfuricChemistry.java b/src/Java/gtPlusPlus/plugin/sulfurchem/Core_SulfuricChemistry.java index 0ee41f54fb..71227fffb6 100644 --- a/src/Java/gtPlusPlus/plugin/sulfurchem/Core_SulfuricChemistry.java +++ b/src/Java/gtPlusPlus/plugin/sulfurchem/Core_SulfuricChemistry.java @@ -5,6 +5,7 @@ import gregtech.api.enums.Materials; import gregtech.api.util.GT_Recipe; import gtPlusPlus.api.interfaces.IPlugin; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; @@ -15,7 +16,8 @@ import net.minecraftforge.fluids.FluidStack; public class Core_SulfuricChemistry implements IPlugin { final static Core_SulfuricChemistry mInstance; - + private static boolean shouldLoad = false; + static { mInstance = new Core_SulfuricChemistry(); Core_Manager.registerPlugin(mInstance); @@ -24,33 +26,45 @@ public class Core_SulfuricChemistry implements IPlugin { @Override public boolean preInit() { - return true; + if (CORE.ConfigSwitches.enableSulfuricAcidFix) { + shouldLoad = true; + } + if (shouldLoad) + return true; + return false; } @Override public boolean init() { - return true; + if (shouldLoad) + return true; + return false; } @Override public boolean postInit() { - int disabled = disableRecipes(); - Logger.INFO("[RSCM] Disabled "+disabled+" Sulfuric Chemistry recipes."); - int addedNew = addRevisedGT6Recipes(); - Logger.INFO("[RSCM] Added "+addedNew+" new Sulfuric Chemistry recipes."); - return disabled > 0 && addedNew > 0; + if (shouldLoad) { + int disabled = disableSulfurTrioxide(); + Logger.INFO("[RSCM] Disabled "+disabled+" Sulfur Trioxide Chemistry recipes."); + disabled = disableSulfuricAcid(); + Logger.INFO("[RSCM] Disabled "+disabled+" Sulfuric Acid Chemistry recipes."); + int addedNew = addRevisedGT6Recipes(); + Logger.INFO("[RSCM] Added "+addedNew+" new Sulfuric Chemistry recipes."); + return disabled > 0 && addedNew > 0; + } + return false; } @Override public String getPluginName() { return "GT++ Revised Sulfuric Chemistry Module"; } - + public int addRevisedGT6Recipes() { - + String catalyst = "dustPlatinum"; int mCountAdded = 0; - + /** * Sulfur Trioxide Recipes */ @@ -75,8 +89,8 @@ public class Core_SulfuricChemistry implements IPlugin { null, 16, 16)) { - mCountAdded++; - } + mCountAdded++; + } //Oxygen if (GT_Values.RA.addChemicalRecipe( ItemUtils.getItemStackOfAmountFromOreDict(catalyst, 0), @@ -87,8 +101,8 @@ public class Core_SulfuricChemistry implements IPlugin { null, 16, 16)) { - mCountAdded++; - } + mCountAdded++; + } if (GT_Values.RA.addChemicalRecipe( ItemUtils.getItemStackOfAmountFromOreDict(catalyst, 0), ItemUtils.getItemStackOfAmountFromOreDict("cellSulfurDioxide", 3), @@ -98,13 +112,13 @@ public class Core_SulfuricChemistry implements IPlugin { null, 16, 16)) { - mCountAdded++; - } - + mCountAdded++; + } + /** * Sulfuric Acid Recipes */ - + if (GT_Values.RA.addChemicalRecipe( CI.getNumberedCircuit(22), ItemUtils.getItemStackOfAmountFromOreDict("cellSulfurTrioxide", 1), @@ -114,8 +128,8 @@ public class Core_SulfuricChemistry implements IPlugin { null, 20, 20)) { - mCountAdded++; - } + mCountAdded++; + } if (GT_Values.RA.addChemicalRecipe( CI.getNumberedCircuit(22), ItemUtils.getItemStackOfAmountFromOreDict("cellWater", 3), @@ -125,14 +139,65 @@ public class Core_SulfuricChemistry implements IPlugin { null, 20, 20)) { - mCountAdded++; - } - + mCountAdded++; + } + return mCountAdded; } - - - public int disableRecipes() { + + + public int disableSulfurTrioxide() { + int mDisabled = 0; + //Single Block Recipes + recipe : for (GT_Recipe r : GT_Recipe.GT_Recipe_Map.sChemicalRecipes.mRecipeList) { + for (ItemStack i : r.mOutputs) { + i.stackSize = 1; + if (ItemStack.areItemStacksEqual(i, ItemUtils.getItemStackOfAmountFromOreDict("cellSulfurTrioxide", 1))) { + r.mEnabled = false; + r.mHidden = true; + mDisabled++; + continue recipe; + } + continue; + } + for (FluidStack f : r.mFluidOutputs) { + if (FluidStack.areFluidStackTagsEqual(f, Materials.SulfurTrioxide.getFluid(1))) { + r.mEnabled = false; + r.mHidden = true; + mDisabled++; + continue recipe; + } + continue; + } + } + + //Multi Block Recipes + recipe : for (GT_Recipe r : GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.mRecipeList) { + for (ItemStack i : r.mOutputs) { + i.stackSize = 1; + if (ItemStack.areItemStacksEqual(i, ItemUtils.getItemStackOfAmountFromOreDict("cellSulfurTrioxide", 1))) { + r.mEnabled = false; + r.mHidden = true; + mDisabled++; + continue recipe; + } + continue; + } + for (FluidStack f : r.mFluidOutputs) { + if (FluidStack.areFluidStackTagsEqual(f, Materials.SulfurTrioxide.getFluid(1))) { + r.mEnabled = false; + r.mHidden = true; + mDisabled++; + continue recipe; + } + continue; + } + } + + return mDisabled; + } + + public int disableSulfuricAcid() { int mDisabled = 0; //Single Block Recipes recipe : for (GT_Recipe r : GT_Recipe.GT_Recipe_Map.sChemicalRecipes.mRecipeList) { @@ -140,6 +205,7 @@ public class Core_SulfuricChemistry implements IPlugin { i.stackSize = 1; if (ItemStack.areItemStacksEqual(i, ItemUtils.getItemStackOfAmountFromOreDict("cellSulfuricAcid", 1))) { r.mEnabled = false; + r.mHidden = true; mDisabled++; continue recipe; } @@ -148,35 +214,43 @@ public class Core_SulfuricChemistry implements IPlugin { for (FluidStack f : r.mFluidOutputs) { if (FluidStack.areFluidStackTagsEqual(f, Materials.SulfuricAcid.getFluid(1))) { r.mEnabled = false; + r.mHidden = true; mDisabled++; continue recipe; } continue; } } - - //Multi Block Recipes - recipe : for (GT_Recipe r : GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.mRecipeList) { - for (ItemStack i : r.mOutputs) { - i.stackSize = 1; - if (ItemStack.areItemStacksEqual(i, ItemUtils.getItemStackOfAmountFromOreDict("cellSulfuricAcid", 1))) { - r.mEnabled = false; - mDisabled++; - continue recipe; + + //Multi Block Recipes + recipe : for (GT_Recipe r : GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.mRecipeList) { + for (ItemStack i : r.mOutputs) { + i.stackSize = 1; + if (ItemStack.areItemStacksEqual(i, ItemUtils.getItemStackOfAmountFromOreDict("cellSulfuricAcid", 1))) { + r.mEnabled = false; + r.mHidden = true; + mDisabled++; + continue recipe; + } + continue; } - continue; - } - for (FluidStack f : r.mFluidOutputs) { - if (FluidStack.areFluidStackTagsEqual(f, Materials.SulfuricAcid.getFluid(1))) { - r.mEnabled = false; - mDisabled++; - continue recipe; + for (FluidStack f : r.mFluidOutputs) { + if (FluidStack.areFluidStackTagsEqual(f, Materials.SulfuricAcid.getFluid(1))) { + r.mEnabled = false; + r.mHidden = true; + mDisabled++; + continue recipe; + } + continue; } - continue; } - } - + return mDisabled; } + @Override + public String getPluginAbbreviation() { + return "RSCM"; + } + } |