Closes #784
This commit is contained in:
parent
672d710231
commit
b88a99ccfb
|
@ -14,18 +14,21 @@ import java.util.*;
|
||||||
public class CachedOreDictionary
|
public class CachedOreDictionary
|
||||||
{
|
{
|
||||||
private static CachedOreDictionary cachedOreDictionary = null;
|
private static CachedOreDictionary cachedOreDictionary = null;
|
||||||
|
private ImmutableMap<Integer, String> idToNameMap;
|
||||||
private ImmutableMap<String, List<ItemStack>> oreNameToItemStackMap;
|
private ImmutableMap<String, List<ItemStack>> oreNameToItemStackMap;
|
||||||
private ImmutableMultimap<ItemStack, String> itemStackToOreNameMap;
|
private ImmutableMultimap<ItemStack, String> itemStackToOreNameMap;
|
||||||
|
|
||||||
private CachedOreDictionary()
|
private CachedOreDictionary()
|
||||||
{
|
{
|
||||||
|
Map<Integer, String> idToOreNameMap = new TreeMap<Integer, String>();
|
||||||
Map<String, List<ItemStack>> nameToStackMap = new TreeMap<String, List<ItemStack>>(Comparators.stringComparator);
|
Map<String, List<ItemStack>> nameToStackMap = new TreeMap<String, List<ItemStack>>(Comparators.stringComparator);
|
||||||
Multimap<ItemStack, String> stackToNameMultiMap = TreeMultimap.create(ItemHelper.idComparator, Comparators.stringComparator);
|
Multimap<ItemStack, String> stackToNameMultiMap = TreeMultimap.create(ItemHelper.idComparator, Comparators.stringComparator);
|
||||||
|
|
||||||
for (String oreName : OreDictionary.getOreNames())
|
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);
|
nameToStackMap.put(oreName, oreNameItemStacks);
|
||||||
|
|
||||||
for (ItemStack itemStack : oreNameItemStacks)
|
for (ItemStack itemStack : oreNameItemStacks)
|
||||||
|
@ -34,6 +37,7 @@ public class CachedOreDictionary
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
idToNameMap = ImmutableMap.copyOf(idToOreNameMap);
|
||||||
oreNameToItemStackMap = ImmutableMap.copyOf(nameToStackMap);
|
oreNameToItemStackMap = ImmutableMap.copyOf(nameToStackMap);
|
||||||
itemStackToOreNameMap = ImmutableMultimap.copyOf(stackToNameMultiMap);
|
itemStackToOreNameMap = ImmutableMultimap.copyOf(stackToNameMultiMap);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
package com.pahimar.ee3.exchange;
|
package com.pahimar.ee3.exchange;
|
||||||
|
|
||||||
|
import com.pahimar.ee3.reference.Comparators;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraftforge.oredict.OreDictionary;
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class OreStack implements Comparable<OreStack>
|
public class OreStack implements Comparable<OreStack>
|
||||||
{
|
{
|
||||||
|
@ -100,18 +99,42 @@ public class OreStack implements Comparable<OreStack>
|
||||||
{
|
{
|
||||||
if (objectList.size() > 0)
|
if (objectList.size() > 0)
|
||||||
{
|
{
|
||||||
|
Map<String, Integer> oreNameCountMap = new TreeMap<String, Integer>(Comparators.stringComparator);
|
||||||
for (Object listElement : objectList)
|
for (Object listElement : objectList)
|
||||||
{
|
{
|
||||||
if (listElement instanceof ItemStack)
|
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;
|
return null;
|
||||||
|
|
|
@ -15,28 +15,31 @@ public class EnergyValues
|
||||||
public static void addDefaultEnergyValues()
|
public static void addDefaultEnergyValues()
|
||||||
{
|
{
|
||||||
// OreDictionary assignment
|
// OreDictionary assignment
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.cobblestone))), 1);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("cobblestone")), 1);
|
||||||
for (int meta = 0; meta < 16; meta++)
|
|
||||||
|
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("logWood")), 32);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.emerald_ore))), 8192);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreDiamond")), 8192);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.gold_ore))), 2048);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreEmerald")), 8192);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.iron_ore))), 256);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreGold")), 2048);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.lapis_ore))), 864);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreIron")), 256);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.quartz_ore))), 256);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreLapis")), 864);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.redstone_ore))), 32);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreQuartz")), 256);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.planks))), 8);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("oreRedstone")), 32);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Items.record_11))), 2048);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("plankWood")), 8);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.wooden_slab))), 4);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("record")), 2048);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.oak_stairs))), 12);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("slabWood")), 4);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Items.stick))), 4);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("stairWood")), 12);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.stone))), 1);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("stick")), 4);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.leaves))), 1);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("stone")), 1);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.sapling))), 32);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("leaves")), 1);
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack(new ItemStack(Blocks.sandstone))), 4);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("sapling")), 32);
|
||||||
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(new OreStack("sandstone")), 4);
|
||||||
|
|
||||||
// Fluids
|
// Fluids
|
||||||
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(FluidRegistry.WATER), 1);
|
EnergyValueRegistryProxy.addPreAssignedEnergyValue(new WrappedStack(FluidRegistry.WATER), 1);
|
||||||
|
|
Loading…
Reference in a new issue