|
@@ -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) {
|