Skip to content

Commit eaa0b86

Browse files
fix: partially fixed the task screen, no item rendering yet
1 parent 7583274 commit eaa0b86

File tree

3 files changed

+32
-39
lines changed

3 files changed

+32
-39
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ allprojects {
5151
}
5252

5353
repositories {
54+
mavenLocal()
5455
maven {
5556
url "https://maven.architectury.dev/"
5657
content {

common/src/main/java/dev/ftb/mods/ftbquests/client/TaskScreenRenderState.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package dev.ftb.mods.ftbquests.client;
22

3-
import dev.ftb.mods.ftblibrary.icon.Icon;
43
import dev.ftb.mods.ftbquests.quest.task.Task;
54
import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState;
65
import net.minecraft.world.item.ItemStack;
@@ -14,4 +13,5 @@ public class TaskScreenRenderState extends BlockEntityRenderState {
1413
boolean isInputOnly;
1514
ItemStack inputIcon;
1615
float @Nullable [] fakeTextureUV = null;
16+
boolean textHasShadow;
1717
}

common/src/main/java/dev/ftb/mods/ftbquests/client/TaskScreenRenderer.java

Lines changed: 30 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package dev.ftb.mods.ftbquests.client;
22

33
import com.mojang.blaze3d.vertex.PoseStack;
4-
import com.mojang.blaze3d.vertex.VertexConsumer;
54
import com.mojang.math.Axis;
65
import dev.architectury.hooks.client.fluid.ClientFluidStackHooks;
7-
import dev.architectury.hooks.fluid.FluidStackHooks;
86
import dev.ftb.mods.ftblibrary.icon.AnimatedIcon;
97
import dev.ftb.mods.ftblibrary.icon.AtlasSpriteIcon;
108
import dev.ftb.mods.ftblibrary.icon.Icon;
@@ -19,24 +17,18 @@
1917
import net.minecraft.ChatFormatting;
2018
import net.minecraft.client.Minecraft;
2119
import net.minecraft.client.gui.Font;
22-
import net.minecraft.client.renderer.MultiBufferSource;
2320
import net.minecraft.client.renderer.SubmitNodeCollector;
2421
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
2522
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
2623
import net.minecraft.client.renderer.feature.ModelFeatureRenderer;
2724
import net.minecraft.client.renderer.rendertype.RenderTypes;
2825
import net.minecraft.client.renderer.state.CameraRenderState;
29-
import net.minecraft.client.renderer.texture.OverlayTexture;
3026
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
3127
import net.minecraft.data.AtlasIds;
3228
import net.minecraft.network.chat.Component;
3329
import net.minecraft.resources.Identifier;
34-
import net.minecraft.world.inventory.InventoryMenu;
35-
import net.minecraft.world.item.ItemDisplayContext;
3630
import net.minecraft.world.level.block.WallSignBlock;
3731
import net.minecraft.world.phys.Vec3;
38-
import org.jetbrains.annotations.UnknownNullability;
39-
import org.joml.Matrix4f;
4032
import org.jspecify.annotations.Nullable;
4133

4234
public 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

Comments
 (0)