aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--src/Java/gtPlusPlus/GTplusplus.java3
-rw-r--r--src/Java/gtPlusPlus/api/interfaces/IPlugin.java19
-rw-r--r--src/Java/gtPlusPlus/api/plugin/Sample_Plugin.java5
-rw-r--r--src/Java/gtPlusPlus/core/config/ConfigHandler.java4
-rw-r--r--src/Java/gtPlusPlus/core/lib/CORE.java1
-rw-r--r--src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java24
-rw-r--r--src/Java/gtPlusPlus/plugin/fishing/Core_Fishing.java5
-rw-r--r--src/Java/gtPlusPlus/plugin/manager/Core_Manager.java20
-rw-r--r--src/Java/gtPlusPlus/plugin/sulfurchem/Core_SulfuricChemistry.java166
10 files changed, 196 insertions, 52 deletions
diff --git a/.gitignore b/.gitignore
index a593c3505c..72a1bfe2e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -117,3 +117,4 @@ mods/
resourcepacks/
saves/
VillageWiper/
+assets
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";
+ }
+
}