aboutsummaryrefslogtreecommitdiff
path: root/runtime-engine
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-11-07 21:21:49 +0800
committershedaniel <daniel@shedaniel.me>2022-11-07 21:42:03 +0800
commit0be6613cad5eb71d4828118329f0d8f462c5a498 (patch)
tree053bf10968f2de936a8d89dd362bdf3d13596a50 /runtime-engine
parent0ef0f8b21df4b9a603aaa2ab4a35d395ef6437c1 (diff)
parent46d2c64c4303bc007055268075ea9be4e9852e5e (diff)
downloadRoughlyEnoughItems-0be6613cad5eb71d4828118329f0d8f462c5a498.tar.gz
RoughlyEnoughItems-0be6613cad5eb71d4828118329f0d8f462c5a498.tar.bz2
RoughlyEnoughItems-0be6613cad5eb71d4828118329f0d8f462c5a498.zip
Merge commit '46d2c64c4303bc007055268075ea9be4e9852e5e' into modularity
Diffstat (limited to 'runtime-engine')
-rw-r--r--runtime-engine/configs/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java3
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java32
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringConfigEntries.java5
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java8
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java17
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java34
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/AbstractFilteringRule.java46
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringCache.java34
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringContext.java46
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringContextImpl.java53
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringResult.java92
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringResultImpl.java27
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringRuleInternal.java41
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringRuleType.java77
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/BasicFilteringRuleImpl.java156
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/BasicFilteringRuleType.java (renamed from runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringCacheImpl.java)46
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/FilteringRuleTypeRegistryImpl.java87
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/ManualFilteringRule.java21
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/ManualFilteringRuleType.java21
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRule.java15
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRuleType.java31
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/type/PreFilteredEntryListImpl.java41
-rw-r--r--runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/plugin/client/runtime/FilteredStacksVisibilityHandler.java32
-rw-r--r--runtime-engine/filtering-entries/src/main/resources/META-INF/services/me.shedaniel.rei.api.client.entry.filtering.FilteringRuleTypeRegistry1
-rw-r--r--runtime-engine/initialization/src/main/java/me/shedaniel/rei/impl/client/init/CoreClientInitialization.java2
25 files changed, 468 insertions, 500 deletions
diff --git a/runtime-engine/configs/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java b/runtime-engine/configs/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java
index 4f8e6bd62..c0d46569b 100644
--- a/runtime-engine/configs/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java
+++ b/runtime-engine/configs/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java
@@ -50,6 +50,9 @@ 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;
diff --git a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java b/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java
index 50580d118..e1cbe7da6 100644
--- a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java
+++ b/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java
@@ -25,9 +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.FilteringRuleInternal;
-import me.shedaniel.rei.impl.client.entry.filtering.FilteringRuleType;
-import me.shedaniel.rei.impl.client.entry.filtering.rules.ManualFilteringRuleType;
+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 net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.events.GuiEventListener;
@@ -43,7 +43,7 @@ import net.minecraft.resources.ResourceLocation;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
-import java.util.function.BiFunction;
+import java.util.function.Function;
public class FilteringAddRuleScreen extends Screen {
private final FilteringEntry entry;
@@ -66,9 +66,9 @@ public class FilteringAddRuleScreen extends Screen {
}));
}
rulesList = addWidget(new RulesList(minecraft, width, height, 30, height, BACKGROUND_LOCATION));
- for (FilteringRuleType<?> type : FilteringRuleType.REGISTRY.values()) {
- if (!(type instanceof ManualFilteringRuleType))
- rulesList.addItem(new DefaultRuleEntry(parent, entry, type.createNew(), null));
+ for (FilteringRuleType<?> rule : FilteringRuleTypeRegistry.getInstance()) {
+ if (!rule.isSingular())
+ rulesList.addItem(new DefaultRuleEntry(parent, entry, rule.createNew(), null));
}
rulesList.selectItem(rulesList.children().get(0));
}
@@ -125,13 +125,13 @@ public class FilteringAddRuleScreen extends Screen {
}
public static abstract class RuleEntry extends DynamicElementListWidget.ElementEntry<RuleEntry> {
- private final FilteringRuleInternal rule;
+ private final FilteringRule<?> rule;
- public RuleEntry(FilteringRuleInternal rule) {
+ public RuleEntry(FilteringRule<?> rule) {
this.rule = rule;
}
- public FilteringRuleInternal getRule() {
+ public FilteringRule<?> getRule() {
return rule;
}
@@ -148,14 +148,14 @@ public class FilteringAddRuleScreen extends Screen {
public static class DefaultRuleEntry extends RuleEntry {
private final Button addButton;
- private final BiFunction<FilteringEntry, Screen, Screen> screenFunction;
+ private final Function<Screen, Screen> screenFunction;
- public DefaultRuleEntry(Screen parent, FilteringEntry entry, FilteringRuleInternal rule, BiFunction<FilteringEntry, Screen, Screen> screenFunction) {
+ public DefaultRuleEntry(Screen parent, FilteringEntry entry, FilteringRule<?> rule, Function<Screen, Screen> screenFunction) {
super(rule);
- this.screenFunction = (screenFunction == null ? ((FilteringRuleType<FilteringRuleInternal>) rule.getType()).createEntryScreen(rule).orElse(null) : screenFunction);
+ this.screenFunction = (screenFunction == null ? ((FilteringRuleType<FilteringRule<?>>) rule.getType()).createEntryScreen(rule) : screenFunction);
addButton = new Button(0, 0, 20, 20, Component.nullToEmpty(" + "), button -> {
entry.edited = true;
- Minecraft.getInstance().setScreen(this.screenFunction.apply(entry, parent));
+ Minecraft.getInstance().setScreen(this.screenFunction.apply(parent));
entry.rules.add(0, rule);
});
addButton.active = this.screenFunction != null;
@@ -165,7 +165,7 @@ public class FilteringAddRuleScreen extends Screen {
public void render(PoseStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isHovered, float delta) {
Minecraft client = Minecraft.getInstance();
{
- Component title = getRule().getType().getTitle();
+ Component title = ((FilteringRuleType<FilteringRule<?>>) getRule().getType()).getTitle(getRule());
int i = client.font.width(title);
if (i > entryWidth - 28) {
FormattedText titleTrimmed = FormattedText.composite(client.font.substrByWidth(title, entryWidth - 28 - client.font.width("...")), FormattedText.of("..."));
@@ -175,7 +175,7 @@ public class FilteringAddRuleScreen extends Screen {
}
}
{
- Component subtitle = getRule().getType().getSubtitle();
+ Component subtitle = ((FilteringRuleType<FilteringRule<?>>) getRule().getType()).getSubtitle(getRule());
int i = client.font.width(subtitle);
if (i > entryWidth - 28) {
FormattedText subtitleTrimmed = FormattedText.composite(client.font.substrByWidth(subtitle, entryWidth - 28 - client.font.width("...")), FormattedText.of("..."));
diff --git a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringConfigEntries.java b/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringConfigEntries.java
index 133cf2fb1..b51d8a5fb 100644
--- a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringConfigEntries.java
+++ b/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringConfigEntries.java
@@ -31,11 +31,10 @@ import me.shedaniel.cloth.clothconfig.shadowed.blue.endless.jankson.JsonNull;
import me.shedaniel.rei.api.client.REIRuntime;
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.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.CollectionUtils;
import me.shedaniel.rei.impl.client.config.ConfigManagerInternal;
-import me.shedaniel.rei.impl.client.entry.filtering.FilteringRuleInternal;
-import me.shedaniel.rei.impl.client.entry.filtering.FilteringRuleType;
import net.minecraft.client.Minecraft;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
@@ -76,7 +75,7 @@ public class FilteringConfigEntries implements ConfigManagerInternal.SystemSetup
// FilteringRule
builder.registerSerializer(FilteringRule.class, (value, marshaller) -> {
try {
- return marshaller.serialize(FilteringRuleType.save((FilteringRuleInternal) value, new CompoundTag()));
+ return marshaller.serialize(FilteringRuleType.save(value, new CompoundTag()));
} catch (Exception e) {
e.printStackTrace();
return JsonNull.INSTANCE;
diff --git a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java b/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java
index 12bc5dc00..c8d75ed77 100644
--- a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java
+++ b/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java
@@ -28,9 +28,9 @@ import com.google.common.collect.Lists;
import com.mojang.blaze3d.platform.Window;
import com.mojang.blaze3d.vertex.PoseStack;
import me.shedaniel.clothconfig2.api.AbstractConfigListEntry;
+import me.shedaniel.rei.api.client.entry.filtering.FilteringRule;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.EntryStacks;
-import me.shedaniel.rei.impl.client.entry.filtering.FilteringRuleInternal;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.chat.NarratorChatListener;
import net.minecraft.client.gui.components.AbstractWidget;
@@ -47,10 +47,10 @@ import java.util.function.Consumer;
public class FilteringEntry extends AbstractConfigListEntry<List<EntryStack<?>>> {
private int width;
Consumer<List<EntryStack<?>>> saveConsumer;
- Consumer<List<FilteringRuleInternal>> rulesSaveConsumer;
+ Consumer<List<FilteringRule<?>>> rulesSaveConsumer;
List<EntryStack<?>> defaultValue;
Set<EntryStack<?>> configFiltered;
- List<FilteringRuleInternal> rules;
+ List<FilteringRule<?>> rules;
boolean edited = false;
final FilteringScreen filteringScreen = new FilteringScreen(this);
final FilteringRulesScreen filteringRulesScreen = new FilteringRulesScreen(this);
@@ -60,7 +60,7 @@ public class FilteringEntry extends AbstractConfigListEntry<List<EntryStack<?>>>
});
private final List<AbstractWidget> children = ImmutableList.of(buttonWidget);
- public FilteringEntry(int width, List<EntryStack<?>> configFiltered, List<FilteringRuleInternal> rules, List<EntryStack<?>> defaultValue, Consumer<List<EntryStack<?>>> saveConsumer, Consumer<List<FilteringRuleInternal>> rulesSaveConsumer) {
+ public FilteringEntry(int width, List<EntryStack<?>> configFiltered, List<FilteringRule<?>> rules, List<EntryStack<?>> defaultValue, Consumer<List<EntryStack<?>>> saveConsumer, Consumer<List<FilteringRule<?>>> rulesSaveConsumer) {
super(NarratorChatListener.NO_TITLE, false);
this.width = width;
this.configFiltered = new TreeSet<>(Comparator.comparing(EntryStacks::hashExact));
diff --git a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java b/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java
index 8e471556e..608173db8 100644
--- a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java
+++ b/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java
@@ -28,7 +28,6 @@ import com.mojang.blaze3d.vertex.PoseStack;
import me.shedaniel.clothconfig2.gui.widget.DynamicElementListWidget;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.client.entry.filtering.FilteringRule;
-import me.shedaniel.rei.impl.client.entry.filtering.FilteringRuleInternal;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.EditBox;
@@ -51,15 +50,13 @@ import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
-public abstract class FilteringRuleOptionsScreen<T extends FilteringRuleInternal> extends Screen {
- private final FilteringEntry entry;
+public abstract class FilteringRuleOptionsScreen<T extends FilteringRule<?>> extends Screen {
private RulesList rulesList;
Screen parent;
public T rule;
- public FilteringRuleOptionsScreen(FilteringEntry entry, T rule, Screen screen) {
+ public FilteringRuleOptionsScreen(T rule, Screen screen) {
super(new TranslatableComponent("config.roughlyenoughitems.filteringRulesScreen"));
- this.entry = entry;
this.rule = rule;
this.parent = screen;
}
@@ -137,7 +134,7 @@ public abstract class FilteringRuleOptionsScreen<T extends FilteringRuleInternal
public static class TextRuleEntry extends RuleEntry {
private final FormattedCharSequence text;
- public TextRuleEntry(FilteringRuleInternal rule, FormattedCharSequence text) {
+ public TextRuleEntry(FilteringRule<?> rule, FormattedCharSequence text) {
super(rule);
this.text = text;
}
@@ -166,7 +163,7 @@ public abstract class FilteringRuleOptionsScreen<T extends FilteringRuleInternal
public static class EmptyRuleEntry extends RuleEntry {
private final int height;
- public EmptyRuleEntry(FilteringRuleInternal rule, int height) {
+ public EmptyRuleEntry(FilteringRule<?> rule, int height) {
super(rule);
this.height = height;
}
@@ -194,7 +191,7 @@ public abstract class FilteringRuleOptionsScreen<T extends FilteringRuleInternal
public static class TextFieldRuleEntry extends RuleEntry {
private final EditBox widget;
- public TextFieldRuleEntry(int width, FilteringRuleInternal rule, Consumer<EditBox> widgetConsumer) {
+ public TextFieldRuleEntry(int width, FilteringRule<?> rule, Consumer<EditBox> widgetConsumer) {
super(rule);
this.widget = new EditBox(Minecraft.getInstance().font, 0, 0, width, 18, Component.nullToEmpty(""));
widgetConsumer.accept(widget);
@@ -231,7 +228,7 @@ public abstract class FilteringRuleOptionsScreen<T extends FilteringRuleInternal
private boolean b;
private final Button widget;
- public BooleanRuleEntry(int width, boolean b, FilteringRuleInternal rule, Function<Boolean, Component> textFunction) {
+ public BooleanRuleEntry(int width, boolean b, FilteringRule<?> rule, Function<Boolean, Component> textFunction) {
super(rule);
this.b = b;
this.widget = new Button(0, 0, 100, 20, textFunction.apply(b), button -> {
@@ -275,7 +272,7 @@ public abstract class FilteringRuleOptionsScreen<T extends FilteringRuleInternal
private boolean expanded;
private Supplier<Component> name;
- public SubRulesEntry(FilteringRuleInternal rule, Supplier<Component> name, List<RuleEntry> rules) {
+ public SubRulesEntry(FilteringRule<?> rule, Supplier<Component> name, List<RuleEntry> rules) {
super(rule);
this.rules = rules;
this.widget = new CategoryLabelWidget();
diff --git a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java b/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java
index 32a13038a..2c60930bf 100644
--- a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java
+++ b/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java
@@ -26,9 +26,9 @@ package me.shedaniel.rei.impl.client.config.entries;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import me.shedaniel.clothconfig2.gui.widget.DynamicElementListWidget;
-import me.shedaniel.rei.impl.client.entry.filtering.FilteringRuleInternal;
-import me.shedaniel.rei.impl.client.entry.filtering.FilteringRuleType;
-import me.shedaniel.rei.impl.client.entry.filtering.rules.ManualFilteringRuleType;
+import me.shedaniel.rei.api.client.entry.filtering.FilteringRule;
+import me.shedaniel.rei.api.client.entry.filtering.FilteringRuleType;
+import me.shedaniel.rei.impl.client.entry.filtering.rules.ManualFilteringRule;
import me.shedaniel.rei.impl.client.gui.InternalTextures;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.Button;
@@ -47,7 +47,7 @@ import net.minecraft.sounds.SoundEvents;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
-import java.util.function.BiFunction;
+import java.util.function.Function;
public class FilteringRulesScreen extends Screen {
private final FilteringEntry entry;
@@ -79,9 +79,9 @@ public class FilteringRulesScreen extends Screen {
}
rulesList = addWidget(new RulesList(minecraft, width, height, 30, height, BACKGROUND_LOCATION));
for (int i = entry.rules.size() - 1; i >= 0; i--) {
- FilteringRuleInternal rule = entry.rules.get(i);
- if (rule instanceof ManualFilteringRuleType)
- rulesList.addItem(new DefaultRuleEntry(rule, entry, (entry, screen) -> {
+ FilteringRule<?> rule = entry.rules.get(i);
+ if (rule instanceof ManualFilteringRule)
+ rulesList.addItem(new DefaultRuleEntry(rule, entry, (screen) -> {
entry.filteringScreen.parent = screen;
return entry.filteringScreen;
}));
@@ -157,13 +157,13 @@ public class FilteringRulesScreen extends Screen {
}
public static abstract class RuleEntry extends DynamicElementListWidget.ElementEntry<RuleEntry> {
- private final FilteringRuleInternal rule;
+ private final FilteringRule<?> rule;
- public RuleEntry(FilteringRuleInternal rule) {
+ public RuleEntry(FilteringRule<?> rule) {
this.rule = rule;
}
- public FilteringRuleInternal getRule() {
+ public FilteringRule<?> getRule() {
return rule;
}
@@ -181,14 +181,14 @@ public class FilteringRulesScreen extends Screen {
public static class DefaultRuleEntry extends RuleEntry {
private final Button configureButton;
private final Button deleteButton;
- private final BiFunction<FilteringEntry, Screen, Screen> screenFunction;
+ private final Function<Screen, Screen> screenFunction;
- public DefaultRuleEntry(FilteringRuleInternal rule, FilteringEntry entry, BiFunction<FilteringEntry, Screen, Screen> screenFunction) {
+ public DefaultRuleEntry(FilteringRule<?> rule, FilteringEntry entry, Function<Screen, Screen> screenFunction) {
super(rule);
- this.screenFunction = (screenFunction == null ? ((FilteringRuleType<FilteringRuleInternal>) rule.getType()).createEntryScreen(rule).orElse(null) : screenFunction);
+ this.screenFunction = (screenFunction == null ? ((FilteringRuleType<FilteringRule<?>>) rule.getType()).createEntryScreen(rule) : screenFunction);
configureButton = new Button(0, 0, 20, 20, Component.nullToEmpty(null), button -> {
entry.edited = true;
- Minecraft.getInstance().setScreen(this.screenFunction.apply(entry, Minecraft.getInstance().screen));
+ Minecraft.getInstance().setScreen(this.screenFunction.apply(Minecraft.getInstance().screen));
}) {
@Override
protected void renderBg(PoseStack matrices, Minecraft client, int mouseX, int mouseY) {
@@ -207,14 +207,14 @@ public class FilteringRulesScreen extends Screen {
});
}
configureButton.active = this.screenFunction != null;
- deleteButton.active = !(rule instanceof ManualFilteringRuleType);
+ deleteButton.active = !rule.getType().isSingular();
}
@Override
public void render(PoseStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isHovered, float delta) {
Minecraft client = Minecraft.getInstance();
{
- Component title = getRule().getType().getTitle();
+ Component title = ((FilteringRuleType<FilteringRule<?>>) getRule().getType()).getTitle(getRule());
int i = client.font.width(title);
if (i > entryWidth - 28) {
FormattedText titleTrimmed = FormattedText.composite(client.font.substrByWidth(title, entryWidth - 28 - client.font.width("...")), FormattedText.of("..."));
@@ -224,7 +224,7 @@ public class FilteringRulesScreen extends Screen {
}
}
{
- Component subtitle = getRule().getType().getSubtitle();
+ Component subtitle = ((FilteringRuleType<FilteringRule<?>>) getRule().getType()).getSubtitle(getRule());
int i = client.font.width(subtitle);
if (i > entryWidth - 28) {
FormattedText subtitleTrimmed = FormattedText.composite(client.font.substrByWidth(subtitle, entryWidth - 28 - client.font.width("...")), FormattedText.of("..."));
diff --git a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/AbstractFilteringRule.java b/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/AbstractFilteringRule.java
deleted file mode 100644
index 0035c4054..000000000
--- a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/AbstractFilteringRule.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * This file is licensed under the MIT License, part of Roughly Enough Items.
- * Copyright (c) 2018, 2019, 2020, 2021, 2022 shedaniel
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package me.shedaniel.rei.impl.client.entry.filtering;
-
-import me.shedaniel.rei.impl.client.entry.filtering.rules.ManualFilteringRule;
-import net.fabricmc.api.EnvType;
-import net.fabricmc.api.Environment;
-
-@Environment(EnvType.CLIENT)
-public abstract class AbstractFilteringRule implements FilteringRuleInternal {
- @Override
- public boolean equals(Object obj) {
- return getClass() == obj.getClass();
- }
-
- @Override
- public int hashCode() {
- return getClass().hashCode();
- }
-
- @Override
- public boolean isManual() {
- return this instanceof ManualFilteringRule;
- }
-}
diff --git a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringCache.java b/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringCache.java
deleted file mode 100644
index bb80560f6..000000000
--- a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringCache.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * This file is licensed under the MIT License, part of Roughly Enough Items.
- * Copyright (c) 2018, 2019, 2020, 2021, 2022 shedaniel
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package me.shedaniel.rei.impl.client.entry.filtering;
-
-import me.shedaniel.rei.api.client.entry.filtering.FilteringRule;
-import org.jetbrains.annotations.ApiStatus;
-import org.jetbrains.annotations.Nullable;
-
-@ApiStatus.Experimental
-public interface FilteringCache {
- @Nullable
- Object getCache(FilteringRule rule);
-}
diff --git a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringContext.java b/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringContext.java
deleted file mode 100644
index aa19e89b1..000000000
--- a/runtime-engine/filtering-entries/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/FilteringContext.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * This file is licensed under the MIT License, part of Roughly