aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me/shedaniel/rei/plugin
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-11-27 17:50:11 +0800
committershedaniel <daniel@shedaniel.me>2022-11-27 18:05:58 +0800
commit2123544fcf3ad7ec6d89e671a993a75737e3a44e (patch)
treed9f47994a2d3f715914eaa703ad05c55aba274b5 /runtime/src/main/java/me/shedaniel/rei/plugin
parent9c865aff50b8c49e89ee1a7d6319d52cdcdd229a (diff)
downloadRoughlyEnoughItems-2123544fcf3ad7ec6d89e671a993a75737e3a44e.tar.gz
RoughlyEnoughItems-2123544fcf3ad7ec6d89e671a993a75737e3a44e.tar.bz2
RoughlyEnoughItems-2123544fcf3ad7ec6d89e671a993a75737e3a44e.zip
Make filtering more immediate
Diffstat (limited to 'runtime/src/main/java/me/shedaniel/rei/plugin')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java3
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/test/REITestPlugin.java42
2 files changed, 43 insertions, 2 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java
index 95e77b334..4e0c6cbee 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java
@@ -67,6 +67,7 @@ import me.shedaniel.rei.impl.client.search.method.unihan.PinyinInputMethod;
import me.shedaniel.rei.impl.client.search.method.unihan.UniHanManager;
import me.shedaniel.rei.impl.common.entry.type.EntryRegistryImpl;
import me.shedaniel.rei.impl.common.entry.type.EntryRegistryListener;
+import me.shedaniel.rei.impl.common.util.HashedEntryStackWrapper;
import me.shedaniel.rei.plugin.autocrafting.DefaultCategoryHandler;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@@ -120,7 +121,7 @@ public class DefaultClientRuntimePlugin implements REIClientPlugin {
((EntryRegistryImpl) registry).listeners.add(new EntryRegistryListener() {
@Override
- public void onReFilter(List<EntryStack<?>> stacks) {
+ public void onReFilter(List<HashedEntryStackWrapper> stacks) {
filteredStacksVisibilityHandler.reset();
}
});
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/test/REITestPlugin.java b/runtime/src/main/java/me/shedaniel/rei/plugin/test/REITestPlugin.java
index ff8521cd1..73080a7ec 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/test/REITestPlugin.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/test/REITestPlugin.java
@@ -24,11 +24,15 @@
package me.shedaniel.rei.plugin.test;
import com.google.common.collect.ImmutableList;
+import dev.architectury.event.events.common.CommandRegistrationEvent;
+import me.shedaniel.rei.api.client.entry.filtering.FilteringRuleTypeRegistry;
+import me.shedaniel.rei.api.client.entry.filtering.base.BasicFilteringRule;
import me.shedaniel.rei.api.client.favorites.FavoriteEntry;
import me.shedaniel.rei.api.client.favorites.FavoriteEntryType;
import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
import me.shedaniel.rei.api.client.registry.entry.CollapsibleEntryRegistry;
import me.shedaniel.rei.api.client.registry.entry.EntryRegistry;
+import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.comparison.ItemComparatorRegistry;
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
@@ -39,7 +43,12 @@ import me.shedaniel.rei.impl.common.InternalLogger;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.Minecraft;
+import net.minecraft.commands.CommandBuildContext;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.arguments.item.ItemArgument;
+import net.minecraft.commands.arguments.item.ItemInput;
import net.minecraft.core.Registry;
+import net.minecraft.core.RegistryAccess;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.Item;
@@ -55,7 +64,24 @@ import java.util.stream.IntStream;
@TestOnly
@Environment(EnvType.CLIENT)
public class REITestPlugin implements REIClientPlugin {
- private Random random = new Random();
+ private final Random random = new Random();
+ private BasicFilteringRule.MarkDirty markDirty;
+
+ public REITestPlugin() {
+ CommandRegistrationEvent.EVENT.register((dispatcher, selection) -> {
+ dispatcher.register(Commands.literal("rei_test_reload_filtering")
+ .then(Commands.argument("item", ItemArgument.item(new CommandBuildContext(RegistryAccess.fromRegistryOfRegistries(Registry.REGISTRY))))
+ .executes(context -> {
+ BasicFilteringRule<?> basic = FilteringRuleTypeRegistry.getInstance().basic();
+ basic.hide(EntryStacks.of(context.getArgument("item", ItemInput.class).createItemStack(1, false)));
+ return 0;
+ }))
+ .executes(context -> {
+ if (this.markDirty != null) this.markDirty.markDirty();
+ return 0;
+ }));
+ });
+ }
@Override
public void preStage(PluginManager<REIClientPlugin> manager, ReloadStage stage) {
@@ -64,6 +90,7 @@ public class REITestPlugin implements REIClientPlugin {
@Override
public void registerEntries(EntryRegistry registry) {
+ if (1 + 1 == 2) return;
int times = 10;
for (Item item : Registry.ITEM) {
EntryStack<ItemStack> base = EntryStacks.of(item);
@@ -89,6 +116,19 @@ public class REITestPlugin implements REIClientPlugin {
}
@Override
+ public void registerBasicEntryFiltering(BasicFilteringRule<?> rule) {
+ markDirty = rule.hide(() -> {
+ EntryIngredient.Builder builder = EntryIngredient.builder();
+ for (Item item : Registry.ITEM) {
+ if (random.nextInt() % 10 == 0) {
+ builder.add(EntryStacks.of(item));
+ }
+ }
+ return builder.build();
+ });
+ }
+
+ @Override
public void registerItemComparators(ItemComparatorRegistry registry) {
registry.registerNbt(Registry.ITEM.stream().toArray(Item[]::new));
}