bypass unnecessary fuzzy checks if we're ignoring durability anyway

This commit is contained in:
NotMyWing
2024-05-31 18:10:37 +11:00
parent e3b8228608
commit a03d6f4803
@@ -38,7 +38,6 @@ import java.util.Map;
* {@link #findFuzzy(IAEItemStack, FuzzyMode)}. * {@link #findFuzzy(IAEItemStack, FuzzyMode)}.
*/ */
class FuzzyItemVariantList extends ItemVariantList { class FuzzyItemVariantList extends ItemVariantList {
static final SharedStackComparator COMPARATOR = new SharedStackComparator(); static final SharedStackComparator COMPARATOR = new SharedStackComparator();
// NOTE: We only use Object as they key here so we can pass our special DamageBounds to the subMap method. // NOTE: We only use Object as they key here so we can pass our special DamageBounds to the subMap method.
@@ -47,6 +46,10 @@ class FuzzyItemVariantList extends ItemVariantList {
@Override @Override
public Collection<IAEItemStack> findFuzzy(final IAEItemStack filter, final FuzzyMode fuzzy) { public Collection<IAEItemStack> findFuzzy(final IAEItemStack filter, final FuzzyMode fuzzy) {
if (fuzzy == FuzzyMode.IGNORE_ALL) {
return this.records.values();
}
ItemStack itemStack = filter.getDefinition(); ItemStack itemStack = filter.getDefinition();
ItemDamageBound lowerBound = makeLowerBound(itemStack, fuzzy); ItemDamageBound lowerBound = makeLowerBound(itemStack, fuzzy);
@@ -161,14 +164,8 @@ class FuzzyItemVariantList extends ItemVariantList {
damage = stack.getItemDamage(); damage = stack.getItemDamage();
} }
if (fuzzy == FuzzyMode.IGNORE_ALL) { final int breakpoint = fuzzy.calculateBreakPoint(maxDamage);
if (maxDamage != 0) { damage = damage <= breakpoint ? breakpoint : maxDamage;
damage = maxDamage;
}
} else {
final int breakpoint = fuzzy.calculateBreakPoint(maxDamage);
damage = damage <= breakpoint ? breakpoint : maxDamage;
}
return new ItemDamageBound(damage); return new ItemDamageBound(damage);
} }
@@ -181,26 +178,19 @@ class FuzzyItemVariantList extends ItemVariantList {
Preconditions.checkState(stack.getItem().isDamageable() || (Platform.isGTDamageableItem(stack.getItem())), "Item#isDamageable() has to be true"); Preconditions.checkState(stack.getItem().isDamageable() || (Platform.isGTDamageableItem(stack.getItem())), "Item#isDamageable() has to be true");
int damage; int damage;
if (fuzzy == FuzzyMode.IGNORE_ALL) { int maxDamage;
damage = MIN_DAMAGE_VALUE; if (Platform.isIC2DamageableItem(stack.getItem())) {
maxDamage = ((ICustomDamageItem) stack.getItem()).getMaxCustomDamage(stack);
damage = ((ICustomDamageItem) stack.getItem()).getCustomDamage(stack);
} else if (Platform.isGTDamageableItem(stack.getItem())) {
maxDamage = ToolClass.getGTMaxDamage(stack);
damage = ToolClass.getGTitemDamage(stack);
} else { } else {
int maxDamage; maxDamage = stack.getMaxDamage();
if (Platform.isIC2DamageableItem(stack.getItem())) { damage = stack.getItemDamage();
maxDamage = ((ICustomDamageItem) stack.getItem()).getMaxCustomDamage(stack);
damage = ((ICustomDamageItem) stack.getItem()).getCustomDamage(stack);
} else if (Platform.isGTDamageableItem(stack.getItem())) {
maxDamage = ToolClass.getGTMaxDamage(stack);
damage = ToolClass.getGTitemDamage(stack);
} else {
maxDamage = stack.getMaxDamage();
damage = stack.getItemDamage();
}
final int breakpoint = fuzzy.calculateBreakPoint(maxDamage);
damage = damage <= breakpoint ? MIN_DAMAGE_VALUE : breakpoint;
} }
return new ItemDamageBound(damage); final int breakpoint = fuzzy.calculateBreakPoint(maxDamage);
return new ItemDamageBound(damage <= breakpoint ? MIN_DAMAGE_VALUE : breakpoint);
} }
} }