aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/xmod/sc2
diff options
context:
space:
mode:
authorJordan Byrne <draknyte1@hotmail.com>2018-04-01 05:44:06 +1000
committerJordan Byrne <draknyte1@hotmail.com>2018-04-01 05:44:06 +1000
commit050e6401ce42f9b6a42d9ea385c88237890bac8a (patch)
tree1b55e86024762766eaaaf6e35d540e4a4dba5dbd /src/Java/gtPlusPlus/xmod/sc2
parent7313674d1ef467cbf66332ae0c00a9e8aadd2749 (diff)
downloadGT5-Unofficial-050e6401ce42f9b6a42d9ea385c88237890bac8a.tar.gz
GT5-Unofficial-050e6401ce42f9b6a42d9ea385c88237890bac8a.tar.bz2
GT5-Unofficial-050e6401ce42f9b6a42d9ea385c88237890bac8a.zip
+ More work to the Exotic Farmer Module for SC2.
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/sc2')
-rw-r--r--src/Java/gtPlusPlus/xmod/sc2/HANDLER_SC2.java67
1 files changed, 57 insertions, 10 deletions
diff --git a/src/Java/gtPlusPlus/xmod/sc2/HANDLER_SC2.java b/src/Java/gtPlusPlus/xmod/sc2/HANDLER_SC2.java
index 05e87a5990..b0c8d495d0 100644
--- a/src/Java/gtPlusPlus/xmod/sc2/HANDLER_SC2.java
+++ b/src/Java/gtPlusPlus/xmod/sc2/HANDLER_SC2.java
@@ -1,5 +1,6 @@
package gtPlusPlus.xmod.sc2;
+import java.lang.reflect.Field;
import java.util.HashMap;
import cpw.mods.fml.common.registry.GameRegistry;
@@ -7,43 +8,89 @@ import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
+import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.lib.LoadedMods;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.xmod.sc2.items.ItemCartModuleEx;
import vswe.stevescarts.Items.ItemCartModule;
+import vswe.stevescarts.Items.ModItems;
import vswe.stevescarts.ModuleData.ModuleData;
import vswe.stevescarts.ModuleData.ModuleDataLoader;
public class HANDLER_SC2 {
+ private static final String MODITEMS = "vswe.stevescarts.Items.ModItems.class";
+ private static Class MODITEMSCLASS;
public static ItemCartModule modules;
- public static HashMap<Byte, Boolean> validModules;
-
+
+ @SuppressWarnings("unchecked")
public synchronized static void preInit(){
- if (LoadedMods.StevesCarts){
+ if (LoadedMods.StevesCarts){
+
+ HashMap<Byte, Boolean> validModulesOld = null;
+ HashMap<Byte, Boolean> validModulesNew = new HashMap<Byte, Boolean>();
+ try {
+ MODITEMSCLASS = Class.forName(MODITEMS);
+ if (MODITEMSCLASS == null) {
+ return;
+ }
+ Field validModulesField = ReflectionUtils.getField(MODITEMSCLASS, "validModules");
+ if (validModulesField != null) {
+ validModulesOld = (HashMap<Byte, Boolean>) validModulesField.get(null);
+ }
+ }
+ catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException | ClassNotFoundException e) {
+ e.printStackTrace();
+ return;
+ }
+
+ if (validModulesOld == null) {
+ return;
+ }
+ else {
+ validModulesNew.putAll(validModulesOld);
+ }
+
+ if (validModulesNew == null || validModulesNew.isEmpty()) {
+ return;
+ }
+
modules = new ItemCartModuleEx();
GameRegistry.registerItem((Item) modules, "CartModule++");
ModuleDataLoader.load();
- for (final ModuleData module : ModuleDataLoader.getList().values()) {
+ for (final ModuleData module : ModuleDataLoader.moduleListCustom.values()) {
if (!module.getIsLocked()) {
- validModules.put(module.getID(), true);
+ Logger.REFLECTION("Mapping Custom SC2 Module. Using ID: "+module.getID());
+ validModulesNew.put(module.getID(), true);
}
}
- for (final ModuleData module : ModuleDataLoader.getList().values()) {
+ for (final ModuleData module : ModuleDataLoader.moduleListCustom.values()) {
final ItemStack submodule = new ItemStack((Item) modules, 1, (int) module.getID());
- GameRegistry.registerCustomItemStack(submodule.getUnlocalizedName(), submodule);
- }
+ if (submodule != null) {
+ Logger.REFLECTION("Registering Custom SC2 Module. Using ID: "+module.getID());
+ GameRegistry.registerCustomItemStack(submodule.getUnlocalizedName(), submodule);
+ }
+ }
+
+ try {
+ Logger.REFLECTION("Setting 'validModules' field in "+MODITEMS+". Old Map was "+validModulesOld.size()+" objects, New map is "+validModulesNew.size()+" objects.");
+ ReflectionUtils.setFieldValue(MODITEMSCLASS, "validModules", validModulesNew);
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
}
}
public static void init(){
if (LoadedMods.StevesCarts){
-
+ ModuleDataLoader.load2();
}
}
public static void postInit(){
if (LoadedMods.StevesCarts){
-
+
}
}