aboutsummaryrefslogtreecommitdiff
path: root/runtime/src
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/src')
-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
14 files changed, 45 insertions, 18 deletions
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));
}
}