diff options
Diffstat (limited to 'api/src')
6 files changed, 75 insertions, 10 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/config/ConfigObject.java b/api/src/main/java/me/shedaniel/rei/api/config/ConfigObject.java index 4000844cb..d7cfb2023 100644 --- a/api/src/main/java/me/shedaniel/rei/api/config/ConfigObject.java +++ b/api/src/main/java/me/shedaniel/rei/api/config/ConfigObject.java @@ -172,5 +172,7 @@ public interface ConfigObject { SearchMode getTagSearchMode(); + SearchMode getIdentifierSearchMode(); + SearchMode getModSearchMode(); } diff --git a/api/src/main/java/me/shedaniel/rei/api/ingredient/EntryStack.java b/api/src/main/java/me/shedaniel/rei/api/ingredient/EntryStack.java index 6f4b7294f..ad7857fe3 100644 --- a/api/src/main/java/me/shedaniel/rei/api/ingredient/EntryStack.java +++ b/api/src/main/java/me/shedaniel/rei/api/ingredient/EntryStack.java @@ -47,7 +47,10 @@ import net.minecraft.util.Unit; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Supplier; @@ -113,7 +116,8 @@ public interface EntryStack<T> extends TextRepresentable, Renderer { return renderer == null ? EntryRenderer.empty() : renderer.cast(); } - Optional<ResourceLocation> getIdentifier(); + @Nullable + ResourceLocation getIdentifier(); boolean isEmpty(); @@ -131,8 +135,6 @@ public interface EntryStack<T> extends TextRepresentable, Renderer { int hash(ComparisonContext context); - boolean equals(EntryStack<T> other, ComparisonContext context); - @Deprecated boolean equals(Object o); diff --git a/api/src/main/java/me/shedaniel/rei/api/ingredient/entry/type/EntryDefinition.java b/api/src/main/java/me/shedaniel/rei/api/ingredient/entry/type/EntryDefinition.java index a4ba8f2bd..8011364d5 100644 --- a/api/src/main/java/me/shedaniel/rei/api/ingredient/entry/type/EntryDefinition.java +++ b/api/src/main/java/me/shedaniel/rei/api/ingredient/entry/type/EntryDefinition.java @@ -33,7 +33,6 @@ import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; import java.util.Collection; -import java.util.Optional; public interface EntryDefinition<T> { Class<T> getValueType(); @@ -42,7 +41,7 @@ public interface EntryDefinition<T> { EntryRenderer<T> getRenderer(); - Optional<ResourceLocation> getIdentifier(EntryStack<T> entry, T value); + @Nullable ResourceLocation getIdentifier(EntryStack<T> entry, T value); boolean isEmpty(EntryStack<T> entry, T value); diff --git a/api/src/main/java/me/shedaniel/rei/api/ingredient/util/EntryStacks.java b/api/src/main/java/me/shedaniel/rei/api/ingredient/util/EntryStacks.java index b8a281ed2..80d007f6a 100644 --- a/api/src/main/java/me/shedaniel/rei/api/ingredient/util/EntryStacks.java +++ b/api/src/main/java/me/shedaniel/rei/api/ingredient/util/EntryStacks.java @@ -141,15 +141,15 @@ public final class EntryStacks { EntryType<A> leftType = left.getType(); EntryType<B> rightType = right.getType(); if (leftType == rightType) { - return left.equals((EntryStack<A>) right, context); + return left.getDefinition().equals(left.getValue(), right.<A>cast().getValue(), context); } - if (context == ComparisonContext.EXACT) return false; for (EntryTypeBridge<A, B> bridge : EntryTypeRegistry.getInstance().getBridgesFor(leftType, rightType)) { InteractionResultHolder<Stream<EntryStack<B>>> holder = bridge.bridge(left); if (holder.getResult() == InteractionResult.SUCCESS) { Iterator<EntryStack<B>> iterator = holder.getObject().iterator(); while (iterator.hasNext()) { - if (iterator.next().equals(right, context)) { + EntryStack<B> next = iterator.next(); + if (next.getDefinition().equals(next.getValue(), right.getValue(), context)) { return true; } } @@ -160,7 +160,8 @@ public final class EntryStacks { if (holder.getResult() == InteractionResult.SUCCESS) { Iterator<EntryStack<A>> iterator = holder.getObject().iterator(); while (iterator.hasNext()) { - if (iterator.next().equals(left, context)) { + EntryStack<A> next = iterator.next(); + if (next.getDefinition().equals(next.getValue(), left.getValue(), context)) { return true; } } diff --git a/api/src/main/java/me/shedaniel/rei/api/search/SearchFilter.java b/api/src/main/java/me/shedaniel/rei/api/search/SearchFilter.java new file mode 100644 index 000000000..d24241d84 --- /dev/null +++ b/api/src/main/java/me/shedaniel/rei/api/search/SearchFilter.java @@ -0,0 +1,42 @@ +package me.shedaniel.rei.api.search; + +import me.shedaniel.rei.api.ingredient.EntryStack; + +import java.util.function.Predicate; + +public interface SearchFilter extends Predicate<EntryStack<?>> { + static SearchFilter matchAll() { + return new SearchFilter() { + @Override + public String getFilter() { + return ""; + } + + @Override + public boolean test(EntryStack<?> entryStack) { + return true; + } + }; + } + + static SearchFilter matchNone() { + return new SearchFilter() { + @Override + public String getFilter() { + return ""; + } + + @Override + public boolean test(EntryStack<?> entryStack) { + return false; + } + }; + } + + /** + * Returns the original filter in {@link String}. + * + * @return the original filter + */ + String getFilter(); +} diff --git a/api/src/main/java/me/shedaniel/rei/api/search/SearchProvider.java b/api/src/main/java/me/shedaniel/rei/api/search/SearchProvider.java new file mode 100644 index 000000000..51abc5a14 --- /dev/null +++ b/api/src/main/java/me/shedaniel/rei/api/search/SearchProvider.java @@ -0,0 +1,19 @@ +package me.shedaniel.rei.api.search; + +import me.shedaniel.rei.api.plugins.PluginManager; +import me.shedaniel.rei.api.registry.Reloadable; + +public interface SearchProvider extends Reloadable { + static SearchProvider getInstance() { + return PluginManager.getInstance().get(SearchProvider.class); + } + + /** + * Creates a search filter, which respects user's config options and + * respects argument prefixes. + * + * @param searchTerm the search term of the filter + * @return the search filter + */ + SearchFilter createFilter(String searchTerm); +} |
