diff options
4 files changed, 90 insertions, 38 deletions
diff --git a/src/Java/gtPlusPlus/GTplusplus.java b/src/Java/gtPlusPlus/GTplusplus.java index ab4bc21bba..261ff54e2f 100644 --- a/src/Java/gtPlusPlus/GTplusplus.java +++ b/src/Java/gtPlusPlus/GTplusplus.java @@ -70,7 +70,7 @@ public class GTplusplus implements ActionListener { "Adds custom circuits to expand past the Master Tier."); CORE.configSwitches.enableOldGTcircuits = config.getBoolean("enableOldGTcircuits", "gregtech", true, "Restores circuits and their recipes from Pre-5.09.28 times."); - + // Tools CORE.configSwitches.enableSkookumChoochers = config.getBoolean("enableSkookumChoochers", "gregtech", true, "Adds Custom GT Tools, called Skookum Choochers, functioning as a hard hammer and a wrench."); @@ -147,10 +147,10 @@ public class GTplusplus implements ActionListener { // Features enableCustomAlvearyBlocks = config.getBoolean("enableCustomAlvearyBlocks", "features", false, "Enables Custom Alveary Blocks."); - + //Biomes CORE.DARKBIOME_ID = config.getInt("darkbiome_ID", "worldgen", 238, 1, 254, "The biome within the Dark Dimension."); - + config.save(); } @@ -217,12 +217,12 @@ public class GTplusplus implements ActionListener { // ~ ReflectionUtils.becauseIWorkHard(); - + //Make Burnables burnable if (!CORE.burnables.isEmpty()){ - BurnableFuelHandler fuelHandler = new BurnableFuelHandler(); - GameRegistry.registerFuelHandler(fuelHandler); - Utils.LOG_INFO("[Fuel Handler] Registering "+fuelHandler.getClass().getName()); + BurnableFuelHandler fuelHandler = new BurnableFuelHandler(); + GameRegistry.registerFuelHandler(fuelHandler); + Utils.LOG_INFO("[Fuel Handler] Registering "+fuelHandler.getClass().getName()); } // Utils.LOG_INFO("Activating GT OreDictionary Handler, this can take @@ -243,6 +243,20 @@ public class GTplusplus implements ActionListener { @EventHandler public void serverStarting(final FMLServerStartingEvent event) { event.registerServerCommand(new CommandMath()); + + if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK && CORE.configSwitches.enableOldGTcircuits){ + try { + if (ReflectionUtils.getField(GT_Recipe_Map.class, "sCircuitAssemblerRecipes") != null){ + ReflectionUtils.setDefault(GT_Recipe_Map.class, "sCircuitAssemblerRecipes", null); + if (ReflectionUtils.getField(GT_Recipe_Map.class, "sCircuitAssemblerRecipes") == null){ + Utils.LOG_INFO("[Circuit Fix 2] Removed all recipes from circuit assembler recipe map."); + } + } + } + catch (Exception e) { + Utils.LOG_INFO("Failed removing circuit assembler recipe map."); + } + } } @Mod.EventHandler diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_Old_Circuits.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_Old_Circuits.java index b6343ececf..bf5f6dfdd8 100644 --- a/src/Java/gtPlusPlus/core/recipe/RECIPES_Old_Circuits.java +++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_Old_Circuits.java @@ -26,9 +26,8 @@ public class RECIPES_Old_Circuits implements IOreRecipeRegistrator { GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Emerald, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GregtechItemList.Old_Circuit_Parts_Crystal_Chip_Elite.get(1L, new Object[0]), 256, 480); } - else if (aOreDictName.equals(OreDictNames.craftingLensBlue.toString())) { + else if (aOreDictName.equals(OreDictNames.craftingLensBlue.toString()) || aOreDictName.equals(OreDictNames.craftingLensCyan.toString()) || aOreDictName.equals(OreDictNames.craftingLensLightBlue.toString())) { GT_Values.RA.addLaserEngraverRecipe(ItemList.IC2_LapotronCrystal.getWildcard(1L, new Object[0]), GT_Utility.copyAmount(0L, new Object[]{aStack}), GregtechItemList.Old_Circuit_Parts_Crystal_Chip_Master.get(3L, new Object[0]), 256, 480); - } } @@ -60,12 +59,14 @@ public class RECIPES_Old_Circuits implements IOreRecipeRegistrator { GT_Values.RA.addAssemblerRecipe(GregtechItemList.Old_Circuit_Board_Advanced.get(1L, new Object[0]), GregtechItemList.Old_Circuit_Parts_Advanced.get(2L, new Object[0]), tMat.getMolten(144L * tMultiplier / 2L), GregtechItemList.Old_Circuit_Advanced.get(1L, new Object[0]), 32, 64); GT_Values.RA.addAssemblerRecipe(GregtechItemList.Old_Circuit_Board_Advanced.get(1L, new Object[0]), GregtechItemList.Old_Circuit_Parts_Crystal_Chip_Elite.get(1L, new Object[0]), tMat.getMolten(144L * tMultiplier / 2L), GregtechItemList.Old_Circuit_Data.get(1L, new Object[0]), 32, 64); GT_Values.RA.addAssemblerRecipe(GregtechItemList.Old_Circuit_Board_Elite.get(1L, new Object[0]), GregtechItemList.Old_Circuit_Data.get(3L, new Object[0]), tMat.getMolten(144L * tMultiplier / 1L), GregtechItemList.Old_Circuit_Elite.get(1L, new Object[0]), 32, 256); + GT_Values.RA.addAssemblerRecipe(GregtechItemList.Old_Circuit_Board_Elite.get(1L, new Object[0]), ItemList.Circuit_Parts_Crystal_Chip_Master.get(3L, new Object[0]), tMat.getMolten(144L * tMultiplier / 1L), GregtechItemList.Old_Circuit_Master.get(1L, new Object[0]), 32, 256); GT_Values.RA.addAssemblerRecipe(GregtechItemList.Old_Circuit_Board_Elite.get(1L, new Object[0]), GregtechItemList.Old_Circuit_Parts_Crystal_Chip_Master.get(3L, new Object[0]), tMat.getMolten(144L * tMultiplier / 1L), GregtechItemList.Old_Circuit_Master.get(1L, new Object[0]), 32, 256); GT_Values.RA.addAssemblerRecipe(GregtechItemList.Old_Circuit_Data.get(1L, new Object[0]), GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Plastic, 2L), tMat.getMolten(144L * tMultiplier / 2L), GregtechItemList.Old_Tool_DataStick.get(1L, new Object[0]), 128, 64); } } GT_Values.RA.addAssemblerRecipe(GregtechItemList.Old_Circuit_Elite.get(2L, new Object[0]), GregtechItemList.Old_Circuit_Parts_Crystal_Chip_Elite.get(18L, new Object[0]), GT_Values.NF, GregtechItemList.Old_Tool_DataOrb.get(1L, new Object[0]), 512, 256); + GT_Values.RA.addAssemblerRecipe(GregtechItemList.Old_Circuit_Master.get(2L, new Object[0]), ItemList.Circuit_Parts_Crystal_Chip_Master.get(18L, new Object[0]), GT_Values.NF, ItemList.Energy_LapotronicOrb.get(1L, new Object[0]), 512, 1024); GT_Values.RA.addAssemblerRecipe(GregtechItemList.Old_Circuit_Master.get(2L, new Object[0]), GregtechItemList.Old_Circuit_Parts_Crystal_Chip_Master.get(18L, new Object[0]), GT_Values.NF, ItemList.Energy_LapotronicOrb.get(1L, new Object[0]), 512, 1024); GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Silicon, 1L), GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Plastic, 1L), GregtechItemList.Old_Empty_Board_Basic.get(1L, new Object[0]), 32, 16); GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Silicon, 2L), GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Polytetrafluoroethylene, 1L), GregtechItemList.Old_Empty_Board_Elite.get(1L, new Object[0]), 32, 256); diff --git a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java index 88059acb49..ba48892112 100644 --- a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java +++ b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java @@ -97,5 +97,43 @@ public class ReflectionUtils { //System. out.println(ste[ste.length-depth].getClassName()+"#"+ste[ste.length-depth].getMethodName()); return ste[depth].getMethodName(); } + + + /** + * Allows to change the state of an immutable instance. Huh?!? + */ + public static void setFieldValue(Class clazz, String fieldName, Object newValue) throws Exception { + Field nameField = clazz.getDeclaredField(fieldName); + setValue(clazz, nameField, newValue); + } + + /** + * Allows to change the state of final statics. Huh?!? + */ + public static void setDefault(Class clazz, String fieldName, Object newValue) throws Exception { + Field staticField = clazz.getDeclaredField(fieldName); + setValue(null, staticField, newValue); + } + + /** + * + * Set the value of a field reflectively. + */ + protected static void setValue(Object owner, Field field, Object value) throws Exception { + makeModifiable(field); + field.set(owner, value); + } + + /** + * Force the field to be modifiable and accessible. + */ + protected static void makeModifiable(Field nameField) throws Exception { + nameField.setAccessible(true); + int modifiers = nameField.getModifiers(); + Field modifierField = nameField.getClass().getDeclaredField("modifiers"); + modifiers = modifiers & ~Modifier.FINAL; + modifierField.setAccessible(true); + modifierField.setInt(nameField, modifiers); + } } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java b/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java index 13f0f5c4a9..d2703d7958 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java @@ -177,7 +177,7 @@ public class MetaGeneratedGregtechItems extends Gregtech_MetaItem_X32 { GregtechItemList.Food_Baked_Raisin_Bread.set(this.addItem(tLastID = 60, "Raisin Bread", "Extra Raisins, Just for ImQ009", new Object[]{new GT_FoodStat(5, 0.5F, EnumAction.eat, null, false, true, false, new int[0]), getTcAspectStack(TC_Aspects.CORPUS, 1L), getTcAspectStack(TC_Aspects.FAMES, 1L), getTcAspectStack(TC_Aspects.IGNIS, 1L)})); //Old Circuits - if (CORE.configSwitches.enableOldGTcircuits){ + if (CORE.configSwitches.enableOldGTcircuits && CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK){ registerOldCircuits(); } @@ -284,30 +284,30 @@ public class MetaGeneratedGregtechItems extends Gregtech_MetaItem_X32 { if (isNEILoaded){ String[] CircuitToHide = { "Circuit_Board_Basic", - "Circuit_Board_Advanced", - "Circuit_Board_Elite", - "Circuit_Parts_Advanced", - "Circuit_Parts_Wiring_Basic", - "Circuit_Parts_Wiring_Advanced", - "Circuit_Parts_Wiring_Elite", - "Circuit_Parts_Crystal_Chip_Elite", - "Circuit_Parts_Crystal_Chip_Master", - "Circuit_Primitive", - "Circuit_Basic", - "Circuit_Integrated_Good", - "Circuit_Good", - "Circuit_Advanced", - "Circuit_Data", - "Circuit_Elite", - "Circuit_Master", - "Circuit_Ultimate", + "Circuit_Board_Advanced", + "Circuit_Board_Elite", + "Circuit_Parts_Advanced", + "Circuit_Parts_Wiring_Basic", + "Circuit_Parts_Wiring_Advanced", + "Circuit_Parts_Wiring_Elite", + "Circuit_Parts_Crystal_Chip_Elite", + "Circuit_Parts_Crystal_Chip_Master", + "Circuit_Primitive", + "Circuit_Basic", + "Circuit_Integrated_Good", + "Circuit_Good", + "Circuit_Advanced", + "Circuit_Data", + "Circuit_Elite", + "Circuit_Master", + "Circuit_Ultimate", "Circuit_Board_Coated", "Circuit_Board_Phenolic", "Circuit_Board_Epoxy", "Circuit_Board_Fiberglass", "Circuit_Board_Multifiberglass", "Circuit_Board_Wetware", - "Circuit_Parts_Resistor", + "Circuit_Parts_Resistor", "Circuit_Parts_ResistorSMD", "Circuit_Parts_Glass_Tube", "Circuit_Parts_Vacuum_Tube", @@ -318,7 +318,7 @@ public class MetaGeneratedGregtechItems extends Gregtech_MetaItem_X32 { "Circuit_Parts_TransistorSMD", "Circuit_Parts_Capacitor", "Circuit_Parts_CapacitorSMD", - "Circuit_Silicon_Ingot", + "Circuit_Silicon_Ingot", "Circuit_Silicon_Ingot2", "Circuit_Silicon_Ingot3", "Circuit_Silicon_Wafer", @@ -328,7 +328,7 @@ public class MetaGeneratedGregtechItems extends Gregtech_MetaItem_X32 { "Circuit_Chip_ILC", "Circuit_Wafer_Ram", "Circuit_Chip_Ram", - "Circuit_Wafer_NAND", + "Circuit_Wafer_NAND", "Circuit_Chip_NAND", "Circuit_Wafer_NOR", "Circuit_Chip_NOR", @@ -340,17 +340,17 @@ public class MetaGeneratedGregtechItems extends Gregtech_MetaItem_X32 { "Circuit_Chip_SoC2", "Circuit_Wafer_PIC", "Circuit_Chip_PIC", - "Circuit_Wafer_HPIC", + "Circuit_Wafer_HPIC", "Circuit_Chip_HPIC", "Circuit_Wafer_NanoCPU", "Circuit_Chip_NanoCPU", "Circuit_Wafer_QuantumCPU", "Circuit_Chip_QuantumCPU", - "Circuit_Chip_CrystalCPU", + "Circuit_Chip_CrystalCPU", "Circuit_Chip_CrystalSoC", "Circuit_Chip_NeuroCPU", "Circuit_Chip_Stemcell", - "Circuit_Processor", + "Circuit_Processor", "Circuit_Computer", "Circuit_Nanoprocessor", "Circuit_Nanocomputer", @@ -358,7 +358,7 @@ public class MetaGeneratedGregtechItems extends Gregtech_MetaItem_X32 { "Circuit_Quantumprocessor", "Circuit_Quantumcomputer", "Circuit_Masterquantumcomputer", - "Circuit_Quantummainframe", + "Circuit_Quantummainframe", "Circuit_Crystalprocessor", "Circuit_Crystalcomputer", "Circuit_Ultimatecrystalcomputer", @@ -369,11 +369,10 @@ public class MetaGeneratedGregtechItems extends Gregtech_MetaItem_X32 { "Circuit_Wetwaremainframe", "Circuit_Parts_RawCrystalChip" }; - + for (String component : CircuitToHide){ - API.hideItem(ItemList.valueOf(component).get(1L, new Object[0])); - } - + API.hideItem(ItemList.valueOf(component).get(1L, new Object[0])); + } } return true; |