11package dev .ftb .mods .ftbquests .client ;
22
33import com .mojang .blaze3d .vertex .PoseStack ;
4- import com .mojang .blaze3d .vertex .VertexConsumer ;
54import com .mojang .math .Axis ;
65import dev .architectury .hooks .client .fluid .ClientFluidStackHooks ;
7- import dev .architectury .hooks .fluid .FluidStackHooks ;
86import dev .ftb .mods .ftblibrary .icon .AnimatedIcon ;
97import dev .ftb .mods .ftblibrary .icon .AtlasSpriteIcon ;
108import dev .ftb .mods .ftblibrary .icon .Icon ;
1917import net .minecraft .ChatFormatting ;
2018import net .minecraft .client .Minecraft ;
2119import net .minecraft .client .gui .Font ;
22- import net .minecraft .client .renderer .MultiBufferSource ;
2320import net .minecraft .client .renderer .SubmitNodeCollector ;
2421import net .minecraft .client .renderer .blockentity .BlockEntityRenderer ;
2522import net .minecraft .client .renderer .blockentity .BlockEntityRendererProvider ;
2623import net .minecraft .client .renderer .feature .ModelFeatureRenderer ;
2724import net .minecraft .client .renderer .rendertype .RenderTypes ;
2825import net .minecraft .client .renderer .state .CameraRenderState ;
29- import net .minecraft .client .renderer .texture .OverlayTexture ;
3026import net .minecraft .client .renderer .texture .TextureAtlasSprite ;
3127import net .minecraft .data .AtlasIds ;
3228import net .minecraft .network .chat .Component ;
3329import net .minecraft .resources .Identifier ;
34- import net .minecraft .world .inventory .InventoryMenu ;
35- import net .minecraft .world .item .ItemDisplayContext ;
3630import net .minecraft .world .level .block .WallSignBlock ;
3731import net .minecraft .world .phys .Vec3 ;
38- import org .jetbrains .annotations .UnknownNullability ;
39- import org .joml .Matrix4f ;
4032import org .jspecify .annotations .Nullable ;
4133
4234public class TaskScreenRenderer implements BlockEntityRenderer <TaskScreenBlockEntity , TaskScreenRenderState > {
@@ -66,6 +58,7 @@ public void extractRenderState(TaskScreenBlockEntity blockEntity, TaskScreenRend
6658 blockEntityRenderState .task = blockEntity .getTask ();
6759 blockEntityRenderState .inputIcon = blockEntity .getInputModeIcon ();
6860 blockEntityRenderState .fakeTextureUV = blockEntity .getFakeTextureUV ();
61+ blockEntityRenderState .textHasShadow = blockEntity .isTextShadow ();
6962 }
7063
7164 @ Override
@@ -89,13 +82,12 @@ public void submit(TaskScreenRenderState taskScreen, PoseStack poseStack, Submit
8982 poseStack .scale (size * 2F + 1F , size * 2F + 1F , 1F );
9083
9184 double iconY = 0.5D ;
92-
9385 // render quest and task title at top of screen
9486 Component top1 = taskScreen .isInputOnly ? Component .empty () : task .getQuest ().getTitle ();
9587 Component top2 = taskScreen .isInputOnly ? Component .empty () : task .getTitle ();
96- submitNodeCollector . submitText ( poseStack , 0.02F , 0.15F , top1 . getVisualOrderText (), true , Font . DisplayMode . NORMAL , taskScreen . lightCoords , 0xFFFFFFFF , 0 , 0 );
88+ drawString ( taskScreen , submitNodeCollector , poseStack , top1 , 0.02D , 0.15F );
9789 if (!top2 .equals (Component .empty ())) {
98- submitNodeCollector . submitText ( poseStack , 0.017F , 0.07F , top2 . getVisualOrderText (), true , Font . DisplayMode . NORMAL , taskScreen . lightCoords , 0xFFFFFFFF , 0 , 0 );
90+ drawString ( taskScreen , submitNodeCollector , poseStack , top2 , 0.17D , 0.07F );
9991 iconY = 0.54D ;
10092 }
10193
@@ -104,7 +96,7 @@ public void submit(TaskScreenRenderState taskScreen, PoseStack poseStack, Submit
10496 long progress = data .getProgress (task );
10597 ChatFormatting col = progress == 0 ? ChatFormatting .GOLD : (progress < task .getMaxProgress () ? ChatFormatting .YELLOW : ChatFormatting .GREEN );
10698 Component txt = Component .literal (task .formatProgress (data , progress ) + " / " + task .formatMaxProgress ()).withStyle (col );
107- submitNodeCollector . submitText ( poseStack , 0.83F , 0.15F , txt . getVisualOrderText (), true , Font . DisplayMode . NORMAL , taskScreen . lightCoords , 0xFFFFFFFF , 0 , 0 );
99+ drawString ( taskScreen , submitNodeCollector , poseStack , txt , 0.83D , 0.15F );
108100 }
109101
110102 // render icon for task item/fluid/energy
@@ -113,32 +105,32 @@ public void submit(TaskScreenRenderState taskScreen, PoseStack poseStack, Submit
113105 poseStack .scale (taskScreen .isInputOnly ? 0.5f : 0.45f , taskScreen .isInputOnly ? 0.5f : 0.45f , 0.2f * size );
114106 poseStack .mulPose (Axis .ZP .rotationDegrees (180f ));
115107 if (taskScreen .isInputOnly && !taskScreen .inputIcon .isEmpty ()) {
116- drawTaskIcon (taskScreen , data , ItemIcon .ofItemStack (taskScreen .inputIcon ), poseStack , submitNodeCollector );
108+ // drawTaskIcon(taskScreen, data, ItemIcon.ofItemStack(taskScreen.inputIcon), poseStack, submitNodeCollector);
117109 } else {
118- drawTaskIcon (taskScreen , data , task .getIcon (), poseStack , submitNodeCollector );
110+ // drawTaskIcon(taskScreen, data, task.getIcon(), poseStack, submitNodeCollector);
119111 }
120112 poseStack .popPose ();
121113
122- submitNodeCollector .submitCustomGeometry (poseStack , RenderTypes .text (AtlasIds .BLOCKS ), ((pose , consumer ) -> {
123- // render skin, if needed
124- float [] f = taskScreen .fakeTextureUV ;
125- if (f != null && f .length == 4 ) {
126- poseStack .pushPose ();
127- poseStack .scale (1 / 16f , 1 / 16f , 1 / 16f );
128- poseStack .translate (0 , 0 , 0.01f );
129- RenderUtil .create (poseStack , consumer , 0f , 0f ).withUV (f [0 ], f [1 ], f [2 ], f [3 ]).draw ();
130- poseStack .popPose ();
131- }
132-
133- // render input-only texture, if needed
134- if (taskScreen .isInputOnly && FTBQuestsClientEventHandler .inputOnlySprite != null ) {
135- TextureAtlasSprite s = FTBQuestsClientEventHandler .inputOnlySprite ;
136- poseStack .pushPose ();
137- poseStack .scale (1 / 16f , 1 / 16f , 1 / 16f );
138- RenderUtil .create (poseStack , consumer , 0 , 0 ).withUV (s .getU0 (), s .getV0 (), s .getU1 (), s .getV1 ()).draw ();
139- poseStack .popPose ();
140- }
141- }));
114+ // submitNodeCollector.submitCustomGeometry(poseStack, RenderTypes.text(AtlasIds.BLOCKS), ((pose, consumer) -> {
115+ // // render skin, if needed
116+ // float[] f = taskScreen.fakeTextureUV;
117+ // if (f != null && f.length == 4) {
118+ // poseStack.pushPose();
119+ // poseStack.scale(1 / 16f, 1 / 16f, 1 / 16f);
120+ // poseStack.translate(0, 0, 0.01f);
121+ // RenderUtil.create(poseStack, consumer, 0f, 0f).withUV(f[0], f[1], f[2], f[3]).draw();
122+ // poseStack.popPose();
123+ // }
124+ //
125+ // // render input-only texture, if needed
126+ // if (taskScreen.isInputOnly && FTBQuestsClientEventHandler.inputOnlySprite != null) {
127+ // TextureAtlasSprite s = FTBQuestsClientEventHandler.inputOnlySprite;
128+ // poseStack.pushPose();
129+ // poseStack.scale(1 / 16f, 1 / 16f, 1 / 16f);
130+ // RenderUtil.create(poseStack, consumer, 0, 0).withUV(s.getU0(), s.getV0(), s.getU1(), s.getV1()).draw();
131+ // poseStack.popPose();
132+ // }
133+ // }));
142134
143135 poseStack .popPose ();
144136 }
@@ -215,12 +207,12 @@ private void drawTaskIcon(TaskScreenRenderState taskScreen, TeamData data, final
215207 poseStack .popPose ();
216208 }
217209
218- private void drawString (TaskScreenBlockEntity taskScreen , Font font , MultiBufferSource bufferSource , PoseStack poseStack , Component text , double y , float size ) {
210+ private void drawString (TaskScreenRenderState taskScreen , SubmitNodeCollector collector , PoseStack poseStack , Component text , double y , float size ) {
219211 if (!text .equals (Component .empty ())) {
220212 poseStack .pushPose ();
221213 poseStack .translate (0.5D , y , 0D );
222214
223- int len = font .width (text );
215+ int len = Minecraft . getInstance (). font .width (text );
224216 float scale = size / 9F ;
225217 float width = len * scale ;
226218 if (width > 1F ) {
@@ -232,8 +224,8 @@ private void drawString(TaskScreenBlockEntity taskScreen, Font font, MultiBuffer
232224 }
233225
234226 poseStack .scale (scale , scale , 1F );
235- Matrix4f posMat = poseStack . last (). pose ( );
236- font .drawInBatch (text , -len / 2f , 0 , 0xFFD8D8D8 , taskScreen .isTextShadow (), posMat , bufferSource , Font .DisplayMode .NORMAL , 0x0 , 0x00F000F0 );
227+ collector . submitText ( poseStack , - len / 2f , 0 , text . getVisualOrderText (), taskScreen . textHasShadow , Font . DisplayMode . POLYGON_OFFSET , 15728880 , 0xFFD8D8D8 , 0 , 0 );
228+ // font.drawInBatch(text, -len / 2f, 0, 0xFFD8D8D8, taskScreen.isTextShadow(), posMat, bufferSource, Font.DisplayMode.NORMAL, 0x0, 0x00F000F0);
237229 poseStack .popPose ();
238230 }
239231 }
0 commit comments