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) { if (input == null) {
oreInputs.add(Collections.emptyList()); oreInputs.add(Collections.emptyList());
} else if (input instanceof ItemStack) { } else if (input instanceof ItemStack) {
ItemStack stripped = Comparer.stripTags(((ItemStack) input).copy()); oreInputs.add(Collections.singletonList(Comparer.stripTags(((ItemStack) input).copy())));
if (stripped.getItemDamage() == OreDictionary.WILDCARD_VALUE) {
oreInputs.add(getSubItems(stripped));
} else {
oreInputs.add(Collections.singletonList(stripped));
}
} else { } else {
List<ItemStack> cleaned = new LinkedList<>(); List<ItemStack> cleaned = new LinkedList<>();
for (ItemStack in : (List<ItemStack>) input) { for (ItemStack in : (List<ItemStack>) input) {
ItemStack stripped = Comparer.stripTags(in.copy()); cleaned.add(Comparer.stripTags(in.copy()));
if (stripped.getItemDamage() == OreDictionary.WILDCARD_VALUE) {
cleaned.addAll(getSubItems(stripped));
} else {
cleaned.add(stripped);
}
} }
oreInputs.add(cleaned); oreInputs.add(cleaned);
} }
@@ -132,7 +122,6 @@ public class CraftingPattern implements ICraftingPattern {
s.setCount(input.getCount()); s.setCount(input.getCount());
return s; return s;
}) })
.flatMap(this::checkOreDictWildcard)
.collect(Collectors.toList()); .collect(Collectors.toList());
// Add original stack as first, should prevent some issues // Add original stack as first, should prevent some issues
oredict.add(0, Comparer.stripTags(input.copy())); 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 @Override
public ICraftingPatternContainer getContainer() { public ICraftingPatternContainer getContainer() {
return container; return container;

View File

@@ -33,7 +33,7 @@ public class Comparer implements IComparer {
return false; 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()) { if (left.getItemDamage() != right.getItemDamage()) {
return false; return false;
} }