aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-06-19 20:05:32 +0800
committershedaniel <daniel@shedaniel.me>2023-05-29 21:01:43 +0800
commita89a2d86725d73e69f6aede759f7c097b4880958 (patch)
tree0d9609943fd61060201bf80c7c13b2b689b120fc /runtime/src/main/java
parentb0cac6544fc10860702acfa70123e1f224cf1b76 (diff)
downloadRoughlyEnoughItems-a89a2d86725d73e69f6aede759f7c097b4880958.tar.gz
RoughlyEnoughItems-a89a2d86725d73e69f6aede759f7c097b4880958.tar.bz2
RoughlyEnoughItems-a89a2d86725d73e69f6aede759f7c097b4880958.zip
Add isSearch into TooltipContext and add TooltipContext into asFormattedText
Diffstat (limited to 'runtime/src/main/java')
-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 9ab085fc4..29140937f 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
@@ -103,6 +103,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;
@@ -146,7 +147,7 @@ public class RoughlyEnoughItemsCoreClient {
return entryType.readResult(object);
}, "favoriteEntryFromJson");
ClientInternals.attachInstance((BiFunction<@Nullable Point, Collection<Component>, 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<@Nullable Boolean, ClickArea.Result>) successful -> new ClickArea.Result() {
private List<CategoryIdentifier<?>> categories = Lists.newArrayList();
private BooleanSupplier execute = () -> {
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 27915c407..7965bd2e9 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
@@ -53,6 +53,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 013d7083a..22f7ca97c 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
@@ -47,7 +47,7 @@ import java.util.Locale;
@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 a4e7d9a8d..625c42219 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
@@ -273,7 +273,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 1667058fa..9d8418e27 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
@@ -188,10 +188,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());
}
@@ -215,10 +221,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