diff options
Diffstat (limited to 'src/Java')
6 files changed, 40 insertions, 129 deletions
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java index 62cb3f147e..627400f401 100644 --- a/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java +++ b/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java @@ -263,25 +263,31 @@ public class ItemUtils { } if (oredictName.toLowerCase().contains("vanadiumsteel")){ mTemp = oredictName.replace("VanadiumSteel", "StainlessSteel"); - } - - //Use Cache - if (mDustCache.containsKey(oredictName)) { - return getSimpleStack(mDustCache.get(oredictName), amount); - } - if (mOreDictCache.containsKey(mTemp)) { + } + //Use Cache + if (mOreDictCache.containsKey(mTemp) && mOreDictCache.get(mTemp) != null) { + Logger.INFO("[ODC] Returning mOreDictCache value."); return getCachedValue(mTemp, amount); } - - final ArrayList<ItemStack> oreDictList = OreDictionary.getOres(mTemp); - if (!oreDictList.isEmpty()){ - final ItemStack returnValue = oreDictList.get(0).copy(); - returnValue.stackSize = amount; - setCachedValue(mTemp, returnValue); - return returnValue; + else if (mDustCache.containsKey(oredictName) && mDustCache.get(mTemp) != null) { + Logger.INFO("[ODC] Returning mDustCache value."); + return getSimpleStack(mDustCache.get(oredictName), amount); + } + else { + Logger.INFO("[ODC] Setting mOreDictCache value."); + final ArrayList<ItemStack> oreDictList = OreDictionary.getOres(mTemp); + if (!oreDictList.isEmpty()){ + final ItemStack returnValue = oreDictList.get(0).copy(); + returnValue.stackSize = amount; + setCachedValue(mTemp, returnValue); + Logger.INFO("[ODC] Setting and Returning mOreDictCache value."); + return returnValue; + } + setCachedValue(oredictName, getSimpleStack(ModItems.AAA_Broken)); + Logger.INFO("[ODC] Returning AAA_Broken."); + return getSimpleStack(ModItems.AAA_Broken, amount); } - setCachedValue(oredictName, getSimpleStack(ModItems.AAA_Broken)); - return getSimpleStack(ModItems.AAA_Broken, amount); + } private static Map<String, ItemStack> mOreDictCache = new HashMap(); diff --git a/src/Java/gtPlusPlus/preloader/asm/Modify_OreDict.java b/src/Java/gtPlusPlus/preloader/asm/Modify_OreDict.java deleted file mode 100644 index b4a8bf5c00..0000000000 --- a/src/Java/gtPlusPlus/preloader/asm/Modify_OreDict.java +++ /dev/null @@ -1,93 +0,0 @@ -package gtPlusPlus.preloader.asm; - -import java.lang.reflect.Field; -import java.util.*; - -import com.google.common.collect.Lists; - -import cpw.mods.fml.common.FMLLog; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.registry.GameData; -import gtPlusPlus.core.util.reflect.ReflectionUtils; -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.oredict.OreDictionary; - -@SuppressWarnings("unchecked") -public class Modify_OreDict extends OreDictionary{ - - static Field stack; - static Field id; - - private static Map<Integer, List<Integer>> stackToId; // Calculated from 128 * 0.75 - private static List<ArrayList<ItemStack>> idToStack; //ToDo: Unqualify to List when possible {1.8} - - - static { - try { - stack = ReflectionUtils.getField(OreDictionary.class, "stackToId"); - id = ReflectionUtils.getField(OreDictionary.class, "idToStack"); - stackToId = (Map<Integer, List<Integer>>) stack.get(OreDictionary.class); - idToStack = (List<ArrayList<ItemStack>>) stack.get(OreDictionary.class); - } - catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {} - } - - //Utils.LOG_INFO("O-"+(byte) nameField.get(clazz) + " | "+newValue); - - /** - * Registers a ore item into the dictionary. - * Raises the registerOre function in all registered handlers. - * - * @param name The name of the ore - * @param id The ID of the ore - * @param ore The ore's ItemStack - */ - private static void registerOreImpl(String name, ItemStack ore) - { - if (name == null || name.isEmpty() || "Unknown".equals(name)) return; //prevent bad IDs. - if (ore == null || ore.getItem() == null) - { - FMLLog.bigWarning("Invalid registration attempt for an Ore Dictionary item with name %s has occurred. The registration has been denied to prevent crashes. The mod responsible for the registration needs to correct this.", name); - return; //prevent bad ItemStacks. - } - - int oreID = getOreID(name); - // HACK: use the registry name's ID. It is unique and it knows about substitutions. Fallback to a -1 value (what Item.getIDForItem would have returned) in the case where the registry is not aware of the item yet - // IT should be noted that -1 will fail the gate further down, if an entry already exists with value -1 for this name. This is what is broken and being warned about. - // APPARENTLY it's quite common to do this. OreDictionary should be considered alongside Recipes - you can't make them properly until you've registered with the game. - String registryName = ore.getItem().delegate.name(); - int hash; - if (registryName == null) - { - FMLLog.bigWarning("A broken ore dictionary registration with name %s has occurred. It adds an item (type: %s) which is currently unknown to the game registry. This dictionary item can only support a single value when" - + " registered with ores like this, and NO I am not going to turn this spam off. Just register your ore dictionary entries after the GameRegistry.\n" - + "TO USERS: YES this is a BUG in the mod "+Loader.instance().activeModContainer().getName()+" report it to them!", name, ore.getItem().getClass()); - hash = -1; - } - else - { - hash = GameData.getItemRegistry().getId(registryName); - } - if (ore.getItemDamage() != WILDCARD_VALUE) - { - hash |= ((ore.getItemDamage() + 1) << 16); // +1 so 0 is significant - } - - //Add things to the baked version, and prevent duplicates - List<Integer> ids = stackToId.get(hash); - if (ids != null && ids.contains(oreID)) return; - if (ids == null) - { - ids = Lists.newArrayList(); - stackToId.put(hash, ids); - } - ids.add(oreID); - - //Add to the unbaked version - ore = ore.copy(); - idToStack.get(oreID).add(ore); - MinecraftForge.EVENT_BUS.post(new OreRegisterEvent(name, ore)); - } - -} diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java index 535d1f778b..4b7ac94884 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java @@ -15,7 +15,7 @@ import net.minecraftforge.common.config.Configuration; public class Preloader_ClassTransformer { - public boolean getConfig(){ + public static boolean getConfig(){ final Configuration config = new Configuration( new File(Utils.getMcDir(), "config/GTplusplus/GTplusplus.cfg")); if (config != null){ config.load(); diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java index 465d845c63..1763be7330 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java @@ -29,7 +29,6 @@ import net.minecraft.block.BlockContainer; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.init.Blocks; -import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java index 3f65e5d102..6b10a056b8 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java @@ -4,10 +4,7 @@ import org.apache.logging.log4j.Level; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassWriter; -import cpw.mods.fml.common.Loader; import cpw.mods.fml.relauncher.FMLRelaunchLog; -import gtPlusPlus.core.lib.LoadedMods; -import gtPlusPlus.preloader.CORE_Preloader; import gtPlusPlus.preloader.asm.transformers.Preloader_ClassTransformer.OreDictionaryVisitor; import gtPlusPlus.preloader.asm.transformers.Preloader_ClassTransformer2.GT_MetaTile_Visitor; import net.minecraft.launchwrapper.IClassTransformer; @@ -17,16 +14,15 @@ public class Preloader_Transformer_Handler implements IClassTransformer { private final boolean mEnabled = false; public byte[] transform(String name, String transformedName, byte[] basicClass) { - - if (CORE_Preloader.enableOldGTcircuits || Loader.isModLoaded("Mekanism")){ - if(transformedName.equals("net.minecraftforge.oredict.OreDictionary")) { - FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Transforming %s", transformedName); - ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES); - new ClassReader(basicClass).accept(new OreDictionaryVisitor(classWriter), 0); - return classWriter.toByteArray(); - } - } - + + + if(transformedName.equals("net.minecraftforge.oredict.OreDictionary")) { + FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Transforming %s", transformedName); + ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES); + new ClassReader(basicClass).accept(new OreDictionaryVisitor(classWriter), 0); + return classWriter.toByteArray(); + } + if (mEnabled) { if(transformedName.equals("gregtech.api.metatileentity.BaseMetaTileEntity")) { FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Transforming %s", transformedName); diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechConduits.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechConduits.java index 64405a0607..0ab5cb477c 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechConduits.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechConduits.java @@ -6,7 +6,6 @@ import static gtPlusPlus.core.lib.LoadedMods.Gregtech; import java.util.ArrayList; import gregtech.api.enums.*; -import gregtech.api.interfaces.ITexture; import gregtech.api.metatileentity.implementations.GT_MetaPipeEntity_Fluid; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Utility; @@ -20,7 +19,6 @@ import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.minecraft.RecipeUtils; -import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes; import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials; import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.*; import net.minecraft.item.ItemStack; @@ -276,8 +274,8 @@ public class GregtechConduits { Logger.INFO("Generating "+output+" pipes & respective recipes."); - ItemStack pipeIngot = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("ingot"+output, 1); - ItemStack pipePlate = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("plate"+output, 1); + ItemStack pipeIngot = ItemUtils.getItemStackOfAmountFromOreDict("ingot"+output, 1); + ItemStack pipePlate = ItemUtils.getItemStackOfAmountFromOreDict("plate"+output, 1); if (pipeIngot == null){ if (pipePlate != null){ @@ -349,6 +347,7 @@ public class GregtechConduits { 4*20, eut); if ((eut < 512) && !output.equals("Void")){ + try { final ItemStack pipePlateDouble = ItemUtils.getItemStackOfAmountFromOreDict("plateDouble"+output, 1).copy(); if (pipePlateDouble != null) { RecipeUtils.recipeBuilder( @@ -359,6 +358,10 @@ public class GregtechConduits { } else { Logger.INFO("Failed to add a recipe for "+materialName+" Huge pipes. Double plates probably do not exist."); } + } + catch (Throwable t) { + t.printStackTrace(); + } } @@ -384,7 +387,7 @@ public class GregtechConduits { String tName = aName.toString(); if (GT_Utility.isStringInvalid(tName)) return false; - ArrayList tList = GT_OreDictUnificator.getOres(tName); + ArrayList<ItemStack> tList = GT_OreDictUnificator.getOres(tName); for (int i = 0; i < tList.size(); ++i) if (GT_Utility.areStacksEqual((ItemStack) tList.get(i), aStack, true)) return false; |