diff options
Diffstat (limited to 'src/Java/gtPlusPlus')
5 files changed, 181 insertions, 4 deletions
diff --git a/src/Java/gtPlusPlus/GTplusplus.java b/src/Java/gtPlusPlus/GTplusplus.java index 4e693355dd..7680d504de 100644 --- a/src/Java/gtPlusPlus/GTplusplus.java +++ b/src/Java/gtPlusPlus/GTplusplus.java @@ -16,7 +16,6 @@ import org.apache.commons.lang3.reflect.FieldUtils; import cpw.mods.fml.common.*; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.*; -import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.enums.GT_Values; @@ -26,19 +25,16 @@ import gregtech.api.util.GT_Recipe.GT_Recipe_Map; import gregtech.api.util.Recipe_GT.Gregtech_Recipe_Map; import gtPlusPlus.core.commands.CommandMath; import gtPlusPlus.core.common.CommonProxy; -import gtPlusPlus.core.handler.BurnableFuelHandler; import gtPlusPlus.core.handler.Recipes.RegistrationHandler; import gtPlusPlus.core.handler.events.LoginEventHandler; import gtPlusPlus.core.item.general.RF2EU_Battery; import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.recipe.RECIPES_Old_Circuits; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.reflect.ReflectionUtils; import gtPlusPlus.xmod.gregtech.common.Meta_GT_Proxy; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtTools; -import gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic.GT_MetaTileEntity_WorldAccelerator; import net.minecraft.launchwrapper.Launch; import net.minecraftforge.common.config.Configuration; diff --git a/src/Java/gtPlusPlus/core/util/reflect/OreDictUtils.java b/src/Java/gtPlusPlus/core/util/reflect/OreDictUtils.java new file mode 100644 index 0000000000..6d34733545 --- /dev/null +++ b/src/Java/gtPlusPlus/core/util/reflect/OreDictUtils.java @@ -0,0 +1,7 @@ +package gtPlusPlus.core.util.reflect; + +public class OreDictUtils { + + + +} diff --git a/src/Java/gtPlusPlus/preloader/CORE_Preloader.java b/src/Java/gtPlusPlus/preloader/CORE_Preloader.java new file mode 100644 index 0000000000..562f7d67de --- /dev/null +++ b/src/Java/gtPlusPlus/preloader/CORE_Preloader.java @@ -0,0 +1,8 @@ +package gtPlusPlus.preloader; + +public class CORE_Preloader { + public static final String NAME = "GT++ Preloader"; + public static final String MODID = "GT++_Preloader"; + public static final String VERSION = "0.1-Alpha"; + public static boolean enableOldGTcircuits = false; +} diff --git a/src/Java/gtPlusPlus/preloader/GTplusplus_Preloader.java b/src/Java/gtPlusPlus/preloader/GTplusplus_Preloader.java new file mode 100644 index 0000000000..737038c84b --- /dev/null +++ b/src/Java/gtPlusPlus/preloader/GTplusplus_Preloader.java @@ -0,0 +1,55 @@ +package gtPlusPlus.preloader; + +import static gtPlusPlus.preloader.CORE_Preloader.*; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; + +import cpw.mods.fml.common.Mod; +import cpw.mods.fml.common.Mod.EventHandler; +import cpw.mods.fml.common.event.*; +import gtPlusPlus.core.util.Utils; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.config.Configuration; + +@Mod(modid = MODID, name = NAME, version = VERSION, dependencies = "required-before:gregtech;") +public class GTplusplus_Preloader implements ActionListener { + + @EventHandler + public void load(final FMLInitializationEvent e) { + Utils.LOG_INFO("Begin resource allocation for " + MODID + " V" + VERSION); + } + + // Pre-Init + @Mod.EventHandler + public void preInit(final FMLPreInitializationEvent event) { + Utils.LOG_INFO("Loading " + MODID + " V" + VERSION); + // Handle GT++ Config + handleConfigFile(event); + if (CORE_Preloader.enableOldGTcircuits) { + MinecraftForge.EVENT_BUS.register(new Preloader_GT_OreDict()); + } + } + + @EventHandler + public static void postInit(final FMLPostInitializationEvent e) { + Utils.LOG_INFO("Finished loading GT++ Pre-Loader."); + } + + @Override + public void actionPerformed(ActionEvent arg0) { + // TODO Auto-generated method stub + } + + public static void handleConfigFile(final FMLPreInitializationEvent event) { + final Configuration config = new Configuration( + new File(event.getModConfigurationDirectory(), "GTplusplus/GTplusplus.cfg")); + config.load(); + + // Circuits + CORE_Preloader.enableOldGTcircuits = config.getBoolean("enableOldGTcircuits", "gregtech", false, + "Restores circuits and their recipes from Pre-5.09.28 times."); + } + +} diff --git a/src/Java/gtPlusPlus/preloader/Preloader_GT_OreDict.java b/src/Java/gtPlusPlus/preloader/Preloader_GT_OreDict.java new file mode 100644 index 0000000000..b81f7a2ef4 --- /dev/null +++ b/src/Java/gtPlusPlus/preloader/Preloader_GT_OreDict.java @@ -0,0 +1,111 @@ +package gtPlusPlus.preloader; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import gregtech.common.items.GT_MetaGenerated_Item_01; +import gtPlusPlus.core.item.ModItems; +import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.item.ItemUtils; +import gtPlusPlus.xmod.gregtech.common.Meta_GT_Proxy; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary.OreRegisterEvent; + +public class Preloader_GT_OreDict { + @SubscribeEvent + public void onItemRegisteredToOreDictionary(final OreRegisterEvent event) throws Throwable { + String name = event.Name; + ItemStack ore = event.Ore; + // Check Item is Valid + if (ore != null && (name != null && !name.equals(""))) { + // Check Item has a Valid MODID + String MODID = ""; + + try { + MODID = ItemUtils.getModId(ore); + } + catch (NullPointerException n) { + Utils.LOG_INFO("[Bug] Found Item with Bad MODID - " + ore.getDisplayName() + + " | If you recognise this item, please inform the developer."); + } + + if (MODID != null) { + // Check Item has a Valid MODID + if (!MODID.equals("")) { + // Check Item is from Gregtech + if (MODID.equals("gregtech")) { + //Utils.LOG_INFO("Found GT ITEM - " + ore.getDisplayName()); + // Circuit Removal + if (Meta_GT_Proxy.areWeUsingGregtech5uExperimental() && CORE_Preloader.enableOldGTcircuits) { + if (removeCircuit(ore)) { + Utils.LOG_INFO("[Old Feature - Circuits] Preventing " + ore.getDisplayName() + + " from registering itself with oredict tag " + name + "."); + //Do Magic + if (event.isCancelable()){ + event.setCanceled(true); + } + else { + try { + ore = ItemUtils.getSimpleStack(ModItems.AAA_Broken); + name = "null"; + //event.setCanceled(true); + throw new OreDictCancelledException("[Old Feature - Circuits] Circuit OreDict event cancelled."); + } + catch(OreDictCancelledException | UnsupportedOperationException | IllegalArgumentException o){ + Utils.LOG_INFO("[Old Feature - Circuits] Circuit OreDict event cancelled."); + } + finally{ + + } + } + } + } + } + } + } + } + } + + private boolean removeCircuit(ItemStack circuit) { + int damageValue = circuit.getItemDamage() - 32000; + if (circuit.getItem() instanceof GT_MetaGenerated_Item_01) { // 700-720 + if (damageValue >= 700 && damageValue <= 720) { + return true; + } + } + else { + try { + if (Class.forName("gregtech.common.items.GT_MetaGenerated_Item_03") != null) { // 6/11/12/14/16/20/30-57/69-73/79-96 + Class MetaItem03 = Class.forName("gregtech.common.items.GT_MetaGenerated_Item_03"); + if (isInstanceOf(MetaItem03, circuit.getItem())) { + if (damageValue == 6 || damageValue == 11 || damageValue == 12 || damageValue == 14 + || damageValue == 16 || damageValue == 20) { + return true; + } + else if (damageValue >= 30 && damageValue <= 57) { + return true; + } + else if (damageValue >= 69 && damageValue <= 73) { + return true; + } + else if (damageValue >= 79 && damageValue <= 96) { + return true; + } + } + } + } + catch (ClassNotFoundException e) { + } + } + return false; + } + + // Simplification of Life. + private boolean isInstanceOf(Class clazz, Object obj) { + return clazz.isInstance(obj); + } + + class OreDictCancelledException extends Exception { + public OreDictCancelledException(String msg){ + super(msg); + } + } +} |