From 2db69e7c104bcb0ec8019fe538c1f910ace23da0 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sun, 19 Jun 2022 20:05:32 +0800 Subject: Add isSearch into TooltipContext and add TooltipContext into asFormattedText --- .../shedaniel/rei/api/client/gui/widgets/TooltipContext.java | 12 +++++++++++- .../shedaniel/rei/api/common/entry/type/EntryDefinition.java | 5 +++++ .../me/shedaniel/rei/api/common/util/TextRepresentable.java | 5 +++++ api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java | 7 ++++--- 4 files changed, 25 insertions(+), 4 deletions(-) (limited to 'api/src/main/java/me') diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TooltipContext.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TooltipContext.java index 7bc2ecd15..598bbc292 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TooltipContext.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TooltipContext.java @@ -35,12 +35,20 @@ import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) @ApiStatus.NonExtendable public interface TooltipContext { + static TooltipContext of() { + return TooltipContext.of(new Point()); + } + static TooltipContext of(Point point) { return TooltipContext.of(point, null); } static TooltipContext of(Point point, @Nullable TooltipFlag flag) { - return ClientInternals.createTooltipContext(point, flag); + return TooltipContext.of(point, flag, false); + } + + static TooltipContext of(Point point, @Nullable TooltipFlag flag, boolean isSearch) { + return ClientInternals.createTooltipContext(point, flag, isSearch); } static TooltipContext ofMouse() { @@ -50,4 +58,6 @@ public interface TooltipContext { TooltipFlag getFlag(); Point getPoint(); + + boolean isSearch(); } diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java index d2e3e62e5..e6a6e112e 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java @@ -24,6 +24,7 @@ package me.shedaniel.rei.api.common.entry.type; import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer; +import me.shedaniel.rei.api.client.gui.widgets.TooltipContext; import me.shedaniel.rei.api.common.entry.EntrySerializer; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.entry.comparison.ComparisonContext; @@ -168,6 +169,10 @@ public interface EntryDefinition { Component asFormattedText(EntryStack entry, T value); + default Component asFormattedText(EntryStack entry, T value, TooltipContext context) { + return asFormattedText(entry, value); + } + /** * Returns a stream of {@link TagKey} for an entry. * It is not guaranteed that the stream is ordered, or that the {@link TagKey} diff --git a/api/src/main/java/me/shedaniel/rei/api/common/util/TextRepresentable.java b/api/src/main/java/me/shedaniel/rei/api/common/util/TextRepresentable.java index 23f96182e..a2e7fa86c 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/util/TextRepresentable.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/util/TextRepresentable.java @@ -23,6 +23,7 @@ package me.shedaniel.rei.api.common.util; +import me.shedaniel.rei.api.client.gui.widgets.TooltipContext; import net.minecraft.network.chat.Component; /** @@ -33,6 +34,10 @@ public interface TextRepresentable { return Component.empty(); } + default Component asFormattedText(TooltipContext context) { + return asFormattedText(); + } + default Component asFormatStrippedText() { return Component.literal(FormattingUtils.stripFormatting(asFormattedText().getString())); } diff --git a/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java b/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java index 10b29150f..bdf2cbefa 100644 --- a/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java +++ b/api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java @@ -47,6 +47,7 @@ import net.minecraft.network.chat.FormattedText; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.tooltip.TooltipComponent; import net.minecraft.world.item.TooltipFlag; +import org.apache.commons.lang3.function.TriFunction; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; @@ -70,7 +71,7 @@ public final class ClientInternals { private static Function clickAreaHandlerResult = (result) -> throwNotSetup(); private static BiConsumer, TooltipComponent> clientTooltipComponentProvider = (tooltip, result) -> throwNotSetup(); private static BiFunction<@Nullable Point, Collection, Tooltip> tooltipProvider = (point, texts) -> throwNotSetup(); - private static BiFunction tooltipContextProvider = (point, texts) -> throwNotSetup(); + private static TriFunction tooltipContextProvider = (point, texts, search) -> throwNotSetup(); private static Function tooltipEntryProvider = (component) -> throwNotSetup(); private static Supplier> jeiCompatMods = ClientInternals::throwNotSetup; private static Supplier builtinClientPlugin = ClientInternals::throwNotSetup; @@ -132,8 +133,8 @@ public final class ClientInternals { return tooltipProvider.apply(point, texts); } - public static TooltipContext createTooltipContext(Point point, @Nullable TooltipFlag flag) { - return tooltipContextProvider.apply(point, flag); + public static TooltipContext createTooltipContext(Point point, @Nullable TooltipFlag flag, boolean isSearch) { + return tooltipContextProvider.apply(point, flag, isSearch); } public static Tooltip.Entry createTooltipEntry(Object component) { -- cgit