From 5115cd7053e5dc4458048b20f836a52cb61bf68c Mon Sep 17 00:00:00 2001 From: XFactHD Date: Fri, 18 Oct 2024 19:42:15 +0200 Subject: [PATCH] Replace RenderTooltipEvent.Color with RenderTooltipEvent.Texture --- .../client/gui/GuiGraphics.java.patch | 5 +- .../neoforge/client/ClientHooks.java | 7 +- .../client/event/RenderTooltipEvent.java | 146 ++++-------------- .../oldtest/client/CustomTooltipTest.java | 10 +- .../gui/sprites/tooltip/test_background.png | Bin 0 -> 9732 bytes .../tooltip/test_background.png.mcmeta | 11 ++ .../gui/sprites/tooltip/test_frame.png | Bin 0 -> 4685 bytes .../gui/sprites/tooltip/test_frame.png.mcmeta | 11 ++ 8 files changed, 64 insertions(+), 126 deletions(-) create mode 100644 tests/src/main/resources/assets/custom_tooltip_test/textures/gui/sprites/tooltip/test_background.png create mode 100644 tests/src/main/resources/assets/custom_tooltip_test/textures/gui/sprites/tooltip/test_background.png.mcmeta create mode 100644 tests/src/main/resources/assets/custom_tooltip_test/textures/gui/sprites/tooltip/test_frame.png create mode 100644 tests/src/main/resources/assets/custom_tooltip_test/textures/gui/sprites/tooltip/test_frame.png.mcmeta diff --git a/patches/net/minecraft/client/gui/GuiGraphics.java.patch b/patches/net/minecraft/client/gui/GuiGraphics.java.patch index 60a00e141e..caca78e363 100644 --- a/patches/net/minecraft/client/gui/GuiGraphics.java.patch +++ b/patches/net/minecraft/client/gui/GuiGraphics.java.patch @@ -155,8 +155,9 @@ int i1 = vector2ic.y(); this.pose.pushPose(); int j1 = 400; -+ net.neoforged.neoforge.client.event.RenderTooltipEvent.Color colorEvent = net.neoforged.neoforge.client.ClientHooks.onRenderTooltipColor(this.tooltipStack, this, l, i1, preEvent.getFont(), p_282615_); - TooltipRenderUtil.renderTooltipBackground(this, l, i1, i, j, 400, p_371327_); +- TooltipRenderUtil.renderTooltipBackground(this, l, i1, i, j, 400, p_371327_); ++ var textureEvent = net.neoforged.neoforge.client.ClientHooks.onRenderTooltipTexture(this.tooltipStack, this, l, i1, preEvent.getFont(), p_282615_, p_371327_); ++ TooltipRenderUtil.renderTooltipBackground(this, l, i1, i, j, 400, textureEvent.getTexture()); this.pose.translate(0.0F, 0.0F, 400.0F); int k1 = i1; diff --git a/src/main/java/net/neoforged/neoforge/client/ClientHooks.java b/src/main/java/net/neoforged/neoforge/client/ClientHooks.java index 66c1e266d4..3a200e0962 100644 --- a/src/main/java/net/neoforged/neoforge/client/ClientHooks.java +++ b/src/main/java/net/neoforged/neoforge/client/ClientHooks.java @@ -774,11 +774,8 @@ public static RenderTooltipEvent.Pre onRenderTooltipPre(ItemStack stack, GuiGrap return preEvent; } - // TODO porting: potentially replace with a background texture event - public static RenderTooltipEvent.Color onRenderTooltipColor(ItemStack stack, GuiGraphics graphics, int x, int y, Font font, List components) { - var colorEvent = new RenderTooltipEvent.Color(stack, graphics, x, y, font, 0xf0100010, 0x505000FF, 0x5028007f, components); - NeoForge.EVENT_BUS.post(colorEvent); - return colorEvent; + public static RenderTooltipEvent.Texture onRenderTooltipTexture(ItemStack stack, GuiGraphics graphics, int x, int y, Font font, List components, @Nullable ResourceLocation texture) { + return NeoForge.EVENT_BUS.post(new RenderTooltipEvent.Texture(stack, graphics, x, y, font, components, texture)); } public static List gatherTooltipComponents(ItemStack stack, List textElements, int mouseX, int screenWidth, int screenHeight, Font fallbackFont) { diff --git a/src/main/java/net/neoforged/neoforge/client/event/RenderTooltipEvent.java b/src/main/java/net/neoforged/neoforge/client/event/RenderTooltipEvent.java index e7f7c84657..1fff84cf30 100644 --- a/src/main/java/net/neoforged/neoforge/client/event/RenderTooltipEvent.java +++ b/src/main/java/net/neoforged/neoforge/client/event/RenderTooltipEvent.java @@ -12,7 +12,9 @@ import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipPositioner; +import net.minecraft.core.component.DataComponents; import net.minecraft.network.chat.FormattedText; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.tooltip.TooltipComponent; import net.minecraft.world.item.ItemStack; import net.neoforged.bus.api.Event; @@ -21,6 +23,7 @@ import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.event.entity.player.ItemTooltipEvent; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Nullable; /** * Fired during tooltip rendering. @@ -28,7 +31,7 @@ * * @see RenderTooltipEvent.GatherComponents * @see RenderTooltipEvent.Pre - * @see RenderTooltipEvent.Color + * @see RenderTooltipEvent.Texture */ public abstract class RenderTooltipEvent extends Event { protected final ItemStack itemStack; @@ -99,7 +102,7 @@ public Font getFont() { * *

This event is {@linkplain ICancellableEvent cancellable}, and does not {@linkplain HasResult have a result}. * If this event is cancelled, then the list of components will be empty, causing the tooltip to not be rendered and - * the corresponding {@link RenderTooltipEvent.Pre} and {@link RenderTooltipEvent.Color} to not be fired.

+ * the corresponding {@link RenderTooltipEvent.Pre} and {@link RenderTooltipEvent.Texture} to not be fired.

* *

This event is fired on the {@linkplain NeoForge#EVENT_BUS main Forge event bus}, * only on the {@linkplain LogicalSide#CLIENT logical client}.

@@ -179,7 +182,7 @@ public void setMaxWidth(int maxWidth) { * *

This event is {@linkplain ICancellableEvent cancellable}, and does not {@linkplain HasResult have a result}. * If this event is cancelled, then the tooltip will not be rendered and the corresponding - * {@link RenderTooltipEvent.Color} will not be fired.

+ * {@link RenderTooltipEvent.Texture} will not be fired.

* *

This event is fired on the {@linkplain NeoForge#EVENT_BUS main Forge event bus}, * only on the {@linkplain LogicalSide#CLIENT logical client}.

@@ -247,136 +250,51 @@ public void setY(int y) { } /** - * Fired when the colours for the tooltip background are determined. - * This can be used to modify the background color and the border's gradient colors. + * Fired when the textures for the tooltip background are determined. + * This can be used to modify the background and frame texture. * - *

This event is not {@linkplain ICancellableEvent cancellable}, and does not {@linkplain HasResult have a result}.

+ *

This event is not {@linkplain ICancellableEvent cancellable}.

* *

This event is fired on the {@linkplain NeoForge#EVENT_BUS main Forge event bus}, * only on the {@linkplain LogicalSide#CLIENT logical client}.

*/ - public static class Color extends RenderTooltipEvent { - private final int originalBackground; - private final int originalBorderStart; - private final int originalBorderEnd; - private int backgroundStart; - private int backgroundEnd; - private int borderStart; - private int borderEnd; + public static class Texture extends RenderTooltipEvent { + @Nullable + private final ResourceLocation originalTexture; + @Nullable + private ResourceLocation texture; @ApiStatus.Internal - public Color(ItemStack stack, GuiGraphics graphics, int x, int y, Font fr, int background, int borderStart, int borderEnd, List components) { - super(stack, graphics, x, y, fr, components); - this.originalBackground = background; - this.originalBorderStart = borderStart; - this.originalBorderEnd = borderEnd; - this.backgroundStart = background; - this.backgroundEnd = background; - this.borderStart = borderStart; - this.borderEnd = borderEnd; - } - - /** - * {@return the gradient start color for the tooltip background (top edge)} - */ - public int getBackgroundStart() { - return backgroundStart; - } - - /** - * {@return the gradient end color for the tooltip background (bottom edge)} - */ - public int getBackgroundEnd() { - return backgroundEnd; - } - - /** - * Sets the new color for the tooltip background. This sets both the gradient start and end color for the - * background to this color. - * - * @param background the new color for the tooltip background - */ - public void setBackground(int background) { - this.backgroundStart = background; - this.backgroundEnd = background; - } - - /** - * Sets the new start color for the gradient of the tooltip background (top edge). - * - * @param backgroundStart the new start color for the tooltip background - */ - public void setBackgroundStart(int backgroundStart) { - this.backgroundStart = backgroundStart; - } - - /** - * Sets the new end color for the gradient of the tooltip background (bottom edge). - * - * @param backgroundEnd the new end color for the tooltip background - */ - public void setBackgroundEnd(int backgroundEnd) { - this.backgroundEnd = backgroundEnd; - } - - /** - * {@return the gradient start color for the tooltip border (top edge)} - */ - public int getBorderStart() { - return borderStart; - } - - /** - * Sets the new start color for the gradient of the tooltip border (top edge). - * - * @param borderStart the new start color for the tooltip border - */ - public void setBorderStart(int borderStart) { - this.borderStart = borderStart; - } - - /** - * {@return the gradient end color for the tooltip border (bottom edge)} - */ - public int getBorderEnd() { - return borderEnd; - } - - /** - * Sets the new end color for the gradient of the tooltip border (bottom edge). - * - * @param borderEnd the new end color for the tooltip border - */ - public void setBorderEnd(int borderEnd) { - this.borderEnd = borderEnd; - } - - /** - * {@return the original tooltip background's gradient start color (top edge)} - */ - public int getOriginalBackgroundStart() { - return originalBackground; + public Texture(ItemStack stack, GuiGraphics graphics, int x, int y, Font font, List components, @Nullable ResourceLocation texture) { + super(stack, graphics, x, y, font, components); + this.originalTexture = texture; + this.texture = texture; } /** - * {@return the original tooltip background's gradient end color (bottom edge)} + * {@return the original texture location given to the tooltip render method (may originate from {@link DataComponents#TOOLTIP_STYLE})} */ - public int getOriginalBackgroundEnd() { - return originalBackground; + @Nullable + public ResourceLocation getOriginalTexture() { + return originalTexture; } /** - * {@return the original tooltip border's gradient start color (top edge)} + * {@return the texture location that will be used to render the tooltip} */ - public int getOriginalBorderStart() { - return originalBorderStart; + @Nullable + public ResourceLocation getTexture() { + return texture; } /** - * {@return the original tooltip border's gradient end color (bottom edge)} + * Set the texture to use for the tooltip background and frame or {@code null} to use the default textures. + *

+ * The given {@link ResourceLocation} will be prefixed with {@code tooltip/} and suffixed with {@code _background} + * and {@code _frame} to determine the background and frame texture respectively */ - public int getOriginalBorderEnd() { - return originalBorderEnd; + public void setTexture(@Nullable ResourceLocation texture) { + this.texture = texture; } } } diff --git a/tests/src/main/java/net/neoforged/neoforge/oldtest/client/CustomTooltipTest.java b/tests/src/main/java/net/neoforged/neoforge/oldtest/client/CustomTooltipTest.java index 1057944878..cb83eda472 100644 --- a/tests/src/main/java/net/neoforged/neoforge/oldtest/client/CustomTooltipTest.java +++ b/tests/src/main/java/net/neoforged/neoforge/oldtest/client/CustomTooltipTest.java @@ -18,6 +18,7 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; @@ -115,6 +116,8 @@ public static void onRegisterClientTooltipComponentFactories(RegisterClientToolt } private static class ClientEventHandler { + private static final ResourceLocation TEXTURE = ResourceLocation.fromNamespaceAndPath(ID, "test"); + @SubscribeEvent public static void gatherTooltips(RenderTooltipEvent.GatherComponents event) { if (event.getItemStack().getItem() == Items.STICK) { @@ -126,12 +129,9 @@ public static void gatherTooltips(RenderTooltipEvent.GatherComponents event) { } @SubscribeEvent - public static void preTooltip(RenderTooltipEvent.Color event) { + public static void preTooltip(RenderTooltipEvent.Texture event) { if (event.getItemStack().getItem() == Items.APPLE) { - event.setBackgroundStart(0xFF0000FF); - event.setBackgroundEnd(0xFFFFFF00); - event.setBorderStart(0xFFFF0000); - event.setBorderEnd(0xFF000011); + event.setTexture(TEXTURE); } } } diff --git a/tests/src/main/resources/assets/custom_tooltip_test/textures/gui/sprites/tooltip/test_background.png b/tests/src/main/resources/assets/custom_tooltip_test/textures/gui/sprites/tooltip/test_background.png new file mode 100644 index 0000000000000000000000000000000000000000..1f5f803bf519e9d950ed5cddcabd435cdf90de5d GIT binary patch literal 9732 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

D8rU zi0#D&-dwCDo0vQ=0(UAc<|Tc}OX2Tl{Z`Oz^y3L6?O5-}^6`BgW_ihWGH617e?2HL z+i5VssF)3#x7-^dVr9`8p>wanTT_5X=N9LARcBVv+5%?W*si&1Sg3oqtqE^&~Y zJMFA6)Z4GtE@rWfJv_zj)+g}X!tAJkhl%X2VN5tnNo-dkW9p(MbjI3X1~6t|U+pW* z?ldHA`_b;}=;K|k8y+!2Bgge^)H8y0#t>_HWLjqf>xRuZM+B_}GK9fZ!2V6@+;Udv zvAx?h*SoBe*K13UCL{ap-^;%pi%=YmkZOZ_`El}%=Rdw9!uk>^KXLZeN*X2xRUN@z z9Q*O}>~llq#A8PR6Wr}puU0bk=_XR5O3Q_x_RC!fV_u1W-<3%d4EC$?DphKqPofJ? zV2n$8yB6qUIaH18KP@dPUt5Iv(YyJ$N|OCzO#dAj`1iU&2RvJBiMjOXpiG(H!;LhB zp2;#CBKorYje6c;028MBHsm#RluqC0y!3Xo`C_Z_oVyTKG^qBoIP(RT8-`bBSXfKN z%qBrsL_n|D&z6QHS%n8IM|R&i4ZmCod18IWSTxGVT2kLsJJ$Q&DBib;rTgQ7^;4^^ zh@tL8T$xMZx_xKMf;|f<;hQ*ba7V6J_W_MG%bId~7`}U1f9@xfG)8xWdziUHb_clbxZ$xiw zrf4C>t`*I}ll=~8WSB1K}bZCMf z-F6T1lpT3i{_D{TDYq^fdycUVMCjR9$FPo1HtI{*b0SX9hcD>(0bci0SC{z+( z8(fsnQm}OTw1jZ6*uV!|9Jg?>(v@g?_rkie^!V+|GPw7u>gS?!o~O@WXt2seHr#|oYv3asma@^Xs{EeFhECpJNYL0g~uHH!i8#LTg zB``fWe+{E*toYrKj=h{k`lP&A@`s8n;#b*fW8FZDtU>uXKT2Tv literal 0 HcmV?d00001 diff --git a/tests/src/main/resources/assets/custom_tooltip_test/textures/gui/sprites/tooltip/test_background.png.mcmeta b/tests/src/main/resources/assets/custom_tooltip_test/textures/gui/sprites/tooltip/test_background.png.mcmeta new file mode 100644 index 0000000000..c0435eb685 --- /dev/null +++ b/tests/src/main/resources/assets/custom_tooltip_test/textures/gui/sprites/tooltip/test_background.png.mcmeta @@ -0,0 +1,11 @@ +{ + "gui": { + "scaling": { + "type": "nine_slice", + "width": 100, + "height": 100, + "border": 9, + "stretch_inner": true + } + } +} diff --git a/tests/src/main/resources/assets/custom_tooltip_test/textures/gui/sprites/tooltip/test_frame.png b/tests/src/main/resources/assets/custom_tooltip_test/textures/gui/sprites/tooltip/test_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..34c5e37f1a385e20ea3ef27d95a7f36658e89b2a GIT binary patch literal 4685 zcmeHKdr%YS7LOnrc?k7UEk(OTE23_)n+JJFRBnPKN&rcUc&paU?gn-s*^q2Vf<-|^ z@cM!aXsZ#f^#Lm4pwo+riq>KDO07(#deLevKCX{jMQuyfqW9Z?h`pV;2$_U+y6AYi%z#fX9g(Ln@PuIU%c!Hc^=* z#JH^_M7k&whvT|rPMS0HB*g9d*NCahd?t-ORm*P+%Kmk0%g)-xtAcNoMEG<)UUCBG zjPtGH9l8}ZV*VlHdG)fbx^?*xi9|MB>yY`i4x`35%=-EHwy}x60lEVW`q!#}%aaUC zIX6#n;g(O*Z#2C7fs`i>KOB?synNElrv-ZpM;ZqYs;j}jyB}L$ACX%aGBwu!j5^b| zMHbk)5;>HPe0={D`fV$c5!DIVbKW|Y+{8YFNC!!I{@GQFQk1UpSia8n;ySe9gmm0&h&*lWbsJ@<9JUe{ukTqce)iaj=`XANGm!4kdnl&kQpIf24g! zT{P?3eEH72k_c548TaV?h)3>gU2Bd-1_WO9$(PjEUznEgUY^+T`NzItVLrqC&MfS7 zIq5X|MFsU!r>_UI)h`WJ&j3Z2O@ZP{)x|4t+RVoY+DP(UW-F*V4kvoL%ZlL{Bm)`A zG|HmnJ!oj;K@_3n&6Vg7omEAqQ<@wbsn1C;;5iw%oZwBL<{#}+001+|V35n4X|XF@ zN}d;20p8hd0T1%3Fd0f-sxApq(KZqi^Tm7wj&)JlLf$lgDB4Dt6v^tDJrH1}2c_HE$jx+qk?48PCINk z8JkU7m~nj}2)x(c>ab;c!y#}1nMs;~svVq)zIJ4sR+rRk!BUV$nXO(cK=x~z3}t#n z)@#185^p$t9RcROxUXryjNPjYv~)U!n#LWhds?-U$DXesXq+Mx-d8-zC^iX27%aq% z1S~d1nP8dJD1?oKGzu|FWD+SR?gOQ@*cr@%lPnYf=TiVjE<^}af+Da{E)v4xD47_R zMF~wXisMp=(I}Uhr1Cxxi8cyUC6?LOD;A0XP>4i^n@nO1MvNEJuNj-zHe4dl6Gen;q05i;5zAQMZImi~@uMsKwYy1pr=H z5RF1*BQb`y8E86F$zvfP*0NWu0}VxB45r2y5`ZE?u>wUDsMLTU3ZYaX5l%*g3Z#!d zO;9HH|I%jL2a4`ax`wiY^WEO9?w-<3DdWhUiqCJ6Gjg#yF7L$G7nB;oZFV0DY| zbj*@Qg89)?urK$i-zf$_A&QzLQLsdYi9iOUBrrxAN!TQj5+V^IAyE7`=yuw~I58U; zlLmMMT!8}has^H7Nmbp==_17o;>`4CjjXFL*9tre!BYUdLstjNV&hd`ssQj2Hr@yzqXtt79Uj0HRvdAQ{#L|g4>{hrvqsq=;)!OJoo@QslaRbJ>#Kw<2fD7;k(V}4oT-|5oH49Fb4~WT~VQkFv>`jwYDSd7GE6kBA3OkDL%O30r5pURkyw%Mu zh>n6Hp)r%yZOyHpDhk4?gR?r1?kaP97Bcqh%EH^KoRp%n9r}yA0=W9LyU}XAC?-64 z!~Ri;lNKvc139Fq%u$`NpgcC*=L^-)*1{x>-e3N(_-S6*f|1Ma=561+I(|%|$Z=aW zaQi~b!L#mjA4WVcXjW~nY24PV3KcoFuAZ(z)kk+_1TMa>YDsNtR+SySvZH1}<>}$gd5C@LmoZU8=d{`V;H6<}Hcvo@I zq1%pUU8QZ8ub=w<(T<1B=DL4wJb5ti`lEYwAKuDx@964!GNm*39FM=z?#TT1V1;Me gcQ