aboutsummaryrefslogtreecommitdiff
path: root/runtime/src
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-11-09 22:22:39 +0800
committershedaniel <daniel@shedaniel.me>2022-11-09 22:23:11 +0800
commita932ccf66dc4f0b14de780879b00e4d4a9ea1f0c (patch)
treedaec80c222da6969bef0c42f0b1636a21381438b /runtime/src
parent66bd26b6ab2172a834d06e9f70d09a659faa8ebd (diff)
parentc6f180f73bcbf5aa23b8b741e6a4f617439214e5 (diff)
downloadRoughlyEnoughItems-a932ccf66dc4f0b14de780879b00e4d4a9ea1f0c.tar.gz
RoughlyEnoughItems-a932ccf66dc4f0b14de780879b00e4d4a9ea1f0c.tar.bz2
RoughlyEnoughItems-a932ccf66dc4f0b14de780879b00e4d4a9ea1f0c.zip
Merge remote-tracking branch 'origin/9.x-1.19' into feature/1.19.3
Diffstat (limited to 'runtime/src')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java71
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java18
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java23
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesEntry.java112
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesScreen.java246
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java21
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringCategoriesEntry.java102
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringCache.java31
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringContext.java47
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringContextImpl.java53
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringResult.java93
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringResultImpl.java27
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringRule.java86
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/BasicFilteringRuleImpl.java155
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/BasicFilteringRuleType.java (renamed from runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringCacheImpl.java)44
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/FilteringRuleTypeRegistryImpl.java87
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/ManualFilteringRule.java52
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/ManualFilteringRuleType.java (renamed from runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/AbstractFilteringRule.java)40
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRule.java167
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRuleType.java178
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/dragging/CurrentDraggingStack.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java67
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java83
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java73
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java14
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java16
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/TabContainerWidget.java202
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/TabWidget.java41
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListSearchManager.java21
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListStackEntry.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java12
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/registry/category/CategoryRegistryImpl.java11
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java46
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/search/AsyncSearchManager.java196
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/search/SearchProviderImpl.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/Argument.java98
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/search/method/InputMethodRegistryImpl.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/util/ThreadCreator.java64
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/PreFilteredEntryList.java22
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/plugins/PluginManagerImpl.java12
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/MenuInfoRegistryImpl.java25
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/FilteredStacksVisibilityHandler.java20
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchFilterPrepareWatcher.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/test/REITestPlugin.java16
-rwxr-xr-xruntime/src/main/resources/assets/roughlyenoughitems/lang/en_us.json8
51 files changed, 1898 insertions, 848 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
index e6256dabe..01e4fc1fd 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
@@ -35,6 +35,7 @@ import dev.architectury.networking.NetworkManager;
import me.shedaniel.math.Point;
import me.shedaniel.rei.api.client.REIRuntime;
import me.shedaniel.rei.api.client.config.ConfigObject;
+import me.shedaniel.rei.api.client.entry.filtering.FilteringRuleTypeRegistry;
import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer;
import me.shedaniel.rei.api.client.favorites.FavoriteEntry;
import me.shedaniel.rei.api.client.favorites.FavoriteEntryType;
@@ -58,6 +59,7 @@ import me.shedaniel.rei.impl.ClientInternals;
import me.shedaniel.rei.impl.client.REIRuntimeImpl;
import me.shedaniel.rei.impl.client.config.ConfigManagerImpl;
import me.shedaniel.rei.impl.client.config.addon.ConfigAddonRegistryImpl;
+import me.shedaniel.rei.impl.client.entry.filtering.rules.FilteringRuleTypeRegistryImpl;
import me.shedaniel.rei.impl.client.entry.renderer.EntryRendererRegistryImpl;
import me.shedaniel.rei.impl.client.favorites.DelegatingFavoriteEntryProviderImpl;
import me.shedaniel.rei.impl.client.favorites.FavoriteEntryTypeRegistryImpl;
@@ -201,6 +203,7 @@ public class RoughlyEnoughItemsCoreClient {
return categories.stream();
}
}, "clickAreaHandlerResult");
+ ClientInternals.attachInstanceSupplier(new FilteringRuleTypeRegistryImpl(), "filteringRuleTypeRegistry");
ClientInternals.attachInstanceSupplier(new PluginManagerImpl<>(
REIClientPlugin.class,
view -> view.then(PluginView.getInstance()),
@@ -211,6 +214,7 @@ public class RoughlyEnoughItemsCoreClient {
new ConfigManagerImpl(),
new EntryRegistryImpl(),
new CollapsibleEntryRegistryImpl(),
+ FilteringRuleTypeRegistry.getInstance().basic(),
new CategoryRegistryImpl(),
new DisplayRegistryImpl(),
new ScreenRegistryImpl(),
@@ -450,6 +454,7 @@ public class RoughlyEnoughItemsCoreClient {
@ApiStatus.Internal
public static void reloadPlugins(MutableLong lastReload, @Nullable ReloadStage start) {
+ if (Minecraft.getInstance().level == null) return;
if (lastReload != null) {
if (lastReload.getValue() > 0 && System.currentTimeMillis() - lastReload.getValue() <= 5000) {
InternalLogger.getInstance().warn("Suppressing Reload Plugins of stage " + start);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java
index bff0573e8..7e2045c92 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java
@@ -255,7 +255,7 @@ public class REIRuntimeImpl implements REIRuntime {
@Override
public void startReload() {
- Argument.SEARCH_CACHE.clear();
+ Argument.resetCache(false);
getOverlay().ifPresent(ScreenOverlay::queueReloadOverlay);
lastDisplayScreen.clear();
if (!RenderSystem.isOnRenderThread()) {
@@ -272,7 +272,7 @@ public class REIRuntimeImpl implements REIRuntime {
@Override
public void endReload(ReloadStage stage) {
- Argument.SEARCH_CACHE.clear();
+ Argument.resetCache(true);
getOverlay().ifPresent(ScreenOverlay::queueReloadOverlay);
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java
index faa56785e..7934e8448 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java
@@ -50,19 +50,21 @@ import me.shedaniel.rei.api.client.REIRuntime;
import me.shedaniel.rei.api.client.config.ConfigManager;
import me.shedaniel.rei.api.client.config.addon.ConfigAddonRegistry;
import me.shedaniel.rei.api.client.config.entry.EntryStackProvider;
+import me.shedaniel.rei.api.client.entry.filtering.FilteringRule;
+import me.shedaniel.rei.api.client.entry.filtering.FilteringRuleType;
+import me.shedaniel.rei.api.client.entry.filtering.FilteringRuleTypeRegistry;
import me.shedaniel.rei.api.client.favorites.FavoriteEntry;
import me.shedaniel.rei.api.client.gui.config.CheatingMode;
import me.shedaniel.rei.api.client.gui.config.DisplayScreenType;
import me.shedaniel.rei.api.client.gui.config.SyntaxHighlightingMode;
import me.shedaniel.rei.api.client.overlay.ScreenOverlay;
import me.shedaniel.rei.api.client.registry.entry.EntryRegistry;
+import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.CollectionUtils;
import me.shedaniel.rei.impl.client.REIRuntimeImpl;
import me.shedaniel.rei.impl.client.config.addon.ConfigAddonRegistryImpl;
import me.shedaniel.rei.impl.client.config.entries.*;
-import me.shedaniel.rei.impl.client.entry.filtering.FilteringRule;
-import me.shedaniel.rei.impl.client.entry.filtering.rules.ManualFilteringRule;
import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl;
import me.shedaniel.rei.impl.client.gui.credits.CreditsScreen;
import me.shedaniel.rei.impl.client.gui.performance.entry.PerformanceEntry;
@@ -70,6 +72,7 @@ import me.shedaniel.rei.impl.common.InternalLogger;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.ChatFormatting;
+import net.minecraft.ResourceLocationException;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.events.GuiEventListener;
@@ -135,6 +138,18 @@ public class ConfigManagerImpl implements ConfigManager {
Collections.singletonList(new FilteringEntry(220, value, ((ConfigObjectImpl.Advanced.Filtering) config).filteringRules, defaultValue, saveConsumer, list -> ((ConfigObjectImpl.Advanced.Filtering) config).filteringRules = Lists.newArrayList(list)));
}
, (field) -> field.getType() == List.class, ConfigObjectImpl.UseFilteringScreen.class);
+ guiRegistry.registerAnnotationProvider((i13n, field, config, defaults, guiProvider) -> {
+ Map<CategoryIdentifier<?>, Boolean> value = Utils.<Map<CategoryIdentifier<?>, Boolean>>getUnsafely(field, config, new HashMap<>());
+ Map<CategoryIdentifier<?>, Boolean> defaultValue = Utils.getUnsafely(field, defaults);
+ Consumer<Map<CategoryIdentifier<?>, Boolean>> saveConsumer = (newValue) -> {
+ setUnsafely(field, config, newValue);
+ };
+ return REIRuntime.getInstance().getPreviousContainerScreen() == null || Minecraft.getInstance().getConnection() == null || Minecraft.getInstance().getConnection().getRecipeManager() == null ?
+ Collections.singletonList(new NoFilteringCategoriesEntry(Component.translatable(i13n), value, defaultValue, saveConsumer))
+ :
+ Collections.singletonList(new FilteringCategoriesEntry(Component.translatable(i13n), value, defaultValue, saveConsumer));
+ }
+ , (field) -> field.getType() == Map.class, ConfigObjectImpl.UseFilteringCategoriesScreen.class);
InternalLogger.getInstance().info("Config loaded");
saveConfig();
}
@@ -237,7 +252,7 @@ public class ConfigManagerImpl implements ConfigManager {
// FilteringRule
builder.registerSerializer(FilteringRule.class, (value, marshaller) -> {
try {
- return marshaller.serialize(FilteringRule.save(value, new CompoundTag()));
+ return marshaller.serialize(FilteringRuleType.save(value, new CompoundTag()));
} catch (Exception e) {
e.printStackTrace();
return JsonNull.INSTANCE;
@@ -245,7 +260,7 @@ public class ConfigManagerImpl implements ConfigManager {
});
builder.registerDeserializer(Tag.class, FilteringRule.class, (value, marshaller) -> {
try {
- return FilteringRule.read((CompoundTag) value);
+ return FilteringRuleType.read((CompoundTag) value);
} catch (Exception e) {
e.printStackTrace();
return null;
@@ -253,7 +268,7 @@ public class ConfigManagerImpl implements ConfigManager {
});
builder.registerDeserializer(String.class, FilteringRule.class, (value, marshaller) -> {
try {
- return FilteringRule.read(TagParser.parseTag(value));
+ return FilteringRuleType.read(TagParser.parseTag(value));
} catch (Exception e) {
e.printStackTrace();
return null;
@@ -282,6 +297,18 @@ public class ConfigManagerImpl implements ConfigManager {
}
});
+ // CategoryIdentifier
+ builder.registerSerializer(CategoryIdentifier.class, (value, marshaller) -> {
+ return marshaller.serialize(value.toString());
+ });
+ builder.registerDeserializer(String.class, CategoryIdentifier.class, (value, marshaller) -> {
+ try {
+ return CategoryIdentifier.of(value);
+ } catch (ResourceLocationException e) {
+ throw new DeserializationException(e);
+ }
+ });
+
return builder.build();
}
@@ -295,8 +322,10 @@ public class ConfigManagerImpl implements ConfigManager {
@Override
public void saveConfig() {
- if (getConfig().getFilteringRules().stream().noneMatch(filteringRule -> filteringRule instanceof ManualFilteringRule)) {
- getConfig().getFilteringRules().add(new ManualFilteringRule());
+ for (FilteringRuleType<?> type : FilteringRuleTypeRegistry.getInstance()) {
+ if (type.isSingular() && getConfig().getFilteringRules().stream().noneMatch(filteringRule -> filteringRule.getType().equals(type))) {
+ getConfig().getFilteringRules().add(type.createNew());
+ }
}
AutoConfig.getConfigHolder(ConfigObjectImpl.class).registerLoadListener((configHolder, configObject) -> {
object = configObject;
@@ -377,12 +406,12 @@ public class ConfigManagerImpl implements ConfigManager {
if (Minecraft.getInstance().getConnection() != null && Minecraft.getInstance().getConnection().getRecipeManager() != null) {
TextListEntry feedbackEntry = ConfigEntryBuilder.create().startTextDescription(
Component.translatable("text.rei.feedback", Component.translatable("text.rei.feedback.link")
- .withStyle(style -> style
- .withColor(TextColor.fromRgb(0xff1fc3ff))
- .withUnderlined(true)
- .withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://forms.gle/5tdnK5WN1wng78pV8"))
+ .withStyle(style -> style
+ .withColor(TextColor.fromRgb(0xff1fc3ff))
+ .withUnderlined(true)
+ .withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://forms.gle/5tdnK5WN1wng78pV8"))
.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, Component.literal("https://forms.gle/5tdnK5WN1wng78pV8")))
- ))
+ ))
.withStyle(ChatFormatting.GRAY)
).build();
builder.getOrCreateCategory(Component.translatable("config.roughlyenoughitems.advanced")).getEntries().add(0, feedbackEntry);
@@ -401,18 +430,18 @@ public class ConfigManagerImpl implements ConfigManager {
TextListEntry supportText = ConfigEntryBuilder.create().startTextDescription(
Component.translatable("text.rei.support.me.desc",
Component.translatable("text.rei.support.me.patreon")
- .withStyle(style -> style
- .withColor(TextColor.fromRgb(0xff1fc3ff))
- .withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://patreon.com/shedaniel"))
+ .withStyle(style -> style
+ .withColor(TextColor.fromRgb(0xff1fc3ff))
+ .withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://patreon.com/shedaniel"))
.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, Component.literal("https://patreon.com/shedaniel")))
- ),
+ ),
Component.translatable("text.rei.support.me.bisect")
- .withStyle(style -> style
- .withColor(TextColor.fromRgb(0xff1fc3ff))
- .withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://www.bisecthosting.com/shedaniel"))
+ .withStyle(style -> style
+ .withColor(TextColor.fromRgb(0xff1fc3ff))
+ .withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://www.bisecthosting.com/shedaniel"))
.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, Component.literal("https://www.bisecthosting.com/shedaniel")))
- )
- )
+ )
+ )
.withStyle(ChatFormatting.GRAY)
).build();
supportText.setScreen((AbstractConfigScreen) screen);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java
index 33c6e0490..d59ece66c 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java
@@ -33,9 +33,10 @@ import me.shedaniel.clothconfig2.api.Modifier;
import me.shedaniel.clothconfig2.api.ModifierKeyCode;
import me.shedaniel.rei.api.client.config.ConfigObject;
import me.shedaniel.rei.api.client.config.entry.EntryStackProvider;
+import me.shedaniel.rei.api.client.entry.filtering.FilteringRule;
import me.shedaniel.rei.api.client.favorites.FavoriteEntry;
import me.shedaniel.rei.api.client.gui.config.*;
-import me.shedaniel.rei.impl.client.entry.filtering.FilteringRule;
+import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.impl.client.gui.widget.favorites.FavoritesEntriesManager;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@@ -52,7 +53,9 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
@ApiStatus.Internal
@Config(name = "roughlyenoughitems/config")
@@ -413,6 +416,12 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData {
return advanced.filtering.filteringRules;
}
+ @ApiStatus.Experimental
+ @Override
+ public Map<CategoryIdentifier<?>, Boolean> getFilteringQuickCraftCategories() {
+ return advanced.filtering.filteringQuickCraftCategories;
+ }
+
@Override
@ApiStatus.Experimental
public boolean shouldAsyncSearch() {
@@ -548,6 +557,10 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData {
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
+ @interface UseFilteringCategoriesScreen {}
+
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target({ElementType.FIELD})
@interface UsePercentage {
double min();
@@ -671,7 +684,7 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData {
@Comment("Declares how the scrollbar in composite screen should act.") private boolean compositeScrollBarPermanent = false;
private boolean toastDisplayedOnCopyIdentifier = true;
@Comment("Declares whether REI should use compact tabs for categories.") private boolean useCompactTabs = true;
- @Comment("Declares whether REI should use compact tab buttons for categories.") private boolean useCompactTabButtons = false;
+ @Comment("Declares whether REI should use compact tab buttons for categories.") @ConfigEntry.Gui.Excluded private boolean useCompactTabButtons = false;
}
public static class Search {
@@ -709,6 +722,7 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData {
@UseFilteringScreen private List<EntryStackProvider<?>> filteredStacks = new ArrayList<>();
public boolean shouldFilterDisplays = true;
@ConfigEntry.Gui.Excluded public List<FilteringRule<?>> filteringRules = new ArrayList<>();
+ @UseFilteringCategoriesScreen public Map<CategoryIdentifier<?>, Boolean> filteringQuickCraftCategories = new HashMap<>();
}
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java
index 68cb9cc0c..44adb5e80 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java
@@ -25,8 +25,9 @@ package me.shedaniel.rei.impl.client.config.entries;
import com.mojang.blaze3d.vertex.PoseStack;
import me.shedaniel.clothconfig2.gui.widget.DynamicElementListWidget;
-import me.shedaniel.rei.impl.client.entry.filtering.FilteringRule;
-import me.shedaniel.rei.impl.client.entry.filtering.rules.ManualFilteringRule;
+import me.shedaniel.rei