aboutsummaryrefslogtreecommitdiff
path: root/src/Java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java')
-rw-r--r--src/Java/gtPlusPlus/xmod/sc2/HANDLER_SC2.java67
-rw-r--r--src/Java/vswe/stevescarts/ModuleData/ModuleDataLoader.java32
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);
+ }
}