aboutsummaryrefslogtreecommitdiff
path: root/api/src/main/java/me
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/main/java/me')
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/config/ConfigObject.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/ingredient/EntryStack.java10
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/ingredient/entry/type/EntryDefinition.java3
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/ingredient/util/EntryStacks.java9
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/search/SearchFilter.java42
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/search/SearchProvider.java19
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);
+}