aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me/shedaniel
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-06-19 20:05:32 +0800
committershedaniel <daniel@shedaniel.me>2022-06-28 03:21:12 +0800
commit2db69e7c104bcb0ec8019fe538c1f910ace23da0 (patch)
tree474ab3ba47294539ea99f07ce0f6d4bc63eed2aa /runtime/src/main/java/me/shedaniel
parent42ad22e9d671520eec5c78b587972ac50830c719 (diff)
downloadRoughlyEnoughItems-2db69e7c104bcb0ec8019fe538c1f910ace23da0.tar.gz
RoughlyEnoughItems-2db69e7c104bcb0ec8019fe538c1f910ace23da0.tar.bz2
RoughlyEnoughItems-2db69e7c104bcb0ec8019fe538c1f910ace23da0.zip
Add isSearch into TooltipContext and add TooltipContext into asFormattedText
Diffstat (limited to 'runtime/src/main/java/me/shedaniel')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java3
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/entry/type/types/RenderingEntryDefinition.java13
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/TooltipContextImpl.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TextArgumentType.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TooltipArgumentType.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java9
7 files changed, 44 insertions, 6 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
index dab08c264..09fd38d66 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
@@ -100,6 +100,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.crafting.Ingredient;
+import org.apache.commons.lang3.function.TriFunction;
import org.apache.commons.lang3.mutable.MutableLong;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
@@ -143,7 +144,7 @@ public class RoughlyEnoughItemsCoreClient {
return entryType.read(object);
}, "favoriteEntryFromJson");
ClientInternals.attachInstance((BiFunction<@Nullable Point, Collection<Tooltip.Entry>, Tooltip>) QueuedTooltip::impl, "tooltipProvider");
- ClientInternals.attachInstance((BiFunction<Point, @Nullable TooltipFlag, TooltipContext>) TooltipContextImpl::new, "tooltipContextProvider");
+ ClientInternals.attachInstance((TriFunction<Point, @Nullable TooltipFlag, Boolean, TooltipContext>) TooltipContextImpl::new, "tooltipContextProvider");
ClientInternals.attachInstance((Function<Object, Tooltip.Entry>) QueuedTooltip.TooltipEntryImpl::new, "tooltipEntryProvider");
ClientInternals.attachInstance((Function<@Nullable Boolean, ClickArea.Result>) successful -> new ClickArea.Result() {
private List<CategoryIdentifier<?>> categories = Lists.newArrayList();
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/type/types/RenderingEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/type/types/RenderingEntryDefinition.java
index 20b0c9a5b..8936f4d61 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/type/types/RenderingEntryDefinition.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/entry/type/types/RenderingEntryDefinition.java
@@ -57,6 +57,19 @@ public class RenderingEntryDefinition {
}
return super.asFormattedText(entry, value);
}
+
+ @Override
+ public Component asFormattedText(EntryStack<Renderer> entry, Renderer value, TooltipContext context) {
+ Tooltip tooltip = value.getTooltip(context);
+ if (tooltip != null) {
+ for (Tooltip.Entry e : tooltip.entries()) {
+ if (e.isText()) {
+ return e.getAsText();
+ }
+ }
+ }
+ return super.asFormattedText(entry, value, context);
+ }
};
private static <T> T throwRendering() {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/TooltipContextImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/TooltipContextImpl.java
index 0b91481ac..3f8504968 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/TooltipContextImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/TooltipContextImpl.java
@@ -35,10 +35,12 @@ public class TooltipContextImpl implements TooltipContext {
private final Point point;
@Nullable
private final TooltipFlag flag;
+ private final boolean isSearch;
- public TooltipContextImpl(Point point, @Nullable TooltipFlag flag) {
+ public TooltipContextImpl(Point point, @Nullable TooltipFlag flag, boolean isSearch) {
this.point = Objects.requireNonNull(point);
this.flag = flag;
+ this.isSearch = isSearch;
}
@Override
@@ -51,4 +53,9 @@ public class TooltipContextImpl implements TooltipContext {
public Point getPoint() {
return point;
}
+
+ @Override
+ public boolean isSearch() {
+ return isSearch;
+ }
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TextArgumentType.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TextArgumentType.java
index 1342a2b0c..8d05ea91b 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TextArgumentType.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TextArgumentType.java
@@ -23,11 +23,15 @@
package me.shedaniel.rei.impl.client.search.argument.type;
+import me.shedaniel.math.Point;
import me.shedaniel.rei.api.client.gui.config.SearchMode;
+import me.shedaniel.rei.api.client.gui.widgets.TooltipContext;
import me.shedaniel.rei.api.common.entry.EntryStack;
+import me.shedaniel.rei.api.common.util.FormattingUtils;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.util.Unit;
+import net.minecraft.world.item.TooltipFlag;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
@@ -37,6 +41,7 @@ import java.util.Locale;
@Environment(EnvType.CLIENT)
public final class TextArgumentType extends ArgumentType<Unit, String> {
public static final TextArgumentType INSTANCE = new TextArgumentType();
+ private static final TooltipContext CONTEXT = TooltipContext.of(new Point(), TooltipFlag.Default.NORMAL, true);
@Override
public String getName() {
@@ -56,7 +61,7 @@ public final class TextArgumentType extends ArgumentType<Unit, String> {
@Override
public String cacheData(EntryStack<?> stack) {
- return stack.asFormatStrippedText().getString().toLowerCase(Locale.ROOT);
+ return FormattingUtils.stripFormatting(stack.asFormattedText(CONTEXT).getString()).toLowerCase(Locale.ROOT);
}
@Override
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TooltipArgumentType.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TooltipArgumentType.java
index 4557ddeae..4dcc0f00f 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TooltipArgumentType.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/type/TooltipArgumentType.java
@@ -46,7 +46,7 @@ import java.util.StringJoiner;
@Environment(EnvType.CLIENT)
public final class TooltipArgumentType extends ArgumentType<Unit, String> {
public static final TooltipArgumentType INSTANCE = new TooltipArgumentType();
- private static final TooltipContext CONTEXT = TooltipContext.of(new Point(), TooltipFlag.Default.NORMAL);
+ private static final TooltipContext CONTEXT = TooltipContext.of(new Point(), TooltipFlag.Default.NORMAL, true);
public static String INVALID = "INVALID_PIECE_OF_TOOLTIP_I_DONT_THINK_PEOPLE_WILL_EXACTLY_HAVE_THIS_REI_REI_REI";
private static final Style STYLE = Style.EMPTY.withColor(TextColor.fromRgb(0xffe0ad));
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java
index 66aff5e0d..24994570e 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java
@@ -257,7 +257,12 @@ public abstract class AbstractEntryStack<A> implements EntryStack<A>, Renderer {
@Override
public Component asFormattedText() {
- return getDefinition().asFormattedText(this, getValue());
+ return getDefinition().asFormattedText(this, getValue(), TooltipContext.of());
+ }
+
+ @Override
+ public Component asFormattedText(TooltipContext context) {
+ return getDefinition().asFormattedText(this, getValue(), context);
}
@Override
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
index b049ee893..f7d0e771f 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
@@ -187,10 +187,16 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer
@Override
public Component asFormattedText(EntryStack<ItemStack> entry, ItemStack value) {
+ return asFormattedText(entry, value, TooltipContext.of());
+ }
+
+ @Override
+ public Component asFormattedText(EntryStack<ItemStack> entry, ItemStack value, TooltipContext context) {
if (!SEARCH_BLACKLISTED.contains(value.getItem()))
try {
return value.getHoverName();
} catch (Throwable e) {
+ if (context != null && context.isSearch()) throw e;
e.printStackTrace();
SEARCH_BLACKLISTED.add(value.getItem());
}
@@ -213,10 +219,11 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer
try {
return value.getTooltipLines(Minecraft.getInstance().player, context.getFlag());
} catch (Throwable e) {
+ if (context.isSearch()) throw e;
e.printStackTrace();
SEARCH_BLACKLISTED.add(value.getItem());
}
- return Lists.newArrayList(asFormattedText(entry, value));
+ return Lists.newArrayList(asFormattedText(entry, value, context));
}
@Override