aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-04-19 17:29:00 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-04-19 17:29:00 +0800
commit415606edf92e66101f57130bc2f80d1db09e2a1d (patch)
treef798a9f84d73421033ab1a175ac9f8528a6ef0df
parent992abbeb4af058649d2f66cf71158864bd019b2a (diff)
downloadRoughlyEnoughItems-415606edf92e66101f57130bc2f80d1db09e2a1d.tar.gz
RoughlyEnoughItems-415606edf92e66101f57130bc2f80d1db09e2a1d.tar.bz2
RoughlyEnoughItems-415606edf92e66101f57130bc2f80d1db09e2a1d.zip
Fix #69
-rw-r--r--CHANGELOG.md2
-rw-r--r--gradle.properties2
-rw-r--r--src/main/java/me/shedaniel/rei/client/SearchArgument.java8
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java92
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java4
5 files changed, 56 insertions, 52 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 25c2e8554..26c7c722e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,6 @@
View full changelog [here](https://github.com/shedaniel/RoughlyEnoughItems/blob/1.14/CHANGELOG.md).
+## v2.7.10.96
+- Fixed [#69](https://github.com/shedaniel/RoughlyEnoughItems/issues/67): Weird Search Field
## v2.7.10.95
- Fixed [#67](https://github.com/shedaniel/RoughlyEnoughItems/issues/67): Item Panel Crashes
## v2.7.9.94
diff --git a/gradle.properties b/gradle.properties
index 2d1caddfc..2b8de5025 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
-mod_version=2.7.10+build.95
+mod_version=2.7.10+build.96
minecraft_version=1.14 Pre-Release 4
yarn_version=1.14 Pre-Release 4+build.2
fabric_version=0.2.7+build.123
diff --git a/src/main/java/me/shedaniel/rei/client/SearchArgument.java b/src/main/java/me/shedaniel/rei/client/SearchArgument.java
index 4d0716566..fb46ca266 100644
--- a/src/main/java/me/shedaniel/rei/client/SearchArgument.java
+++ b/src/main/java/me/shedaniel/rei/client/SearchArgument.java
@@ -1,7 +1,11 @@
package me.shedaniel.rei.client;
+import java.util.function.Function;
+
public class SearchArgument {
+ public static final Function<Integer, Boolean> INCLUDE = integer -> integer > -1;
+ public static final Function<Integer, Boolean> NOT_INCLUDE = integer -> !INCLUDE.apply(integer);
private ArgumentType argumentType;
private String text;
private boolean include;
@@ -12,6 +16,10 @@ public class SearchArgument {
this.include = include;
}
+ public static Function<Integer, Boolean> getFunction(boolean include) {
+ return include ? SearchArgument.INCLUDE : SearchArgument.NOT_INCLUDE;
+ }
+
public ArgumentType getArgumentType() {
return argumentType;
}
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java
index 9ab9c1ecb..f83c68e1f 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java
@@ -11,19 +11,23 @@ import me.shedaniel.rei.client.ItemListOrdering;
import me.shedaniel.rei.client.ScreenHelper;
import me.shedaniel.rei.client.SearchArgument;
import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.item.TooltipContext;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.render.GuiLighting;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
+import net.minecraft.text.TextComponent;
import net.minecraft.util.ActionResult;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.registry.Registry;
import org.apache.commons.lang3.StringUtils;
import java.awt.*;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
@@ -42,10 +46,10 @@ public class ItemListOverlay extends Widget {
this.page = page;
}
- public static List<String> tryGetItemStackToolTip(ItemStack itemStack) {
+ public static List<String> tryGetItemStackToolTip(ItemStack itemStack, boolean careAboutAdvanced) {
if (!searchBlacklisted.contains(itemStack.getItem()))
try {
- return MinecraftClient.getInstance().currentScreen.getTooltipFromItem(itemStack);
+ return itemStack.getTooltipText(MinecraftClient.getInstance().player, MinecraftClient.getInstance().options.advancedItemTooltips && careAboutAdvanced ? TooltipContext.Default.ADVANCED : TooltipContext.Default.NORMAL).stream().map(TextComponent::getFormattedText).collect(Collectors.toList());
} catch (Throwable e) {
e.printStackTrace();
searchBlacklisted.add(itemStack.getItem());
@@ -95,12 +99,12 @@ public class ItemListOverlay extends Widget {
int j = page * fitSlotsPerPage;
for(int i = 0; i < getFullTotalSlotsPerPage(); i++) {
j++;
- if (j >= currentDisplayed.size())
+ if (j > currentDisplayed.size())
break;
int x = startX + (i % width) * 18, y = startY + MathHelper.floor(i / width) * 18;
if (!canBeFit(x, y, listArea))
continue;
- widgets.add(new ItemSlotWidget(x, y, Collections.singletonList(currentDisplayed.get(j)), false, true, true) {
+ widgets.add(new ItemSlotWidget(x, y, Collections.singletonList(currentDisplayed.get(j - 1)), false, true, true) {
@Override
protected void queueTooltip(ItemStack itemStack, float delta) {
ClientPlayerEntity player = minecraft.player;
@@ -179,7 +183,7 @@ public class ItemListOverlay extends Widget {
private List<ItemStack> processSearchTerm(String searchTerm, List<ItemStack> ol, List<ItemStack> inventoryItems) {
List<ItemStack> os = new LinkedList<>(ol), stacks = Lists.newArrayList(), finalStacks = Lists.newArrayList();
- List<ItemGroup> itemGroups = new LinkedList<>(Arrays.asList(ItemGroup.GROUPS));
+ List<ItemGroup> itemGroups = Lists.newArrayList(ItemGroup.GROUPS);
itemGroups.add(null);
ItemListOrdering ordering = RoughlyEnoughItemsCore.getConfigManager().getConfig().itemListOrdering;
if (ordering != ItemListOrdering.registry)
@@ -194,67 +198,57 @@ public class ItemListOverlay extends Widget {
Collections.reverse(os);
String[] splitSearchTerm = StringUtils.splitByWholeSeparatorPreserveAllTokens(searchTerm, "|");
Arrays.stream(splitSearchTerm).forEachOrdered(s -> {
- List<SearchArgument> arguments = Lists.newArrayList();
- Arrays.stream(StringUtils.split(s)).forEachOrdered(s1 -> {
+ String[] split = StringUtils.split(s);
+ SearchArgument[] arguments = new SearchArgument[split.length];
+ for(int i = 0; i < split.length; i++) {
+ String s1 = split[i];
if (s1.startsWith("@-") || s1.startsWith("-@"))
- arguments.add(new SearchArgument(SearchArgument.ArgumentType.MOD, s1.substring(2), false));
+ arguments[i] = new SearchArgument(SearchArgument.ArgumentType.MOD, s1.substring(2), false);
else if (s1.startsWith("@"))
- arguments.add(new SearchArgument(SearchArgument.ArgumentType.MOD, s1.substring(1), true));
+ arguments[i] = 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));
+ arguments[i] = new SearchArgument(SearchArgument.ArgumentType.TOOLTIP, s1.substring(2), false);
else if (s1.startsWith("#"))
- arguments.add(new SearchArgument(SearchArgument.ArgumentType.TOOLTIP, s1.substring(1), true));
+ arguments[i] = new SearchArgument(SearchArgument.ArgumentType.TOOLTIP, s1.substring(1), true);
else if (s1.startsWith("-"))
- arguments.add(new SearchArgument(SearchArgument.ArgumentType.TEXT, s1.substring(1), false));
+ arguments[i] = 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);
+ arguments[i] = new SearchArgument(SearchArgument.ArgumentType.TEXT, s1, true);
+ }
+ os.stream().filter(itemStack -> filterItem(itemStack, arguments)).forEachOrdered(stacks::add);
});
if (splitSearchTerm.length == 0)
stacks.addAll(os);
- List<ItemStack> workingItems = RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() && inventoryItems.size() > 0 ? new ArrayList<>() : new LinkedList<>(ol);
+ List<ItemStack> workingItems = RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() && inventoryItems.size() > 0 ? Lists.newArrayList() : Collections.unmodifiableList(ol);
if (RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled()) {
RecipeHelper.getInstance().findCraftableByItems(inventoryItems).forEach(workingItems::add);
workingItems.addAll(inventoryItems);
}
- final List<ItemStack> finalWorkingItems = workingItems;
- finalStacks.addAll(stacks.stream().filter(itemStack -> {
- if (!RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled())
- return true;
- for(ItemStack workingItem : finalWorkingItems)
- if (itemStack.isEqualIgnoreTags(workingItem))
- return true;
- return false;
- }).distinct().collect(Collectors.toList()));
+ if (!RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled())
+ finalStacks.addAll(stacks.stream().distinct().collect(Collectors.toList()));
+ else
+ finalStacks.addAll(stacks.stream().filter(itemStack -> {
+ for(ItemStack workingItem : workingItems)
+ if (itemStack.isEqualIgnoreTags(workingItem))
+ return true;
+ return false;
+ }).distinct().collect(Collectors.toList()));
return finalStacks;
}
- private boolean filterItem(ItemStack itemStack, List<SearchArgument> arguments) {
- String mod = ClientHelper.getModFromItem(itemStack.getItem());
- List<String> toolTipsList = tryGetItemStackToolTip(itemStack);
- String toolTipsMixed = toolTipsList.stream().skip(1).collect(Collectors.joining()).toLowerCase();
- String allMixed = toolTipsList.stream().collect(Collectors.joining()).toLowerCase();
- for(SearchArgument searchArgument : arguments.stream().filter(searchArgument -> !searchArgument.isInclude()).collect(Collectors.toList())) {
- if (searchArgument.getArgumentType().equals(SearchArgument.ArgumentType.MOD))
- if (mod.toLowerCase().contains(searchArgument.getText().toLowerCase()))
- return false;
- if (searchArgument.getArgumentType().equals(SearchArgument.ArgumentType.TOOLTIP))
- if (toolTipsMixed.contains(searchArgument.getText().toLowerCase()))
- return false;
- if (searchArgument.getArgumentType().equals(SearchArgument.ArgumentType.TEXT))
- if (allMixed.contains(searchArgument.getText().toLowerCase()))
- return false;
- }
- for(SearchArgument searchArgument : arguments.stream().filter(SearchArgument::isInclude).collect(Collectors.toList())) {
- if (searchArgument.getArgumentType().equals(SearchArgument.ArgumentType.MOD))
- if (!mod.toLowerCase().contains(searchArgument.getText().toLowerCase()))
+ private boolean filterItem(ItemStack itemStack, SearchArgument... arguments) {
+ String mod = ClientHelper.getModFromItem(itemStack.getItem()).toLowerCase();
+ String tooltips = tryGetItemStackToolTip(itemStack, false).stream().skip(1).collect(Collectors.joining("")).replaceAll(" ", "").toLowerCase();
+ String name = tryGetItemStackName(itemStack).replaceAll(" ", "").toLowerCase();
+ for(SearchArgument argument : arguments) {
+ if (argument.getArgumentType().equals(SearchArgument.ArgumentType.MOD))
+ if (SearchArgument.getFunction(!argument.isInclude()).apply(mod.indexOf(argument.getText().toLowerCase())))
return false;
- if (searchArgument.getArgumentType().equals(SearchArgument.ArgumentType.TOOLTIP))
- if (!toolTipsMixed.contains(searchArgument.getText().toLowerCase()))
+ if (argument.getArgumentType().equals(SearchArgument.ArgumentType.TOOLTIP))
+ if (SearchArgument.getFunction(!argument.isInclude()).apply(tooltips.indexOf(argument.getText().toLowerCase())))
return false;
- if (searchArgument.getArgumentType().equals(SearchArgument.ArgumentType.TEXT))
- if (!allMixed.contains(searchArgument.getText().toLowerCase()))
+ if (argument.getArgumentType().equals(SearchArgument.ArgumentType.TEXT))
+ if (SearchArgument.getFunction(!argument.isInclude()).apply(name.indexOf(argument.getText().toLowerCase())))
return false;
}
return true;
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
index 58a93cefd..16e582b02 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
@@ -95,10 +95,10 @@ public class ItemSlotWidget extends HighlightableWidget {
protected List<String> getTooltip(ItemStack itemStack) {
final String modString = ClientHelper.getFormattedModFromItem(itemStack.getItem());
- List<String> toolTip = Lists.newArrayList(ItemListOverlay.tryGetItemStackToolTip(itemStack));
+ List<String> toolTip = Lists.newArrayList(ItemListOverlay.tryGetItemStackToolTip(itemStack, true));
toolTip.addAll(getExtraToolTips(itemStack));
boolean alreadyHasMod = false;
- for(String s : Lists.newArrayList(toolTip))
+ for(String s : toolTip)
if (s.equalsIgnoreCase(modString)) {
alreadyHasMod = true;
break;