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/client/entry/filtering/FilteringContext.java25
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/FilteringRule.java22
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/base/BasicFilteringRule.java12
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/registry/entry/EntryRegistry.java5
4 files changed, 64 insertions, 0 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/FilteringContext.java b/api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/FilteringContext.java
index d46709af9..8cf2179e0 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/FilteringContext.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/FilteringContext.java
@@ -23,6 +23,7 @@
package me.shedaniel.rei.api.client.entry.filtering;
+import it.unimi.dsi.fastutil.longs.LongCollection;
import me.shedaniel.rei.api.common.entry.EntryStack;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@@ -53,4 +54,28 @@ public interface FilteringContext {
* @return the list of stacks that are previously marked as hidden from other filtering rules.
*/
Collection<EntryStack<?>> getHiddenStacks();
+
+ /**
+ * Returns the list of hashes that are previously marked as <b>shown</b> from other filtering rules.
+ *
+ * @return the list of hashes that are previously marked as shown from other filtering rules.
+ */
+ @ApiStatus.Experimental
+ LongCollection getShownExactHashes();
+
+ /**
+ * Returns the list of hashes that are previously marked as <b>hidden</b> from other filtering rules.
+ *
+ * @return the list of hashes that are previously marked as hidden from other filtering rules.
+ */
+ @ApiStatus.Experimental
+ LongCollection getUnsetExactHashes();
+
+ /**
+ * Returns the list of hashes that are previously marked as <b>hidden</b> from other filtering rules.
+ *
+ * @return the list of hashes that are previously marked as hidden from other filtering rules.
+ */
+ @ApiStatus.Experimental
+ LongCollection getHiddenExactHashes();
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/FilteringRule.java b/api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/FilteringRule.java
index 1f3cb5b50..a133de686 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/FilteringRule.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/FilteringRule.java
@@ -23,9 +23,15 @@
package me.shedaniel.rei.api.client.entry.filtering;
+import it.unimi.dsi.fastutil.longs.LongCollection;
+import me.shedaniel.rei.api.client.registry.entry.EntryRegistry;
+import me.shedaniel.rei.api.common.entry.EntryStack;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Collection;
/**
* A filtering rule type that is used to filter the entries on the entry panel,
@@ -63,4 +69,20 @@ public interface FilteringRule<Cache> {
* @return the result of the processing
*/
FilteringResult processFilteredStacks(FilteringContext context, FilteringResultFactory resultFactory, Cache cache, boolean async);
+
+ /**
+ * Returns whether the entry registry is in its reloading phase.
+ * Registration after the reloading phase will be slow and may not be reflected immediately.
+ *
+ * @return whether the entry registry is in its reloading phase
+ */
+ @ApiStatus.NonExtendable
+ default boolean isReloading() {
+ return EntryRegistry.getInstance().isReloading();
+ }
+
+ @ApiStatus.NonExtendable
+ default void markDirty(Collection<EntryStack<?>> stacks, @Nullable LongCollection hashes) {
+ EntryRegistry.getInstance().markFilteringRuleDirty(this, stacks, hashes);
+ }
} \ No newline at end of file
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/base/BasicFilteringRule.java b/api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/base/BasicFilteringRule.java
index 26b2986c2..4800a430e 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/base/BasicFilteringRule.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/entry/filtering/base/BasicFilteringRule.java
@@ -26,11 +26,15 @@ package me.shedaniel.rei.api.client.entry.filtering.base;
import me.shedaniel.rei.api.client.entry.filtering.FilteringResult;
import me.shedaniel.rei.api.client.entry.filtering.FilteringRule;
import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
+import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.registry.Reloadable;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import org.jetbrains.annotations.ApiStatus;
+import java.util.Collection;
+import java.util.function.Supplier;
+
/**
* The basic filtering rule that can be used to filter entries,
* without registering a new filtering rule type, for external
@@ -41,4 +45,12 @@ import org.jetbrains.annotations.ApiStatus;
@ApiStatus.Experimental
@Environment(EnvType.CLIENT)
public interface BasicFilteringRule<Cache> extends Reloadable<REIClientPlugin>, FilteringRule<Cache>, FilteringResult {
+ MarkDirty hide(Supplier<Collection<EntryStack<?>>> provider);
+
+ MarkDirty show(Supplier<Collection<EntryStack<?>>> provider);
+
+ @ApiStatus.NonExtendable
+ interface MarkDirty {
+ void markDirty();
+ }
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/registry/entry/EntryRegistry.java b/api/src/main/java/me/shedaniel/rei/api/client/registry/entry/EntryRegistry.java
index 63ed14d72..9e4713957 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/registry/entry/EntryRegistry.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/registry/entry/EntryRegistry.java
@@ -23,6 +23,8 @@
package me.shedaniel.rei.api.client.registry.entry;
+import it.unimi.dsi.fastutil.longs.LongCollection;
+import me.shedaniel.rei.api.client.entry.filtering.FilteringRule;
import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.plugins.PluginManager;
@@ -207,4 +209,7 @@ public interface EntryRegistry extends Reloadable<REIClientPlugin> {
* @return whether the registry is in its reloading phase
*/
boolean isReloading();
+
+ @ApiStatus.Experimental
+ <Cache> void markFilteringRuleDirty(FilteringRule<Cache> cacheFilteringRule, Collection<EntryStack<?>> stacks, @Nullable LongCollection hashes);
}