From 8d77ad86b203de62aa08a5ee62f91e27fd0fbd00 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sun, 30 Aug 2020 21:29:58 +0800 Subject: Fix brewing potions not appearing and allow scrolling in the tabs for villager like recipe viewing screen Signed-off-by: shedaniel --- .../me/shedaniel/rei/impl/ClientHelperImpl.java | 54 +++++++++++----------- 1 file changed, 26 insertions(+), 28 deletions(-) (limited to 'RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java') diff --git a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java index 34735d0c2..b07898abe 100644 --- a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java +++ b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java @@ -65,6 +65,8 @@ import org.jetbrains.annotations.Nullable; import java.time.LocalDateTime; import java.util.*; import java.util.function.Supplier; +import java.util.stream.Collectors; +import java.util.stream.Stream; import static me.shedaniel.rei.impl.Internals.attachInstance; @@ -206,10 +208,15 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer { @Override public List getInventoryItemsTypes() { - List inventoryStacks = new ArrayList<>(Minecraft.getInstance().player.inventory.items); - inventoryStacks.addAll(Minecraft.getInstance().player.inventory.armor); - inventoryStacks.addAll(Minecraft.getInstance().player.inventory.offhand); - return inventoryStacks; + return Minecraft.getInstance().player.inventory.compartments.stream().flatMap(Collection::stream).collect(Collectors.toList()); + } + + @ApiStatus.Internal + public Set _getInventoryItemsTypes() { + return Minecraft.getInstance().player.inventory.compartments.stream() + .flatMap(Collection::stream) + .map(EntryStack::create) + .collect(Collectors.toSet()); } @ApiStatus.ScheduledForRemoval @@ -269,7 +276,20 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer { modNameCache.put("global", "Global"); } - public static final class ViewSearchBuilder implements ClientHelper.ViewSearchBuilder { + private static abstract class AbstractViewSearchBuilder implements ClientHelper.ViewSearchBuilder { + @Override + public ClientHelper.ViewSearchBuilder fillPreferredOpenedCategory() { + if (getPreferredOpenedCategory() == null) { + Screen currentScreen = Minecraft.getInstance().screen; + if (currentScreen instanceof RecipeScreen) { + setPreferredOpenedCategory(((RecipeScreen) currentScreen).getCurrentCategory()); + } + } + return this; + } + } + + public static final class ViewSearchBuilder extends AbstractViewSearchBuilder { @NotNull private final Set categories = new HashSet<>(); @NotNull private final List recipesFor = new ArrayList<>(); @NotNull private final List usagesFor = new ArrayList<>(); @@ -332,17 +352,6 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer { return this.preferredOpenedCategory; } - @Override - public ClientHelper.ViewSearchBuilder fillPreferredOpenedCategory() { - if (getPreferredOpenedCategory() == null) { - Screen currentScreen = Minecraft.getInstance().screen; - if (currentScreen instanceof RecipeScreen) { - setPreferredOpenedCategory(((RecipeScreen) currentScreen).getCurrentCategory()); - } - } - return this; - } - @Override public ClientHelper.ViewSearchBuilder setInputNotice(@Nullable EntryStack stack) { this.inputNotice = stack; @@ -374,7 +383,7 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer { } } - public static final class LegacyWrapperViewSearchBuilder implements ClientHelper.ViewSearchBuilder { + public static final class LegacyWrapperViewSearchBuilder extends AbstractViewSearchBuilder { @NotNull private final Map, List> map; @Nullable private ResourceLocation preferredOpenedCategory = null; @Nullable private EntryStack inputNotice; @@ -431,17 +440,6 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer { return this.preferredOpenedCategory; } - @Override - public ClientHelper.ViewSearchBuilder fillPreferredOpenedCategory() { - if (getPreferredOpenedCategory() == null) { - Screen currentScreen = Minecraft.getInstance().screen; - if (currentScreen instanceof RecipeScreen) { - setPreferredOpenedCategory(((RecipeScreen) currentScreen).getCurrentCategory()); - } - } - return this; - } - @Override public ClientHelper.ViewSearchBuilder setInputNotice(@Nullable EntryStack stack) { this.inputNotice = stack; -- cgit