aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-03-18 02:16:22 +0800
committershedaniel <daniel@shedaniel.me>2021-03-18 02:16:22 +0800
commit43ae584e12c7ed0755301eb34223f644a717183e (patch)
tree5d5eebf04f074fcb84062e1de3a67dcef36c9600
parent4e26c83691cf4ce0a19dc2244e31bd73e551865e (diff)
downloadRoughlyEnoughItems-43ae584e12c7ed0755301eb34223f644a717183e.tar.gz
RoughlyEnoughItems-43ae584e12c7ed0755301eb34223f644a717183e.tar.bz2
RoughlyEnoughItems-43ae584e12c7ed0755301eb34223f644a717183e.zip
Add EntryStack normalization
Signed-off-by: shedaniel <daniel@shedaniel.me>
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/ingredient/EntryStack.java7
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/ingredient/entry/EntryDefinition.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/ingredient/entry/EntryTypeRegistry.java13
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/ingredient/util/EntryStacks.java17
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/registry/display/Display.java1
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/modules/entries/EntryStackSubsetsMenuEntry.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/modules/entries/SubSubsetsMenuEntry.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/plugin/DefaultRuntimePlugin.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListEntryWidget.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/AmountIgnoredEntryStackWrapper.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/TypedEntryStack.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/entry/EmptyEntryDefinition.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/filtering/rules/ManualFilteringRule.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/registry/CategoryRegistryImpl.java1
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/subsets/SubsetsRegistryImpl.java4
19 files changed, 72 insertions, 31 deletions
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 eb8adb020..d39bd4dde 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
@@ -43,7 +43,6 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.GsonHelper;
import net.minecraft.util.Unit;
import org.jetbrains.annotations.ApiStatus;
-import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
@@ -99,20 +98,16 @@ public interface EntryStack<T> extends TextRepresentable, Renderer {
return null;
}
- @NotNull
EntryDefinition<T> getDefinition();
- @NotNull
default EntryType<T> getType() {
return getDefinition().getType();
}
- @NotNull
default Class<T> getValueType() {
return getDefinition().getValueType();
}
- @NotNull
default EntryRenderer<T> getRenderer() {
return getDefinition().getRenderer();
}
@@ -128,6 +123,8 @@ public interface EntryStack<T> extends TextRepresentable, Renderer {
return copy();
}
+ EntryStack<T> normalize();
+
@Deprecated
int hashCode();
diff --git a/api/src/main/java/me/shedaniel/rei/api/ingredient/entry/EntryDefinition.java b/api/src/main/java/me/shedaniel/rei/api/ingredient/entry/EntryDefinition.java
index a7d893b42..faa35334a 100644
--- a/api/src/main/java/me/shedaniel/rei/api/ingredient/entry/EntryDefinition.java
+++ b/api/src/main/java/me/shedaniel/rei/api/ingredient/entry/EntryDefinition.java
@@ -45,6 +45,8 @@ public interface EntryDefinition<T> {
T copy(EntryStack<T> entry, T value);
+ T normalize(EntryStack<T> entry, T value);
+
int hash(EntryStack<T> entry, T value, ComparisonContext context);
boolean equals(T o1, T o2, ComparisonContext context);
diff --git a/api/src/main/java/me/shedaniel/rei/api/ingredient/entry/EntryTypeRegistry.java b/api/src/main/java/me/shedaniel/rei/api/ingredient/entry/EntryTypeRegistry.java
index 2397b46a5..eb11722dc 100644
--- a/api/src/main/java/me/shedaniel/rei/api/ingredient/entry/EntryTypeRegistry.java
+++ b/api/src/main/java/me/shedaniel/rei/api/ingredient/entry/EntryTypeRegistry.java
@@ -79,6 +79,19 @@ public interface EntryTypeRegistry extends Reloadable {
Set<EntryDefinition<?>> values();
+ /**
+ * Register a bridge between two entry types, for example, item to fluid, this is used, to
+ * approximately match two entry stacks,.
+ * <p>
+ * For bridging two entry types, only 1 one way bridge is required, two way bridges are discouraged
+ * for performance issues.
+ *
+ * @param original the original entry type
+ * @param destination the destination entry type
+ * @param bridge the bridge to bridge between the original and the destination types
+ * @param <A> the type of the original entry type
+ * @param <B> the type of the destination entry type
+ */
<A, B> void registerBridge(EntryType<A> original, EntryType<B> destination, EntryTypeBridge<A, B> bridge);
<A, B> Iterable<EntryTypeBridge<A, B>> getBridgesFor(EntryType<A> original, EntryType<B> destination);
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 51618ecc8..cf6eb454d 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
@@ -29,6 +29,7 @@ import me.shedaniel.architectury.utils.Fraction;
import me.shedaniel.rei.api.gui.Renderer;
import me.shedaniel.rei.api.ingredient.EntryStack;
import me.shedaniel.rei.api.ingredient.entry.*;
+import net.minecraft.world.InteractionResult;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Ingredient;
@@ -138,27 +139,29 @@ public final class EntryStacks {
if (left == right) return true;
EntryType<A> leftType = left.getType();
EntryType<B> rightType = right.getType();
- if (leftType == rightType)
+ if (leftType == rightType) {
return left.equals((EntryStack<A>) right, 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().shouldSwing()) {
+ if (holder.getResult() == InteractionResult.SUCCESS) {
Iterator<EntryStack<B>> iterator = holder.getObject().iterator();
while (iterator.hasNext()) {
- EntryStack<B> bridged = iterator.next();
- if (bridged.equals(right, context))
+ if (iterator.next().equals(right, context)) {
return true;
+ }
}
}
}
for (EntryTypeBridge<B, A> bridge : EntryTypeRegistry.getInstance().getBridgesFor(rightType, leftType)) {
InteractionResultHolder<Stream<EntryStack<A>>> holder = bridge.bridge(right);
- if (holder.getResult().shouldSwing()) {
+ if (holder.getResult() == InteractionResult.SUCCESS) {
Iterator<EntryStack<A>> iterator = holder.getObject().iterator();
while (iterator.hasNext()) {
- EntryStack<A> bridged = iterator.next();
- if (bridged.equals(left, context))
+ if (iterator.next().equals(left, context)) {
return true;
+ }
}
}
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/registry/display/Display.java b/api/src/main/java/me/shedaniel/rei/api/registry/display/Display.java
index 8f131ca3f..8eb95728c 100644
--- a/api/src/main/java/me/shedaniel/rei/api/registry/display/Display.java
+++ b/api/src/main/java/me/shedaniel/rei/api/registry/display/Display.java
@@ -30,7 +30,6 @@ import java.util.List;
import java.util.Optional;
public interface Display {
-
/**
* @return a list of inputs
*/
diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/modules/entries/EntryStackSubsetsMenuEntry.java b/runtime/src/main/java/me/shedaniel/rei/gui/modules/entries/EntryStackSubsetsMenuEntry.java
index 89cea637c..43fe57510 100644
--- a/runtime/src/main/java/me/shedaniel/rei/gui/modules/entries/EntryStackSubsetsMenuEntry.java
+++ b/runtime/src/main/java/me/shedaniel/rei/gui/modules/entries/EntryStackSubsetsMenuEntry.java
@@ -100,7 +100,7 @@ public class EntryStackSubsetsMenuEntry extends MenuEntry {
if (isFiltered()) {
filteredStacks.removeIf(next -> EntryStacks.equalsIgnoreCount(next, stack));
} else {
- filteredStacks.add(stack.copy());
+ filteredStacks.add(stack.normalize());
}
Menu menu = ((ContainerScreenOverlay) REIHelper.getInstance().getOverlay().get()).getOverlayMenu();
if (menu != null)
diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/modules/entries/SubSubsetsMenuEntry.java b/runtime/src/main/java/me/shedaniel/rei/gui/modules/entries/SubSubsetsMenuEntry.java
index 095e0320f..7efe4f886 100644
--- a/runtime/src/main/java/me/shedaniel/rei/gui/modules/entries/SubSubsetsMenuEntry.java
+++ b/runtime/src/main/java/me/shedaniel/rei/gui/modules/entries/SubSubsetsMenuEntry.java
@@ -175,7 +175,7 @@ public class SubSubsetsMenuEntry extends MenuEntry {
if (!filtered) {
filteredStacks.removeIf(next -> EntryStacks.equalsIgnoreCount(next, ((EntryStackSubsetsMenuEntry) entry).stack));
} else {
- filteredStacks.add(((EntryStackSubsetsMenuEntry) entry).stack.copy());
+ filteredStacks.add(((EntryStackSubsetsMenuEntry) entry).stack.normalize());
}
}
if (subsetsMenu != null)
diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/DefaultRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/DefaultRuntimePlugin.java
index b0f2a7ebf..f12b169fd 100644
--- a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/DefaultRuntimePlugin.java
+++ b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/DefaultRuntimePlugin.java
@@ -193,12 +193,12 @@ public class DefaultRuntimePlugin implements REIPlugin {
private final int hashIgnoreAmount;
public EntryStackFavoriteEntry(EntryStack<?> stack) {
- this.stack = stack.copy();
+ this.stack = stack.normalize();
if (this.stack.getType() == VanillaEntryTypes.ITEM)
this.stack.setting(EntryStack.Settings.RENDER_COUNTS, EntryStack.Settings.FALSE);
else if (this.stack.getType() == VanillaEntryTypes.FLUID)
this.stack.setting(EntryStack.Settings.Fluid.AMOUNT_TOOLTIP, CANCEL_FLUID_AMOUNT);
- this.hashIgnoreAmount = stack.hash(ComparisonContext.IGNORE_COUNT);
+ this.hashIgnoreAmount = EntryStacks.hashIgnoreCount(this.stack);
}
@Override
@@ -237,7 +237,7 @@ public class DefaultRuntimePlugin implements REIPlugin {
@Override
public FavoriteEntry copy() {
- return new EntryStackFavoriteEntry(stack.copy());
+ return new EntryStackFavoriteEntry(stack.normalize());
}
@Override
@@ -249,7 +249,7 @@ public class DefaultRuntimePlugin implements REIPlugin {
public boolean isSame(FavoriteEntry other) {
if (!(other instanceof EntryStackFavoriteEntry)) return false;
EntryStackFavoriteEntry that = (EntryStackFavoriteEntry) other;
- return EntryStacks.equals(stack, that.stack, ComparisonContext.IGNORE_COUNT);
+ return EntryStacks.equalsIgnoreCount(stack, that.stack);
}
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java
index 0db3e1705..2123001c6 100644
--- a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java
+++ b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java
@@ -86,11 +86,18 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack>, EntryS
}
@Override
- public @NotNull FluidStack copy(EntryStack<FluidStack> entry, FluidStack value) {
+ public FluidStack copy(EntryStack<FluidStack> entry, FluidStack value) {
return value.copy();
}
@Override
+ public FluidStack normalize(EntryStack<FluidStack> entry, FluidStack value) {
+ FluidStack copy = value.copy();
+ copy.setAmount(FluidStack.bucketAmount());
+ return copy;
+ }
+
+ @Override
public int hash(EntryStack<FluidStack> entry, FluidStack value, ComparisonContext context) {
int code = 1;
code = 31 * code + value.getFluid().hashCode();
diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java
index 66d460784..4bd13e725 100644
--- a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java
+++ b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java
@@ -92,11 +92,18 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer
}
@Override
- public @NotNull ItemStack copy(EntryStack<ItemStack> entry, ItemStack value) {
+ public ItemStack copy(EntryStack<ItemStack> entry, ItemStack value) {
return value.copy();
}
@Override
+ public ItemStack normalize(EntryStack<ItemStack> entry, ItemStack value) {
+ ItemStack copy = value.copy();
+ copy.setCount(127);
+ return copy;
+ }
+
+ @Override
public int hash(EntryStack<ItemStack> entry, ItemStack value, ComparisonContext context) {
int code = 1;
code = 31 * code + System.identityHashCode(value.getItem());
diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListEntryWidget.java b/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListEntryWidget.java
index c3f41bcb2..d2e1e822e 100644
--- a/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListEntryWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListEntryWidget.java
@@ -107,7 +107,7 @@ public abstract class EntryListEntryWidget extends EntryWidget {
entry = EntryStacks.of(bucketItem);
}
}
- return EntryStacks.equals(entry, stack, ComparisonContext.IGNORE_COUNT);
+ return EntryStacks.equalsIgnoreCount(entry, stack);
}
}
return super.cancelDeleteItems(stack);
diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java
index 9ae643bd1..e95cfec59 100644
--- a/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java
@@ -535,7 +535,7 @@ public class EntryListWidget extends WidgetWithBounds {
List<EntryStack<?>> filtered = Lists.newArrayList();
for (EntryStack<?> stack : partitionStacks) {
if (canLastSearchTermsBeAppliedTo(stack)) {
- if (workingItems != null && !workingItems.contains(stack.hash(ComparisonContext.IGNORE_COUNT)))
+ if (workingItems != null && !workingItems.contains(EntryStacks.hashIgnoreCount(stack)))
continue;
filtered.add(stack.rewrap().setting(EntryStack.Settings.RENDER_COUNTS, EntryStack.Settings.FALSE));
}
@@ -556,7 +556,7 @@ public class EntryListWidget extends WidgetWithBounds {
} else {
for (EntryStack<?> stack : stacks) {
if (canLastSearchTermsBeAppliedTo(stack)) {
- if (workingItems != null && !workingItems.contains(stack.hash(ComparisonContext.IGNORE_COUNT)))
+ if (workingItems != null && !workingItems.contains(EntryStacks.hashIgnoreCount(stack)))
continue;
list.add(stack.rewrap().setting(EntryStack.Settings.RENDER_COUNTS, EntryStack.Settings.FALSE));
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java b/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java
index 586a894f6..68c783982 100644
--- a/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java
@@ -406,7 +406,7 @@ public class EntryWidget extends Slot implements DraggableStackProvider {
@ApiStatus.Internal
protected FavoriteEntry asFavoriteEntry() {
- return FavoriteEntry.fromEntryStack(getCurrentEntry().copy());
+ return FavoriteEntry.fromEntryStack(getCurrentEntry().normalize());
}
@ApiStatus.Internal
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/AmountIgnoredEntryStackWrapper.java b/runtime/src/main/java/me/shedaniel/rei/impl/AmountIgnoredEntryStackWrapper.java
index 829026318..344173e15 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/AmountIgnoredEntryStackWrapper.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/AmountIgnoredEntryStackWrapper.java
@@ -24,7 +24,7 @@
package me.shedaniel.rei.impl;
import me.shedaniel.rei.api.ingredient.EntryStack;
-import me.shedaniel.rei.api.ingredient.entry.ComparisonContext;
+import me.shedaniel.rei.api.ingredient.util.EntryStacks;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import org.jetbrains.annotations.ApiStatus;
@@ -39,7 +39,7 @@ public class AmountIgnoredEntryStackWrapper {
public AmountIgnoredEntryStackWrapper(EntryStack<?> stack) {
this.stack = Objects.requireNonNull(stack);
- this.hash = stack.hash(ComparisonContext.IGNORE_COUNT);
+ this.hash = EntryStacks.hashIgnoreCount(stack);
}
@Override
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/TypedEntryStack.java b/runtime/src/main/java/me/shedaniel/rei/impl/TypedEntryStack.java
index 6c6da8652..f5c53c4a4 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/TypedEntryStack.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/TypedEntryStack.java
@@ -94,6 +94,15 @@ public class TypedEntryStack<T> extends AbstractEntryStack<T> {
}
@Override
+ public EntryStack<T> normalize() {
+ TypedEntryStack<T> stack = new TypedEntryStack<>(definition, getDefinition().normalize(this, value));
+ for (Short2ObjectMap.Entry<Object> entry : getSettings().short2ObjectEntrySet()) {
+ stack.setting(EntryStack.Settings.getById(entry.getShortKey()), entry.getValue());
+ }
+ return stack;
+ }
+
+ @Override
public boolean equals(EntryStack<T> other, ComparisonContext context) {
return this.getDefinition().equals(value, other.getValue(), context);
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/entry/EmptyEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/impl/entry/EmptyEntryDefinition.java
index 59fa733ad..81614a3fb 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/entry/EmptyEntryDefinition.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/entry/EmptyEntryDefinition.java
@@ -97,6 +97,11 @@ public enum EmptyEntryDefinition implements EntryDefinition<Object>, EntrySerial
}
@Override
+ public Object normalize(EntryStack<Object> entry, Object value) {
+ return value;
+ }
+
+ @Override
public int hash(EntryStack<Object> entry, Object value, ComparisonContext context) {
return ordinal();
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/filtering/rules/ManualFilteringRule.java b/runtime/src/main/java/me/shedaniel/rei/impl/filtering/rules/ManualFilteringRule.java
index 89477641b..466ce6e36 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/filtering/rules/ManualFilteringRule.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/filtering/rules/ManualFilteringRule.java
@@ -62,7 +62,7 @@ public class ManualFilteringRule extends AbstractFilteringRule<ManualFilteringRu
private void processList(Collection<EntryStack<?>> stacks, FilteringResult result) {
IntSet filteredStacks = CollectionUtils.mapParallel(ConfigObject.getInstance().getFilteredStacks(), EntryStacks::hashIgnoreCount, IntOpenHashSet::new);
- result.hide(stacks.parallelStream().filter(stack -> filteredStacks.contains(stack.hash(ComparisonContext.IGNORE_COUNT))).collect(Collectors.toList()));
+ result.hide(stacks.parallelStream().filter(stack -> filteredStacks.contains(EntryStacks.hashIgnoreCount(stack))).collect(Collectors.toList()));
}
@Override
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/registry/CategoryRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/registry/CategoryRegistryImpl.java
index 6283451b9..1d49bc6e3 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/registry/CategoryRegistryImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/registry/CategoryRegistryImpl.java
@@ -132,6 +132,5 @@ public class CategoryRegistryImpl implements CategoryRegistry, Reloadable {
public ResourceLocation getIdentifier() {
return this.category.getIdentifier();
}
-
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/subsets/SubsetsRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/subsets/SubsetsRegistryImpl.java
index 5652efaab..816f28113 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/subsets/SubsetsRegistryImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/subsets/SubsetsRegistryImpl.java
@@ -68,14 +68,14 @@ public class SubsetsRegistryImpl implements SubsetsRegistry {
@Override
public void registerPathEntry(@NotNull String path, @NotNull EntryStack<?> stack) {
- getOrCreatePathEntries(path).add(stack.copy().setting(EntryStack.Settings.CHECK_AMOUNT, EntryStack.Settings.FALSE).setting(EntryStack.Settings.RENDER_COUNTS, EntryStack.Settings.FALSE).setting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE));
+ getOrCreatePathEntries(path).add(stack.normalize().setting(EntryStack.Settings.CHECK_AMOUNT, EntryStack.Settings.FALSE).setting(EntryStack.Settings.RENDER_COUNTS, EntryStack.Settings.FALSE).setting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE));
}
@Override
public void registerPathEntries(@NotNull String path, @NotNull Collection<? extends EntryStack<?>> stacks) {
Set<EntryStack<?>> entries = getOrCreatePathEntries(path);
for (EntryStack<?> stack : stacks) {
- entries.add(stack.copy().setting(EntryStack.Settings.CHECK_AMOUNT, EntryStack.Settings.FALSE).setting(EntryStack.Settings.RENDER_COUNTS, EntryStack.Settings.FALSE).setting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE));
+ entries.add(stack.normalize().setting(EntryStack.Settings.CHECK_AMOUNT, EntryStack.Settings.FALSE).setting(EntryStack.Settings.RENDER_COUNTS, EntryStack.Settings.FALSE).setting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE));
}
}