From d3bfd79800aacfde6617d5430ead5fdda0a506fe Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 6 Aug 2022 10:37:38 +0800 Subject: More work okay --- .../shedaniel/rei/impl/client/view/ViewsImpl.java | 12 +++++---- .../client/view/craftable/CraftableFilter.java | 29 ++++++++-------------- 2 files changed, 18 insertions(+), 23 deletions(-) (limited to 'runtime-engine/views/src/main/java') diff --git a/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java b/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java index c0e6381e9..1ba0b9e4f 100644 --- a/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java +++ b/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java @@ -53,9 +53,9 @@ import me.shedaniel.rei.api.common.transfer.info.stack.SlotAccessor; import me.shedaniel.rei.api.common.util.CollectionUtils; import me.shedaniel.rei.api.common.util.EntryIngredients; import me.shedaniel.rei.api.common.util.EntryStacks; -import me.shedaniel.rei.impl.client.view.craftable.CraftableFilter; import me.shedaniel.rei.impl.client.gui.widget.AutoCraftingEvaluator; import me.shedaniel.rei.impl.client.util.CrashReportUtils; +import me.shedaniel.rei.impl.client.view.craftable.CraftableFilter; import me.shedaniel.rei.impl.common.InternalLogger; import me.shedaniel.rei.impl.display.DisplaySpec; import net.minecraft.CrashReport; @@ -87,13 +87,13 @@ public class ViewsImpl implements Views { BUILDER.set(builder); try { - return _buildMapFor(builder); + return ((ViewsImpl) Views.getInstance())._buildMapFor(builder); } finally { BUILDER.remove(); } } - private static Map, List> _buildMapFor(ViewSearchBuilder builder) { + private Map, List> _buildMapFor(ViewSearchBuilder builder) { if (PluginManager.areAnyReloading()) { InternalLogger.getInstance().info("Cancelled Views buildMap since plugins have not finished reloading."); return Maps.newLinkedHashMap(); @@ -290,11 +290,13 @@ public class ViewsImpl implements Views { return resultSpeced; } - public static boolean isRecipesFor(List> stacks, Display display) { + @Override + public boolean isRecipesFor(List> stacks, Display display) { return checkUsages(stacks, display, display.getOutputEntries()); } - public static boolean isUsagesFor(List> stacks, Display display) { + @Override + public boolean isUsagesFor(List> stacks, Display display) { return checkUsages(stacks, display, display.getInputEntries()); } diff --git a/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/craftable/CraftableFilter.java b/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/craftable/CraftableFilter.java index f81d0c385..f004bd0ed 100644 --- a/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/craftable/CraftableFilter.java +++ b/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/craftable/CraftableFilter.java @@ -26,6 +26,9 @@ package me.shedaniel.rei.impl.client.view.craftable; import it.unimi.dsi.fastutil.longs.Long2LongMap; import it.unimi.dsi.fastutil.longs.Long2LongMaps; import it.unimi.dsi.fastutil.longs.Long2LongOpenHashMap; +import me.shedaniel.rei.api.client.REIRuntime; +import me.shedaniel.rei.api.client.config.ConfigManager; +import me.shedaniel.rei.api.client.overlay.ScreenOverlay; import me.shedaniel.rei.api.common.entry.comparison.ComparisonContext; import me.shedaniel.rei.api.common.entry.type.EntryDefinition; import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes; @@ -36,27 +39,17 @@ import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import java.util.Optional; + public class CraftableFilter { public static final CraftableFilter INSTANCE = new CraftableFilter(); - private boolean dirty = false; private Long2LongMap invStacks = new Long2LongOpenHashMap(); private Long2LongMap containerStacks = new Long2LongOpenHashMap(); - public void markDirty() { - dirty = true; - } - - public boolean wasDirty() { - if (dirty) { - dirty = false; - return true; - } - - return false; - } - public void tick() { - if (dirty) return; + Optional overlay = REIRuntime.getInstance().getOverlay(); + if (overlay.isEmpty() || overlay.get().isSearchReloadQueued()) return; + if (!ConfigManager.getInstance().isCraftableOnlyEnabled()) return; Long2LongMap currentStacks; try { currentStacks = getInventoryItemsTypes(); @@ -66,9 +59,9 @@ public class CraftableFilter { } if (!currentStacks.equals(this.invStacks)) { invStacks = currentStacks; - markDirty(); + overlay.ifPresent(ScreenOverlay::queueReloadSearch); + return; } - if (dirty) return; try { currentStacks = getContainerItemsTypes(); @@ -78,7 +71,7 @@ public class CraftableFilter { } if (!currentStacks.equals(this.containerStacks)) { containerStacks = currentStacks; - markDirty(); + overlay.ifPresent(ScreenOverlay::queueReloadSearch); } } -- cgit