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 /runtime/src/main | |
| 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>
Diffstat (limited to 'runtime/src/main')
13 files changed, 36 insertions, 35 deletions
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))); |
