diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-04-06 15:47:20 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-04-06 15:47:20 +0800 |
| commit | 966bbd7fe43237f9b1aa6cfd94cf5e34a9bcfddf (patch) | |
| tree | 7c19b609f1d61f0afde3947742056dbb8b17a396 /runtime/src/main/java/me/shedaniel/rei/impl/common | |
| parent | 5b0c5838978fc74f783c6dcff2983af4fb97d912 (diff) | |
| download | RoughlyEnoughItems-966bbd7fe43237f9b1aa6cfd94cf5e34a9bcfddf.tar.gz RoughlyEnoughItems-966bbd7fe43237f9b1aa6cfd94cf5e34a9bcfddf.tar.bz2 RoughlyEnoughItems-966bbd7fe43237f9b1aa6cfd94cf5e34a9bcfddf.zip | |
Expose draggable stacks
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'runtime/src/main/java/me/shedaniel/rei/impl/common')
6 files changed, 51 insertions, 27 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/ItemComparatorRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/ItemComparatorRegistryImpl.java index 44614c8c9..e6d462cfd 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/ItemComparatorRegistryImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/comparison/ItemComparatorRegistryImpl.java @@ -23,6 +23,7 @@ package me.shedaniel.rei.impl.common.entry.comparison; +import me.shedaniel.rei.api.common.entry.comparison.ComparisonContext; import me.shedaniel.rei.api.common.entry.comparison.ItemComparator; import me.shedaniel.rei.api.common.entry.comparison.ItemComparatorRegistry; import me.shedaniel.rei.api.common.plugins.REIPlugin; @@ -60,11 +61,21 @@ public class ItemComparatorRegistryImpl implements ItemComparatorRegistry { } @Override - public long hashOf(ItemStack stack) { + public long hashOf(ComparisonContext context, ItemStack stack) { ItemComparator comparator = comparators.get(stack.getItem()); if (comparator != null) { - return comparator.hash(stack); + return comparator.hash(context, stack); } return 1; } + + @Override + public boolean containsComparator(Item item) { + return comparators.containsKey(item); + } + + @Override + public int comparatorSize() { + return this.comparators.size(); + } } 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 ab584ac21..0275db9a4 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 @@ -49,6 +49,7 @@ import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; import java.util.*; +import java.util.function.LongPredicate; import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -153,7 +154,7 @@ public class EntryRegistryImpl implements EntryRegistry { } @Override - public void registerEntryAfter(@Nullable EntryStack<?> afterEntry, EntryStack<?> stack) { + public void addEntryAfter(@Nullable EntryStack<?> afterEntry, EntryStack<?> stack) { if (reloading) { int index = afterEntry != null ? reloadingRegistry.lastIndexOf(new HashedEntryStackWrapper(afterEntry)) : -1; if (index >= 0) { @@ -168,7 +169,7 @@ public class EntryRegistryImpl implements EntryRegistry { } @Override - public void registerEntriesAfter(@Nullable EntryStack<?> afterEntry, Collection<? extends EntryStack<?>> stacks) { + public void addEntriesAfter(@Nullable EntryStack<?> afterEntry, Collection<? extends EntryStack<?>> stacks) { if (reloading) { int index = afterEntry != null ? reloadingRegistry.lastIndexOf(new HashedEntryStackWrapper(afterEntry)) : -1; if (index >= 0) { @@ -207,4 +208,13 @@ public class EntryRegistryImpl implements EntryRegistry { return entries.removeIf((Predicate<EntryStack<?>>) predicate); } } + + @Override + public boolean removeEntryExactHashIf(LongPredicate predicate) { + if (reloading) { + return reloadingRegistry.removeIf(wrapper -> predicate.test(wrapper.hashExact())); + } else { + return entries.removeIf(stack -> predicate.test(EntryStacks.hashExact(stack))); + } + } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/fluid/FluidSupportProviderImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/fluid/FluidSupportProviderImpl.java index 5475d92c4..736b38e3e 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/fluid/FluidSupportProviderImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/fluid/FluidSupportProviderImpl.java @@ -23,6 +23,7 @@ package me.shedaniel.rei.impl.common.fluid; +import com.google.common.collect.ForwardingList; import com.google.common.collect.Lists; import me.shedaniel.architectury.fluid.FluidStack; import me.shedaniel.rei.api.common.entry.EntryStack; @@ -34,14 +35,16 @@ import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; +import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.stream.Stream; @ApiStatus.Internal -public class FluidSupportProviderImpl implements FluidSupportProvider { +public class FluidSupportProviderImpl extends ForwardingList<FluidSupportProvider.Provider> implements FluidSupportProvider { private final List<Provider> providers = Lists.newCopyOnWriteArrayList(); + private final List<Provider> immutable = Collections.unmodifiableList(providers); @Override public void acceptPlugin(REIPlugin<?> plugin) { @@ -74,4 +77,9 @@ public class FluidSupportProviderImpl implements FluidSupportProvider { } return Optional.empty(); } + + @Override + protected List<Provider> delegate() { + return immutable; + } } 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 bc4114379..a9ac12590 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 @@ -28,11 +28,7 @@ import com.google.common.base.Stopwatch; import com.google.common.collect.FluentIterable; import com.google.common.collect.Iterables; import me.shedaniel.rei.RoughlyEnoughItemsCore; -import me.shedaniel.rei.api.client.registry.category.CategoryRegistry; -import me.shedaniel.rei.api.client.registry.display.DisplayCategory; -import me.shedaniel.rei.api.client.registry.display.DisplayRegistry; import me.shedaniel.rei.api.client.registry.entry.EntryRegistry; -import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry; import me.shedaniel.rei.api.common.plugins.PluginManager; import me.shedaniel.rei.api.common.plugins.PluginView; import me.shedaniel.rei.api.common.plugins.REIPlugin; @@ -42,7 +38,6 @@ import me.shedaniel.rei.api.common.util.CollectionUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.Util; -import net.minecraft.network.chat.Component; import org.apache.commons.lang3.tuple.MutablePair; import org.jetbrains.annotations.ApiStatus; @@ -50,8 +45,8 @@ import java.io.Closeable; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Consumer; +import java.util.function.LongConsumer; import java.util.function.UnaryOperator; -import java.util.stream.Collectors; @ApiStatus.Internal @Environment(EnvType.CLIENT) @@ -62,11 +57,13 @@ public class PluginManagerImpl<P extends REIPlugin<?>> implements PluginManager< private final UnaryOperator<PluginView<P>> view; private boolean arePluginsLoading = false; private final List<REIPluginProvider<P>> plugins = new ArrayList<>(); + private final LongConsumer reloadDoneListener; @SafeVarargs - public PluginManagerImpl(Class<P> pluginClass, UnaryOperator<PluginView<P>> view, Reloadable<? extends P>... reloadables) { + public PluginManagerImpl(Class<P> pluginClass, UnaryOperator<PluginView<P>> view, LongConsumer reloadDoneListener, Reloadable<? extends P>... reloadables) { this.pluginClass = pluginClass; this.view = view; + this.reloadDoneListener = reloadDoneListener; for (Reloadable<? extends P> reloadable : reloadables) { registerReloadable(reloadable); } @@ -161,7 +158,7 @@ public class PluginManagerImpl<P extends REIPlugin<?>> implements PluginManager< arePluginsLoading = true; long startTime = Util.getMillis(); MutablePair<Stopwatch, String> sectionData = new MutablePair<>(Stopwatch.createUnstarted(), ""); - + for (Reloadable<P> reloadable : reloadables) { Class<?> reloadableClass = reloadable.getClass(); try (SectionClosable startReload = section(sectionData, "start-reload-" + MoreObjects.firstNonNull(reloadableClass.getSimpleName(), reloadableClass.getName()))) { @@ -182,7 +179,7 @@ public class PluginManagerImpl<P extends REIPlugin<?>> implements PluginManager< pluginSection(sectionData, "reloadable-plugin-" + MoreObjects.firstNonNull(reloadableClass.getSimpleName(), reloadableClass.getName()), plugins, reloadable::acceptPlugin); } pluginSection(sectionData, "post-register", plugins, REIPlugin::postRegister); - + for (Reloadable<P> reloadable : reloadables) { Class<?> reloadableClass = reloadable.getClass(); try (SectionClosable endReload = section(sectionData, "end-reload-" + MoreObjects.firstNonNull(reloadableClass.getSimpleName(), reloadableClass.getName()))) { @@ -197,19 +194,7 @@ public class PluginManagerImpl<P extends REIPlugin<?>> implements PluginManager< } long usedTime = Util.getMillis() - startTime; - RoughlyEnoughItemsCore.LOGGER.info("Reloaded %d stack entries, %d displays, %d exclusion zones suppliers, %d overlay deciders, %d visibility predicates and %d categories (%s) in %dms.", - EntryRegistry.getInstance().size(), - DisplayRegistry.getInstance().getDisplayCount(), - ScreenRegistry.getInstance().exclusionZones().getZonesCount(), - ScreenRegistry.getInstance().getDeciders().size(), - DisplayRegistry.getInstance().getVisibilityPredicates().size(), - CategoryRegistry.getInstance().size(), - CategoryRegistry.getInstance().stream() - .map(CategoryRegistry.CategoryConfiguration::getCategory) - .map(DisplayCategory::getTitle) - .map(Component::getString).collect(Collectors.joining(", ")), - usedTime - ); + reloadDoneListener.accept(usedTime); } catch (Throwable throwable) { throwable.printStackTrace(); } finally { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/MenuInfoRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/MenuInfoRegistryImpl.java index 218622def..b6760a424 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/MenuInfoRegistryImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/MenuInfoRegistryImpl.java @@ -76,8 +76,14 @@ public class MenuInfoRegistryImpl implements MenuInfoRegistry { } @Override + public int infoSize() { + return map.size() + mapGeneric.size(); + } + + @Override public void startReload() { map.clear(); + mapGeneric.clear(); } @Override 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 2e8fc2098..b7ca0ee52 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 @@ -61,4 +61,8 @@ public class HashedEntryStackWrapper { public EntryStack<?> unwrap() { return stack; } + + public long hashExact() { + return hash; + } }
\ No newline at end of file |
