소스 검색

Fixed Search

Unknown 6 년 전
부모
커밋
2738af5ebb

+ 1 - 1
build.gradle

@@ -6,7 +6,7 @@ sourceCompatibility = 1.8
 targetCompatibility = 1.8
 
 archivesBaseName = "RoughlyEnoughItems"
-version = "2.1.0.43"
+version = "2.1.0.44"
 
 def minecraftVersion = "19w03c"
 def yarnVersion = "19w03c.4"

+ 1 - 1
src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java

@@ -55,7 +55,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer, ModInitiali
     
     public static IRecipePlugin registerPlugin(Identifier identifier, IRecipePlugin plugin) {
         plugins.put(identifier, plugin);
-        RoughlyEnoughItemsCore.LOGGER.info("REI: Registered plugin %s from %s", identifier.toString(), plugin.getClass());
+        RoughlyEnoughItemsCore.LOGGER.info("REI: Registered plugin %s from %s", identifier.toString(), plugin.getClass().getSimpleName());
         return plugin;
     }
     

+ 23 - 23
src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java

@@ -9,12 +9,12 @@ import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.gui.Drawable;
 import net.minecraft.client.item.TooltipOptions;
 import net.minecraft.client.network.ClientPlayerEntity;
-import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.item.ItemGroup;
 import net.minecraft.item.ItemStack;
 import net.minecraft.text.TextComponent;
 import net.minecraft.util.math.MathHelper;
+import org.apache.commons.lang3.StringUtils;
 
 import java.awt.*;
 import java.util.*;
@@ -68,8 +68,7 @@ public class ItemListOverlay extends Drawable implements IWidget {
             int j = i + page * getTotalSlotsPerPage();
             if (j >= currentDisplayed.size())
                 break;
-            widgets.add(new ItemSlotWidget((int) (startX + (i % width) * 18), (int) (startY + MathHelper.floor(i / width) * 18),
-                    currentDisplayed.get(j), false, true, containerGui) {
+            widgets.add(new ItemSlotWidget((int) (startX + (i % width) * 18), (int) (startY + MathHelper.floor(i / width) * 18), currentDisplayed.get(j), false, true, containerGui) {
                 @Override
                 protected void drawToolTip(ItemStack itemStack) {
                     ClientPlayerEntity player = MinecraftClient.getInstance().player;
@@ -118,24 +117,27 @@ public class ItemListOverlay extends Drawable implements IWidget {
             });
         if (!RoughlyEnoughItemsCore.getConfigHelper().isAscending())
             Collections.reverse(os);
-        Arrays.stream(searchTerm.split("\\|")).forEachOrdered(s -> {
-            List<SearchArgument> arguments = new ArrayList<>();
-            while (s.startsWith(" ")) s = s.substring(1);
-            while (s.endsWith(" ")) s = s.substring(0, s.length());
-            if (s.startsWith("@-") || s.startsWith("-@"))
-                arguments.add(new SearchArgument(SearchArgument.ArgumentType.MOD, s.substring(2), false));
-            else if (s.startsWith("@"))
-                arguments.add(new SearchArgument(SearchArgument.ArgumentType.MOD, s.substring(1), true));
-            else if (s.startsWith("#-") || s.startsWith("-#"))
-                arguments.add(new SearchArgument(SearchArgument.ArgumentType.TOOLTIP, s.substring(2), false));
-            else if (s.startsWith("#"))
-                arguments.add(new SearchArgument(SearchArgument.ArgumentType.TOOLTIP, s.substring(1), true));
-            else if (s.startsWith("-"))
-                arguments.add(new SearchArgument(SearchArgument.ArgumentType.TEXT, s.substring(1), false));
-            else
-                arguments.add(new SearchArgument(SearchArgument.ArgumentType.TEXT, s, true));
-            os.stream().filter(itemStack -> filterItem(itemStack, arguments)).forEachOrdered(stacks::add);
+        String[] splitSearchTerm = StringUtils.splitByWholeSeparatorPreserveAllTokens(searchTerm, "|");
+        Arrays.stream(splitSearchTerm).forEachOrdered(s -> {
+            List<SearchArgument> arguments = Lists.newArrayList();
+            Arrays.stream(StringUtils.split(s)).forEachOrdered(s1 -> {
+                if (s1.startsWith("@-") || s1.startsWith("-@"))
+                    arguments.add(new SearchArgument(SearchArgument.ArgumentType.MOD, s1.substring(2), false));
+                else if (s1.startsWith("@"))
+                    arguments.add(new SearchArgument(SearchArgument.ArgumentType.MOD, s1.substring(1), true));
+                else if (s1.startsWith("#-") || s1.startsWith("-#"))
+                    arguments.add(new SearchArgument(SearchArgument.ArgumentType.TOOLTIP, s1.substring(2), false));
+                else if (s1.startsWith("#"))
+                    arguments.add(new SearchArgument(SearchArgument.ArgumentType.TOOLTIP, s1.substring(1), true));
+                else if (s1.startsWith("-"))
+                    arguments.add(new SearchArgument(SearchArgument.ArgumentType.TEXT, s1.substring(1), false));
+                else
+                    arguments.add(new SearchArgument(SearchArgument.ArgumentType.TEXT, s1, true));
+            });
+            os.stream().filter(itemStack -> arguments.isEmpty() || filterItem(itemStack, arguments)).forEachOrdered(stacks::add);
         });
+        if (splitSearchTerm.length == 0)
+            stacks.addAll(os);
         List<ItemStack> workingItems = RoughlyEnoughItemsCore.getConfigHelper().craftableOnly() && inventoryItems.size() > 0 ? new ArrayList<>() : new LinkedList<>(ol);
         if (RoughlyEnoughItemsCore.getConfigHelper().craftableOnly()) {
             RecipeHelper.findCraftableByItems(inventoryItems).forEach(workingItems::add);
@@ -185,9 +187,7 @@ public class ItemListOverlay extends Drawable implements IWidget {
     
     private List<String> getStackTooltip(ItemStack itemStack) {
         MinecraftClient client = MinecraftClient.getInstance();
-        return itemStack.getTooltipText(client.player, client.options.advancedItemTooltips ?
-                TooltipOptions.Instance.ADVANCED : TooltipOptions.Instance.NORMAL).stream().map(
-                TextComponent::getFormattedText).collect(Collectors.toList());
+        return itemStack.getTooltipText(client.player, client.options.advancedItemTooltips ? TooltipOptions.Instance.ADVANCED : TooltipOptions.Instance.NORMAL).stream().map(TextComponent::getFormattedText).collect(Collectors.toList());
     }
     
     private void calculateListSize(Rectangle rect) {

+ 4 - 2
src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java

@@ -88,9 +88,11 @@ public class ItemSlotWidget extends Drawable implements HighlightableWidget {
         final String modString = "§9§o" + ClientHelper.getModFromItemStack(itemStack);
         MinecraftClient mc = MinecraftClient.getInstance();
         List<String> toolTip = Lists.newArrayList();
-        if (containerGui != null)
+        try {
             toolTip = containerGui.getContainerGui().getStackTooltip(itemStack).stream().filter(s -> !s.equals(modString)).collect(Collectors.toList());
-        else toolTip.add(itemStack.getDisplayName().getFormattedText());
+        } catch (Exception e) {
+            toolTip.add(itemStack.getDisplayName().getFormattedText());
+        }
         toolTip.addAll(getExtraToolTips(itemStack));
         toolTip.add(modString);
         return toolTip;