From ea1c02249806263d37df3aa3e48ef144d8b2f1bf Mon Sep 17 00:00:00 2001 From: pahimar Date: Thu, 23 May 2013 00:00:31 -0400 Subject: [PATCH] Messy attempt at a blacklist to avoid the possibility of assigning emc values to unavailable ids --- .../com/pahimar/ee3/EquivalentExchange3.java | 1 - .../ee3/core/util/TransmutationHelper.java | 19 +++--- ee3_common/com/pahimar/ee3/emc/DynEMC.java | 59 +++++++++++++++++-- 3 files changed, 63 insertions(+), 16 deletions(-) diff --git a/ee3_common/com/pahimar/ee3/EquivalentExchange3.java b/ee3_common/com/pahimar/ee3/EquivalentExchange3.java index 4e869d22..71fb3b2b 100644 --- a/ee3_common/com/pahimar/ee3/EquivalentExchange3.java +++ b/ee3_common/com/pahimar/ee3/EquivalentExchange3.java @@ -30,7 +30,6 @@ import com.pahimar.ee3.item.crafting.RecipesAlchemicalBagDyes; import com.pahimar.ee3.lib.Reference; import com.pahimar.ee3.lib.Strings; import com.pahimar.ee3.network.PacketHandler; -import com.pahimar.ee3.recipe.RecipesTransmutationStone; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.FingerprintWarning; diff --git a/ee3_common/com/pahimar/ee3/core/util/TransmutationHelper.java b/ee3_common/com/pahimar/ee3/core/util/TransmutationHelper.java index 15b91a85..02323209 100644 --- a/ee3_common/com/pahimar/ee3/core/util/TransmutationHelper.java +++ b/ee3_common/com/pahimar/ee3/core/util/TransmutationHelper.java @@ -52,19 +52,20 @@ public class TransmutationHelper { if (currentBlock != null) { meta = currentBlock.damageDropped(meta); - } + - currentBlockStack = new ItemStack(id, 1, meta); - - if (previousBlockStack == null) { - previousBlockStack = currentBlockStack; - targetBlockStack = getNextBlock(currentBlockStack.itemID, currentBlockStack.getItemDamage()); - } - else { - if (!EquivalencyHandler.instance().areEquivalent(TransmutationHelper.previousBlockStack, currentBlockStack)) { + currentBlockStack = new ItemStack(id, 1, meta); + + if (previousBlockStack == null) { previousBlockStack = currentBlockStack; targetBlockStack = getNextBlock(currentBlockStack.itemID, currentBlockStack.getItemDamage()); } + else { + if (!EquivalencyHandler.instance().areEquivalent(TransmutationHelper.previousBlockStack, currentBlockStack)) { + previousBlockStack = currentBlockStack; + targetBlockStack = getNextBlock(currentBlockStack.itemID, currentBlockStack.getItemDamage()); + } + } } } diff --git a/ee3_common/com/pahimar/ee3/emc/DynEMC.java b/ee3_common/com/pahimar/ee3/emc/DynEMC.java index 5a614372..db492293 100644 --- a/ee3_common/com/pahimar/ee3/emc/DynEMC.java +++ b/ee3_common/com/pahimar/ee3/emc/DynEMC.java @@ -1,15 +1,29 @@ package com.pahimar.ee3.emc; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.logging.Level; +import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; + +import com.pahimar.ee3.core.util.LogHelper; +import com.pahimar.ee3.core.util.RecipeHelper; +import com.pahimar.ee3.core.util.StringUtil; public class DynEMC { private static final DynEMC dynEMC = new DynEMC(); - private static final ArrayList discoveredItemStacks = new ArrayList(); + private static final ArrayList idBlackList = new ArrayList(); + private static final ArrayList itemStackBlackList = new ArrayList(); + private static final HashMap, ItemStack> discoveredItems = new HashMap, ItemStack>(); + + private DynEMC() { @@ -19,13 +33,24 @@ public class DynEMC { return dynEMC; } + + public void populateBlackList() { + // List of ids to blacklist, more to clean up here + int[] blackints = {7,8,9,10,11,14,15,16,21,26,34,36,43,51,52,55,56,59,60,62,63,64,68,71,73,74,75,83,90,92,93,94,95,97,104,105,115,117,118,119,120,124,125,127,129,132,137,140,141,142,144,149,150,153}; + + for (int i : blackints) { + idBlackList.add(i); + } + } public void init() { + populateBlackList(); + ArrayList subItems = new ArrayList(); for (int i = 0; i < Item.itemsList.length; i++) { - if (Item.itemsList[i] != null) { + if ((Item.itemsList[i] != null) && (!idBlackList.contains(i))) { if (Item.itemsList[i].getHasSubtypes()) { subItems.clear(); @@ -33,8 +58,9 @@ public class DynEMC { for (ItemStack itemStack : subItems) { if (itemStack != null) { - if (!discoveredItemStacks.contains(itemStack)) { - discoveredItemStacks.add(itemStack); + List idMeta = Arrays.asList(itemStack.itemID, itemStack.getItemDamage()); + if (!discoveredItems.containsKey(idMeta)) { + discoveredItems.put(idMeta, itemStack); } } } @@ -42,12 +68,33 @@ public class DynEMC { else { ItemStack itemStack = new ItemStack(Item.itemsList[i]); + List idMeta = Arrays.asList(itemStack.itemID, itemStack.getItemDamage()); - if (!discoveredItemStacks.contains(itemStack)) { - discoveredItemStacks.add(itemStack); + if (!discoveredItems.containsKey(idMeta)) { + discoveredItems.put(idMeta, itemStack); } } } } + + for (ItemStack itemStack : itemStackBlackList) { + List idMeta = Arrays.asList(itemStack.itemID, itemStack.getItemDamage()); + + if (discoveredItems.containsKey(idMeta)) { + discoveredItems.remove(idMeta); + } + } + + for (ItemStack itemStack : discoveredItems.values()) { + ArrayList recipes = RecipeHelper.getReverseRecipes(itemStack); + if (recipes.size() > 0) { + for (IRecipe recipe : recipes) { + //LogHelper.log(Level.INFO, StringUtil.toString(itemStack) + " <-- " + RecipeHelper.getRecipeInputs(recipe)); + } + } + else { + LogHelper.log(Level.INFO, StringUtil.toString(itemStack)); + } + } } }