Fixes #1060
This commit is contained in:
parent
437470f9e7
commit
c3c6724fea
1 changed files with 31 additions and 3 deletions
|
@ -24,6 +24,7 @@ import org.apache.logging.log4j.MarkerManager;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.pahimar.ee3.api.exchange.EnergyValueRegistryProxy.Phase;
|
import static com.pahimar.ee3.api.exchange.EnergyValueRegistryProxy.Phase;
|
||||||
|
|
||||||
|
@ -114,11 +115,38 @@ public class EnergyValueRegistry {
|
||||||
|
|
||||||
if (valueMap != null && !valueMap.isEmpty()) {
|
if (valueMap != null && !valueMap.isEmpty()) {
|
||||||
|
|
||||||
// First check for a direct energy value mapping to the wrapped object
|
|
||||||
/**
|
/**
|
||||||
* FIXME If the object being checked has a WILD_CARD meta value, then it will match any similar object.
|
* First check to see if the object is a WILDCARD_VALUE ItemStack, as if it is it will match any similar
|
||||||
* We must ensure that it returns the LOWEST possible value from the map
|
* ItemStack. If it is check to see how many objects it matches in the given map. If there is at least
|
||||||
|
* one similar object found, find the lowest energy value out of all the similar objects
|
||||||
*/
|
*/
|
||||||
|
if (wrappedObject instanceof ItemStack && ((ItemStack) wrappedObject).getItemDamage() == OreDictionary.WILDCARD_VALUE) {
|
||||||
|
|
||||||
|
Set<WrappedStack> equivalentStacks = valueMap.keySet().stream()
|
||||||
|
.filter(wrappedStack::equals)
|
||||||
|
.filter(wrappedStack1 -> wrappedStack1.getWrappedObject() instanceof ItemStack)
|
||||||
|
.filter(wrappedStack1 -> ((ItemStack) wrappedStack1.getWrappedObject()).getItemDamage() != OreDictionary.WILDCARD_VALUE)
|
||||||
|
.collect(Collectors.toCollection(TreeSet::new));
|
||||||
|
|
||||||
|
if (equivalentStacks.size() >= 1) {
|
||||||
|
EnergyValue lowestValue = null;
|
||||||
|
|
||||||
|
for (WrappedStack wrappedStack1 : equivalentStacks) {
|
||||||
|
EnergyValue currentValue = getEnergyValue(valueMap, wrappedStack1, strict);
|
||||||
|
|
||||||
|
if (lowestValue == null) {
|
||||||
|
lowestValue = currentValue;
|
||||||
|
}
|
||||||
|
else if (currentValue.compareTo(lowestValue) < 0) {
|
||||||
|
lowestValue = currentValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return lowestValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for an exact mapping
|
||||||
if (valueMap.containsKey(wrappedStack)) {
|
if (valueMap.containsKey(wrappedStack)) {
|
||||||
return valueMap.get(wrappedStack);
|
return valueMap.get(wrappedStack);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue