diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-03-29 00:29:50 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-03-29 00:29:50 +0800 |
| commit | 096a01c606f491f2bb7a07c3df8ac83f6d313086 (patch) | |
| tree | b8f788dd6ed087ef76a5c81d3b3378bc3b1cf7b3 | |
| parent | 7b44adc2bd4e1ef21cd229f5b52d3ddae58a8b20 (diff) | |
| download | RoughlyEnoughItems-096a01c606f491f2bb7a07c3df8ac83f6d313086.tar.gz RoughlyEnoughItems-096a01c606f491f2bb7a07c3df8ac83f6d313086.tar.bz2 RoughlyEnoughItems-096a01c606f491f2bb7a07c3df8ac83f6d313086.zip | |
Use long for hashing the EntryStack
Signed-off-by: shedaniel <daniel@shedaniel.me>
19 files changed, 47 insertions, 46 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntry.java b/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntry.java index 9ca3b960e..662338b0c 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntry.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntry.java @@ -76,7 +76,7 @@ public abstract class FavoriteEntry { return Optional.empty(); } - public abstract int hashIgnoreAmount(); + public abstract long hashIgnoreAmount(); public abstract FavoriteEntry copy(); @@ -96,7 +96,7 @@ public abstract class FavoriteEntry { public int hashCode() { int result = 1; result = 31 * result + getType().hashCode(); - result = 31 * result + hashIgnoreAmount(); + result = 31 * result + Long.hashCode(hashIgnoreAmount()); return result; } diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java index 9765edb99..c4b2205ae 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java @@ -24,8 +24,8 @@ package me.shedaniel.rei.api.client.gui; import com.mojang.blaze3d.vertex.PoseStack; -import it.unimi.dsi.fastutil.ints.IntOpenHashSet; -import it.unimi.dsi.fastutil.ints.IntSet; +import it.unimi.dsi.fastutil.longs.LongOpenHashSet; +import it.unimi.dsi.fastutil.longs.LongSet; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.gui.widgets.Slot; @@ -84,12 +84,12 @@ public class SimpleDisplayRenderer extends DisplayRenderer implements WidgetHold } public static boolean equalsList(EntryIngredient left, EntryIngredient right) { - IntSet leftBytes = new IntOpenHashSet(left.size()); + LongSet leftBytes = new LongOpenHashSet(left.size()); for (EntryStack<?> entryStack : left) { leftBytes.add(EntryStacks.hashExact(entryStack)); } if (leftBytes.size() > right.size()) return false; - IntSet rightBytes = new IntOpenHashSet(right.size()); + LongSet rightBytes = new LongOpenHashSet(right.size()); for (EntryStack<?> entryStack : right) { rightBytes.add(EntryStacks.hashExact(entryStack)); diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java index 04ea05d7f..2b41f0cd7 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java @@ -59,7 +59,7 @@ public interface EntryDefinition<T> { T normalize(EntryStack<T> entry, T value); - int hash(EntryStack<T> entry, T value, ComparisonContext context); + long 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/common/util/EntryStacks.java b/api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java index 58cf1ada5..c8b1b86e9 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java @@ -157,7 +157,7 @@ public final class EntryStacks { * @param <T> the type of the stack * @return the hash code of the {@link ComparisonContext#EXACT} context */ - public static <T> int hashExact(EntryStack<T> stack) { + public static <T> long hashExact(EntryStack<T> stack) { return stack.getDefinition().hash(stack, stack.getValue(), ComparisonContext.EXACT); } @@ -171,7 +171,7 @@ public final class EntryStacks { * @param <T> the type of the stack * @return the hash code of the {@link ComparisonContext#FUZZY} context */ - public static <T> int hashFuzzy(EntryStack<T> stack) { + public static <T> long hashFuzzy(EntryStack<T> stack) { return stack.getDefinition().hash(stack, stack.getValue(), ComparisonContext.FUZZY); } diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/GameModeFavoriteEntry.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/GameModeFavoriteEntry.java index 1e45f89fd..d3d00d752 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/GameModeFavoriteEntry.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/GameModeFavoriteEntry.java @@ -164,7 +164,7 @@ public class GameModeFavoriteEntry extends FavoriteEntry { } @Override - public int hashIgnoreAmount() { + public long hashIgnoreAmount() { return gameMode == null ? -1 : gameMode.ordinal(); } diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry.java index 13c66e1b0..c48e8501a 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry.java @@ -170,7 +170,7 @@ public class WeatherFavoriteEntry extends FavoriteEntry { } @Override - public int hashIgnoreAmount() { + public long hashIgnoreAmount() { return weather == null ? -1 : weather.ordinal(); } diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index 3f7e762a7..b7edd47a7 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -272,7 +272,7 @@ public class RoughlyEnoughItemsCore { } @Override - public int hashIgnoreAmount() { + public long hashIgnoreAmount() { return getUnwrapped().hashIgnoreAmount(); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java index 0fe8aac0b..3fd155860 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java @@ -43,12 +43,12 @@ import java.util.*; import java.util.function.Consumer; @ApiStatus.Internal -public class FilteringEntry extends AbstractConfigListEntry<List<EntryStack>> { +public class FilteringEntry extends AbstractConfigListEntry<List<EntryStack<?>>> { private int width; - Consumer<List<EntryStack>> saveConsumer; + Consumer<List<EntryStack<?>>> saveConsumer; Consumer<List<FilteringRule<?>>> rulesSaveConsumer; - List<EntryStack> defaultValue; - Set<EntryStack> configFiltered; + List<EntryStack<?>> defaultValue; + Set<EntryStack<?>> configFiltered; List<FilteringRule<?>> rules; boolean edited = false; final FilteringScreen filteringScreen = new FilteringScreen(this); @@ -59,7 +59,7 @@ public class FilteringEntry extends AbstractConfigListEntry<List<EntryStack>> { }); private final List<GuiEventListener> children = ImmutableList.of(buttonWidget); - public FilteringEntry(int width, List<EntryStack> configFiltered, List<FilteringRule<?>> rules, List<EntryStack> defaultValue, Consumer<List<EntryStack>> saveConsumer, Consumer<List<FilteringRule<?>>> 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)); @@ -71,12 +71,12 @@ public class FilteringEntry extends AbstractConfigListEntry<List<EntryStack>> { } @Override - public List<EntryStack> getValue() { + public List<EntryStack<?>> getValue() { return Lists.newArrayList(configFiltered); } @Override - public Optional<List<EntryStack>> getDefaultValue() { + public Optional<List<EntryStack<?>>> getDefaultValue() { return Optional.ofNullable(defaultValue); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringEntry.java index bfc414c67..35f505ca0 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringEntry.java @@ -41,15 +41,15 @@ import java.util.Optional; import java.util.function.Consumer; @ApiStatus.Internal -public class NoFilteringEntry extends AbstractConfigListEntry<List<EntryStack>> { +public class NoFilteringEntry extends AbstractConfigListEntry<List<EntryStack<?>>> { private int width; - private Consumer<List<EntryStack>> saveConsumer; - private List<EntryStack> defaultValue; - private List<EntryStack> configFiltered; + private Consumer<List<EntryStack<?>>> saveConsumer; + private List<EntryStack<?>> defaultValue; + private List<EntryStack<?>> configFiltered; private final AbstractWidget buttonWidget = new Button(0, 0, 0, 20, new TranslatableComponent("config.roughlyenoughitems.filteredEntries.loadWorldFirst"), button -> {}); private final List<GuiEventListener> children = ImmutableList.of(buttonWidget); - public NoFilteringEntry(int width, List<EntryStack> configFiltered, List<EntryStack> defaultValue, Consumer<List<EntryStack>> saveConsumer) { + public NoFilteringEntry(int width, List<EntryStack<?>> configFiltered, List<EntryStack<?>> defaultValue, Consumer<List<EntryStack<?>>> saveConsumer) { super(NarratorChatListener.NO_TITLE, false); this.width = width; this.configFiltered = configFiltered; @@ -58,12 +58,12 @@ public class NoFilteringEntry extends AbstractConfigListEntry<List<EntryStack>> } @Override - public List<EntryStack> getValue() { + public List<EntryStack<?>> getValue() { return configFiltered; } @Override - public Optional<List<EntryStack>> getDefaultValue() { + public Optional<List<EntryStack<?>>> getDefaultValue() { return Optional.ofNullable(defaultValue); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/ManualFilteringRule.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/ManualFilteringRule.java index d5a2cfde3..361e506f5 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/ManualFilteringRule.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/ManualFilteringRule.java @@ -23,8 +23,8 @@ package me.shedaniel.rei.impl.client.entry.filtering.rules; -import it.unimi.dsi.fastutil.ints.IntOpenHashSet; -import it.unimi.dsi.fastutil.ints.IntSet; +import it.unimi.dsi.fastutil.longs.LongOpenHashSet; +import it.unimi.dsi.fastutil.longs.LongSet; import me.shedaniel.rei.api.client.config.ConfigObject; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.util.CollectionUtils; @@ -59,7 +59,7 @@ public class ManualFilteringRule extends AbstractFilteringRule<ManualFilteringRu } private void processList(Collection<EntryStack<?>> stacks, FilteringResult result) { - IntSet filteredStacks = CollectionUtils.mapParallel(ConfigObject.getInstance().getFilteredStacks(), EntryStacks::hashExact, IntOpenHashSet::new); + LongSet filteredStacks = CollectionUtils.mapParallel(ConfigObject.getInstance().getFilteredStacks(), EntryStacks::hashExact, LongOpenHashSet::new); result.hide(stacks.parallelStream().filter(stack -> filteredStacks.contains(EntryStacks.hashExact(stack))).collect(Collectors.toList())); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/AsyncSearchManager.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/AsyncSearchManager.java index 43daccc7b..3e334ce6d 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/AsyncSearchManager.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/AsyncSearchManager.java @@ -24,8 +24,8 @@ package me.shedaniel.rei.impl.client.search; import com.google.common.collect.Lists; -import it.unimi.dsi.fastutil.ints.IntOpenHashSet; -import it.unimi.dsi.fastutil.ints.IntSet; +import it.unimi.dsi.fastutil.longs.LongOpenHashSet; +import it.unimi.dsi.fastutil.longs.LongSet; import me.shedaniel.rei.api.client.config.ConfigManager; import me.shedaniel.rei.api.client.config.ConfigObject; import me.shedaniel.rei.api.client.registry.entry.EntryRegistry; @@ -65,7 +65,7 @@ public class AsyncSearchManager { public static AsyncSearchManager createDefault() { return new AsyncSearchManager(EntryRegistry.getInstance()::getPreFilteredList, () -> { boolean checkCraftable = ConfigManager.getInstance().isCraftableOnlyEnabled() && !ContainerScreenOverlay.getInstance().inventoryStacks.isEmpty(); - IntSet workingItems = checkCraftable ? new IntOpenHashSet() : null; + LongSet workingItems = checkCraftable ? new LongOpenHashSet() : null; if (checkCraftable) { for (EntryStack<?> stack : Views.getInstance().findCraftableEntriesByMaterials(ContainerScreenOverlay.getInstance().inventoryStacks)) { workingItems.add(EntryStacks.hashExact(stack)); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java index 9e7d407b7..e525e21ae 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java @@ -176,7 +176,7 @@ public abstract class AbstractEntryStack<A> extends AbstractRenderer implements @Override public int hashCode() { - return EntryStacks.hashExact(this); + return Long.hashCode(EntryStacks.hashExact(this)); } @Override diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java index 94169c265..ab584ac21 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java @@ -70,8 +70,9 @@ public class EntryRegistryImpl implements EntryRegistry { @Override public void startReload() { entries.clear(); - if (reloadingRegistry != null) + if (reloadingRegistry != null) { reloadingRegistry.clear(); + } reloadingRegistry = Lists.newArrayListWithCapacity(Registry.ITEM.keySet().size() + 100); preFilteredList.clear(); reloading = true; @@ -132,7 +133,7 @@ public class EntryRegistryImpl implements EntryRegistry { RoughlyEnoughItemsCore.LOGGER.debug("Refiltered %d entries with %d rules in %s.", entries.size() - preFilteredList.size(), rules.size(), stopwatch.stop().toString()); } - static <T> Predicate<T> not(Predicate<? super T> target) { + private static <T> Predicate<T> not(Predicate<? super T> target) { Objects.requireNonNull(target); return (Predicate<T>) target.negate(); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java index 2df769391..fb7590a82 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java @@ -95,7 +95,7 @@ public class BuiltinEntryDefinition<T> implements EntryDefinition<T>, EntrySeria } @Override - public int hash(EntryStack<T> entry, T value, ComparisonContext context) { + public long hash(EntryStack<T> entry, T value, ComparisonContext context) { return empty ? 0 : Objects.hash(value.getClass().getName(), value); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/plugins/PluginManagerImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/plugins/PluginManagerImpl.java index cdac8b751..bc4114379 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/plugins/PluginManagerImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/plugins/PluginManagerImpl.java @@ -158,6 +158,7 @@ public class PluginManagerImpl<P extends REIPlugin<?>> implements PluginManager< @Override public void startReload() { try { + arePluginsLoading = true; long startTime = Util.getMillis(); MutablePair<Stopwatch, String> sectionData = new MutablePair<>(Stopwatch.createUnstarted(), ""); @@ -170,7 +171,6 @@ public class PluginManagerImpl<P extends REIPlugin<?>> implements PluginManager< } } - arePluginsLoading = true; List<P> plugins = new ArrayList<>(getPlugins().toList()); plugins.sort(Comparator.comparingInt(P::getPriority).reversed()); RoughlyEnoughItemsCore.LOGGER.info("Reloading Plugin Manager [%s], registered %d plugins: %s", pluginClass.getSimpleName(), plugins.size(), CollectionUtils.mapAndJoinToString(plugins, REIPlugin::getPluginName, ", ")); @@ -192,8 +192,6 @@ public class PluginManagerImpl<P extends REIPlugin<?>> implements PluginManager< } } - arePluginsLoading = false; - try (SectionClosable refilter = section(sectionData, "entry-registry-refilter")) { EntryRegistry.getInstance().refilter(); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/util/HashedEntryStackWrapper.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/util/HashedEntryStackWrapper.java index e317ec523..2e8fc2098 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/util/HashedEntryStackWrapper.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/util/HashedEntryStackWrapper.java @@ -35,21 +35,23 @@ import java.util.Objects; @Environment(EnvType.CLIENT) public class HashedEntryStackWrapper { private final EntryStack<?> stack; - private int hash; + private long hash; + private int hashInt; public HashedEntryStackWrapper(EntryStack<?> stack) { this.stack = Objects.requireNonNull(stack); this.hash = EntryStacks.hashExact(stack); + this.hashInt = Long.hashCode(this.hash); } @Override public boolean equals(Object o) { - return o instanceof HashedEntryStackWrapper && hashCode() == o.hashCode(); + return o instanceof HashedEntryStackWrapper && hash == ((HashedEntryStackWrapper) o).hash; } @Override public int hashCode() { - return hash; + return hashInt; } public boolean isEmpty() { diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java index d4049d2e4..3b547fe2f 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java @@ -189,7 +189,7 @@ public class DefaultClientRuntimePlugin implements REIClientPlugin { private static class EntryStackFavoriteEntry extends FavoriteEntry { private static final Function<EntryStack<?>, String> CANCEL_FLUID_AMOUNT = s -> null; private final EntryStack<?> stack; - private final int hashIgnoreAmount; + private final long hashIgnoreAmount; public EntryStackFavoriteEntry(EntryStack<?> stack) { this.stack = stack.normalize(); @@ -226,7 +226,7 @@ public class DefaultClientRuntimePlugin implements REIClientPlugin { } @Override - public int hashIgnoreAmount() { + public long hashIgnoreAmount() { return hashIgnoreAmount; } diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java index 750dae613..aebfa33f9 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java @@ -112,7 +112,7 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack>, EntryS } @Override - public int hash(EntryStack<FluidStack> entry, FluidStack value, ComparisonContext context) { + public long hash(EntryStack<FluidStack> entry, FluidStack value, ComparisonContext context) { int code = 1; code = 31 * code + value.getFluid().hashCode(); code = 31 * code + (context.isFuzzy() || !value.hasTag() ? 0 : value.getTag().hashCode()); diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java index 8f995af67..292ca0fb8 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java @@ -108,7 +108,7 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer } @Override - public int hash(EntryStack<ItemStack> entry, ItemStack value, ComparisonContext context) { + public long hash(EntryStack<ItemStack> entry, ItemStack value, ComparisonContext context) { int code = 1; code = 31 * code + System.identityHashCode(value.getItem()); code = 31 * code + (context.isFuzzy() ? 0 : Long.hashCode(ItemComparatorRegistry.getInstance().hashOf(value))); |
