properly use the wildcard value, fixes #781

This commit is contained in:
way2muchnoise
2016-12-24 10:52:45 +01:00
parent bb13851d17
commit 40d66a83ac
2 changed files with 3 additions and 30 deletions

View File

@@ -80,21 +80,11 @@ public class CraftingPattern implements ICraftingPattern {
if (input == null) {
oreInputs.add(Collections.emptyList());
} else if (input instanceof ItemStack) {
ItemStack stripped = Comparer.stripTags(((ItemStack) input).copy());
if (stripped.getItemDamage() == OreDictionary.WILDCARD_VALUE) {
oreInputs.add(getSubItems(stripped));
} else {
oreInputs.add(Collections.singletonList(stripped));
}
oreInputs.add(Collections.singletonList(Comparer.stripTags(((ItemStack) input).copy())));
} else {
List<ItemStack> cleaned = new LinkedList<>();
for (ItemStack in : (List<ItemStack>) input) {
ItemStack stripped = Comparer.stripTags(in.copy());
if (stripped.getItemDamage() == OreDictionary.WILDCARD_VALUE) {
cleaned.addAll(getSubItems(stripped));
} else {
cleaned.add(stripped);
}
cleaned.add(Comparer.stripTags(in.copy()));
}
oreInputs.add(cleaned);
}
@@ -132,7 +122,6 @@ public class CraftingPattern implements ICraftingPattern {
s.setCount(input.getCount());
return s;
})
.flatMap(this::checkOreDictWildcard)
.collect(Collectors.toList());
// Add original stack as first, should prevent some issues
oredict.add(0, Comparer.stripTags(input.copy()));
@@ -154,22 +143,6 @@ public class CraftingPattern implements ICraftingPattern {
}
}
private Stream<ItemStack> checkOreDictWildcard(ItemStack stack) {
List<ItemStack> list = new LinkedList<>();
if (stack.getItemDamage() == OreDictionary.WILDCARD_VALUE) {
list.addAll(getSubItems(stack));
} else {
list.add(stack);
}
return list.stream();
}
private List<ItemStack> getSubItems(ItemStack stack) {
NonNullList<ItemStack> subItems = NonNullList.create();
stack.getItem().getSubItems(stack.getItem(), stack.getItem().getCreativeTab(), subItems);
return subItems.stream().map(Comparer::stripTags).collect(Collectors.toList());
}
@Override
public ICraftingPatternContainer getContainer() {
return container;

View File

@@ -33,7 +33,7 @@ public class Comparer implements IComparer {
return false;
}
if ((flags & COMPARE_DAMAGE) == COMPARE_DAMAGE) {
if ((flags & COMPARE_DAMAGE) == COMPARE_DAMAGE && left.getItemDamage() != OreDictionary.WILDCARD_VALUE && right.getItemDamage() != OreDictionary.WILDCARD_VALUE) {
if (left.getItemDamage() != right.getItemDamage()) {
return false;
}