diff options
Diffstat (limited to 'src/Java')
-rw-r--r-- | src/Java/gtPlusPlus/xmod/sc2/HANDLER_SC2.java | 67 | ||||
-rw-r--r-- | src/Java/vswe/stevescarts/ModuleData/ModuleDataLoader.java | 32 |
2 files changed, 83 insertions, 16 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){ - + } } diff --git a/src/Java/vswe/stevescarts/ModuleData/ModuleDataLoader.java b/src/Java/vswe/stevescarts/ModuleData/ModuleDataLoader.java index 88ba6f062b..d2cfa52209 100644 --- a/src/Java/vswe/stevescarts/ModuleData/ModuleDataLoader.java +++ b/src/Java/vswe/stevescarts/ModuleData/ModuleDataLoader.java @@ -2,7 +2,14 @@ package vswe.stevescarts.ModuleData; import java.util.HashMap; +import net.minecraft.init.Items; + +import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.xmod.sc2.modules.workers.tools.ModuleExoticFarmerUpgraded; +import vswe.stevescarts.Helpers.ComponentTypes; +import vswe.stevescarts.Helpers.ResourceHelper; +import vswe.stevescarts.Models.Cart.ModelCartbase; +import vswe.stevescarts.Models.Cart.ModelFarmer; import vswe.stevescarts.ModuleData.ModuleData; import vswe.stevescarts.ModuleData.ModuleData.SIDE; import vswe.stevescarts.ModuleData.ModuleDataGroup; @@ -11,21 +18,34 @@ import vswe.stevescarts.Modules.ModuleBase; public class ModuleDataLoader { - private static HashMap<Byte, ModuleData> moduleListEx; + static int ID_ExoticFarmer = 0; + public static HashMap<Byte, ModuleData> moduleListCustom; - public static HashMap<Byte, ModuleData> getList() { - return moduleListEx; + public synchronized static HashMap<Byte, ModuleData> getList() { + return ModuleData.getList(); } public static void load() { - HashMap<Byte, ModuleData> u = ModuleData.getList(); + HashMap<Byte, ModuleData> u = getList(); if (u.size() < Byte.MAX_VALUE) { int mNextFreeID = u.size()+1; + ID_ExoticFarmer= 105; final ModuleDataGroup farmerGroup = new ModuleDataGroup(vswe.stevescarts.Helpers.Localization.MODULE_INFO.FARMER_GROUP); final ModuleData farmerExotic = new ModuleDataTool(mNextFreeID, "Exotic Farmer", (Class<? extends ModuleBase>) ModuleExoticFarmerUpgraded.class, 75, true) - .addSide(SIDE.FRONT); - farmerGroup.add(farmerExotic); + .addSide(SIDE.FRONT).addRecipe(new Object[][]{ + {ComponentTypes.GALGADORIAN_METAL.getItemStack(), + ComponentTypes.GALGADORIAN_METAL.getItemStack(), + ComponentTypes.ENHANCED_GALGADORIAN_METAL.getItemStack()}, + {null, ComponentTypes.HUGE_DYNAMIC_PANE.getItemStack(), null}, + {ComponentTypes.ADVANCED_PCB.getItemStack(), ItemUtils.getItemStackOfAmountFromOreDict("blockNaquadah", 1), + ComponentTypes.GRAPHICAL_INTERFACE.getItemStack()}}); + farmerGroup.add(farmerExotic); + moduleListCustom.put((byte) ID_ExoticFarmer, farmerExotic); } } + + public static void load2() { + getList().get((byte) ID_ExoticFarmer).addModel("Farmer", (ModelCartbase) new ModelFarmer(ResourceHelper.getResource("/models/farmerModelGalgadorian.png"))).setModelMult(0.75f); + } } |