Closes #784
This commit is contained in:
parent
672d710231
commit
b88a99ccfb
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue