This commit is contained in:
pahimar 2015-04-10 21:58:58 -04:00
parent 672d710231
commit b88a99ccfb
3 changed files with 57 additions and 27 deletions

View file

@ -14,18 +14,21 @@ import java.util.*;
public class CachedOreDictionary
{
private static CachedOreDictionary cachedOreDictionary = null;
private ImmutableMap<Integer, String> idToNameMap;
private ImmutableMap<String, List<ItemStack>> oreNameToItemStackMap;
private ImmutableMultimap<ItemStack, String> itemStackToOreNameMap;
private CachedOreDictionary()
{
Map<Integer, String> idToOreNameMap = new TreeMap<Integer, String>();
Map<String, List<ItemStack>> nameToStackMap = new TreeMap<String, List<ItemStack>>(Comparators.stringComparator);
Multimap<ItemStack, String> stackToNameMultiMap = TreeMultimap.create(ItemHelper.idComparator, Comparators.stringComparator);
for (String oreName : OreDictionary.getOreNames())
{
List<ItemStack> oreNameItemStacks = OreDictionary.getOres(oreName);
idToOreNameMap.put(OreDictionary.getOreID(oreName), oreName);
List<ItemStack> oreNameItemStacks = OreDictionary.getOres(oreName);
nameToStackMap.put(oreName, oreNameItemStacks);
for (ItemStack itemStack : oreNameItemStacks)
@ -34,6 +37,7 @@ public class CachedOreDictionary
}
}
idToNameMap = ImmutableMap.copyOf(idToOreNameMap);
oreNameToItemStackMap = ImmutableMap.copyOf(nameToStackMap);
itemStackToOreNameMap = ImmutableMultimap.copyOf(stackToNameMultiMap);
}

View file

@ -1,12 +1,11 @@
package com.pahimar.ee3.exchange;
import com.pahimar.ee3.reference.Comparators;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.oredict.OreDictionary;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.*;
public class OreStack implements Comparable<OreStack>
{
@ -100,18 +99,42 @@ public class OreStack implements Comparable<OreStack>
{
if (objectList.size() > 0)
{
Map<String, Integer> oreNameCountMap = new TreeMap<String, Integer>(Comparators.stringComparator);
for (Object listElement : objectList)
{
if (listElement instanceof ItemStack)
{
ItemStack stack = (ItemStack) listElement;
ItemStack itemStack = (ItemStack) listElement;
if (OreDictionary.getOreIDs(stack).length > 0)
for (String oreName : CachedOreDictionary.getInstance().getOreNamesForItemStack(itemStack))
{
return new OreStack(stack);
if (oreNameCountMap.containsKey(oreName))
{
oreNameCountMap.put(oreName, oreNameCountMap.get(oreName) + 1);
}
else
{
oreNameCountMap.put(oreName, 1);
}
}
}
}
List<OreStack> candidateOreStacks = new ArrayList<OreStack>();
for (String oreName : oreNameCountMap.keySet())
{
if (oreNameCountMap.get(oreName) == objectList.size())
{
candidateOreStacks.add(new OreStack(oreName));
}
}
if (candidateOreStacks.size() == 1)
{
return candidateOreStacks.get(0);
}
return null;
}
return null;

View file

@ -15,28 +15,31 @@ public class EnergyValues
public static void addDefaultEnergyValues()
{
// OreDictionary assignment
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.cobblestone))), 1);
for (int meta = 0; meta < 16; meta++)
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("cobblestone")), 1);
String[] dyes = {"Black", "Red", "Green", "Brown", "Blue", "Purple", "Cyan", "LightGray", "Gray", "Pink", "Lime", "Yellow", "LightBlue", "Magenta", "Orange", "White"};
for (int i = 0; i < dyes.length; i++)
{
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Items.dye, 1, meta))), 8);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("dye" + dyes[i])), 8);
}
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.log))), 32);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.diamond_ore))), 8192);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.emerald_ore))), 8192);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.gold_ore))), 2048);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.iron_ore))), 256);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.lapis_ore))), 864);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.quartz_ore))), 256);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.redstone_ore))), 32);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.planks))), 8);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Items.record_11))), 2048);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.wooden_slab))), 4);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.oak_stairs))), 12);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Items.stick))), 4);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.stone))), 1);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.leaves))), 1);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.sapling))), 32);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.sandstone))), 4);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("logWood")), 32);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreDiamond")), 8192);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreEmerald")), 8192);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreGold")), 2048);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreIron")), 256);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreLapis")), 864);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreQuartz")), 256);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreRedstone")), 32);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("plankWood")), 8);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("record")), 2048);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("slabWood")), 4);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("stairWood")), 12);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("stick")), 4);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("stone")), 1);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("leaves")), 1);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("sapling")), 32);
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("sandstone")), 4);
// Fluids
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(FluidRegistry.WATER), 1);