Skip to content

Commit 9fb809e

Browse files
committed
Merge remote-tracking branch 'vivecraft/Multiloader-1.21.6' into OpenXR-1.21.5
# Conflicts: # common/src/main/java/org/vivecraft/client/extensions/GlDeviceExtension.java # common/src/main/java/org/vivecraft/client_vr/VRTextureTarget.java # common/src/main/java/org/vivecraft/mixin/client_vr/gui/screens/PauseScreenVRMixin.java # common/src/main/java/org/vivecraft/mixin/client_vr/renderer/GameRendererVRMixin.java
2 parents 6d9b96a + ec23a4c commit 9fb809e

91 files changed

Lines changed: 1360 additions & 1136 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

common/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ dependencies {
1515
modApi("dev.architectury:architectury-fabric:${rootProject.architectury_version}") { exclude group: "net.fabricmc" exclude group: "net.fabricmc.fabric-api" }
1616

1717
// for sodium compat
18-
modCompileOnly "maven.modrinth:sodium:mc1.21.5-0.6.11-fabric"
18+
modCompileOnly "maven.modrinth:sodium:mc1.21.6-0.6.13-fabric"
1919

2020
// for iris compat
21-
modCompileOnly "maven.modrinth:iris:1.8.9+1.21.5-fabric"
21+
modCompileOnly "maven.modrinth:iris:1.9.0+1.21.6-fabric"
2222

2323
// for REI compat
2424
modCompileOnly("me.shedaniel:RoughlyEnoughItems-fabric:18.0.796") { exclude group: "net.fabricmc" exclude group: "net.fabricmc.fabric-api" exclude group: "dev.architectury" }

common/src/main/java/org/vivecraft/client/extensions/BufferBuilderExtension.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ public interface BufferBuilderExtension {
1313
/**
1414
* @return size of the underlying buffer
1515
*/
16-
int vivecraft$getBufferSize();
16+
long vivecraft$getBufferSize();
1717
}

common/src/main/java/org/vivecraft/client/extensions/GlDeviceExtension.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ public interface GlDeviceExtension {
1111
* additional method to create a texture with a predefined id
1212
*/
1313
GpuTexture vivecraft$createFixedIdTexture(
14-
@Nullable Supplier<String> supplier, TextureFormat textureFormat, int width, int height, int mipmapLevels,
15-
int texId);
14+
@Nullable Supplier<String> labelSup, int usageFlags, TextureFormat textureFormat, int width,
15+
int height, int depthLayers, int mipmapLevels, int texId);
1616
GpuTexture vivecraft$precreatedFixedIdTexture(
1717
@Nullable Supplier<String> supplier, TextureFormat textureFormat, int width, int height, int mipmapLevels,
1818
int texId);

common/src/main/java/org/vivecraft/client/gui/framework/GuiVROptionsBase.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import net.minecraft.client.gui.components.ObjectSelectionList;
77
import net.minecraft.client.gui.components.events.GuiEventListener;
88
import net.minecraft.client.gui.screens.Screen;
9+
import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent;
10+
import net.minecraft.client.gui.screens.inventory.tooltip.DefaultTooltipPositioner;
911
import net.minecraft.client.resources.language.I18n;
1012
import net.minecraft.network.chat.Component;
1113
import net.minecraft.network.chat.FormattedText;
@@ -218,7 +220,7 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partia
218220
this.visibleList.render(guiGraphics, mouseX, mouseY, partialTick);
219221
}
220222

221-
guiGraphics.drawCenteredString(this.font, Component.translatable(this.vrTitle), this.width / 2, 15, 0xFFFFFF);
223+
guiGraphics.drawCenteredString(this.font, Component.translatable(this.vrTitle), this.width / 2, 15, 0xFFFFFFFF);
222224

223225
if (this.btnDefaults != null) {
224226
this.btnDefaults.visible = this.drawDefaultButtons;
@@ -352,12 +354,18 @@ private void renderTooltip(GuiGraphics guiGraphics, int mouseX, int mouseY) {
352354
if (guiHover.getY() + guiHover.getHeight() + formattedText.size() * (this.font.lineHeight + 1) +
353355
14 < this.height)
354356
{
355-
guiGraphics.renderTooltip(this.font, this.font.split(Component.literal(tooltip), 308),
356-
this.width / 2 - 166, guiHover.getY() + guiHover.getHeight() + 14);
357+
guiGraphics.renderTooltip(this.font,
358+
this.font.split(Component.literal(tooltip), 308).stream()
359+
.map(ClientTooltipComponent::create).toList(),
360+
this.width / 2 - 166, guiHover.getY() + guiHover.getHeight() + 14,
361+
DefaultTooltipPositioner.INSTANCE, null);
357362
} else {
358-
guiGraphics.renderTooltip(this.font, this.font.split(Component.literal(tooltip), 308),
363+
guiGraphics.renderTooltip(this.font,
364+
this.font.split(Component.literal(tooltip), 308).stream()
365+
.map(ClientTooltipComponent::create).toList(),
359366
this.width / 2 - 166,
360-
guiHover.getY() - formattedText.size() * (this.font.lineHeight + 1) + 9);
367+
guiHover.getY() - formattedText.size() * (this.font.lineHeight + 1) + 9,
368+
DefaultTooltipPositioner.INSTANCE, null);
361369
}
362370
}
363371
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package org.vivecraft.client.gui.pip;
2+
3+
import com.mojang.blaze3d.vertex.PoseStack;
4+
import com.mojang.blaze3d.vertex.VertexConsumer;
5+
import com.mojang.math.Axis;
6+
import net.minecraft.client.gui.render.pip.PictureInPictureRenderer;
7+
import net.minecraft.client.renderer.MultiBufferSource;
8+
import net.minecraft.client.renderer.RenderType;
9+
import net.minecraft.core.Vec3i;
10+
import net.minecraft.util.Mth;
11+
import net.minecraft.world.phys.Vec3;
12+
import org.vivecraft.client.gui.pip.state.GuiFBTPlayerState;
13+
import org.vivecraft.client_vr.render.helpers.RenderHelper;
14+
import org.vivecraft.client_vr.render.rendertypes.VRRenderTypes;
15+
16+
public class GuiFBTPlayerRenderer extends PictureInPictureRenderer<GuiFBTPlayerState> {
17+
18+
private static final Vec3i COLOR_INACTIVE = new Vec3i(128, 64, 64);
19+
private static final Vec3i COLOR_ACTIVE = new Vec3i(64, 128, 64);
20+
private static final byte ALPHA = (byte) 200;
21+
22+
public GuiFBTPlayerRenderer(MultiBufferSource.BufferSource bufferSource) {
23+
super(bufferSource);
24+
}
25+
26+
@Override
27+
public Class<GuiFBTPlayerState> getRenderStateClass() {
28+
return GuiFBTPlayerState.class;
29+
}
30+
31+
@Override
32+
protected void renderToTexture(GuiFBTPlayerState fbtState, PoseStack poseStack) {
33+
34+
poseStack.pushPose();
35+
poseStack.translate(-0.5, -32, 0);
36+
poseStack.scale(4, -4, 4);
37+
poseStack.mulPose(Axis.YP.rotation(Mth.PI + fbtState.yRot()));
38+
39+
// body overlay
40+
RenderType renderType = VRRenderTypes.debugQuads(true);
41+
VertexConsumer builder = this.bufferSource.getBuffer(renderType);
42+
43+
Vec3i color = fbtState.leftReady() && fbtState.rightReady() ? COLOR_ACTIVE : COLOR_INACTIVE;
44+
45+
// legs
46+
RenderHelper.renderBox(builder, new Vec3(2, 0, 0), new Vec3(2, 12, 0), 4, 4, color, ALPHA,
47+
poseStack.last().pose());
48+
RenderHelper.renderBox(builder, new Vec3(-2, 0, 0), new Vec3(-2, 12, 0), 4, 4, color, ALPHA,
49+
poseStack.last().pose());
50+
// body
51+
RenderHelper.renderBox(builder, new Vec3(0, 12, 0), new Vec3(0, 24, 0), 8, 4, color, ALPHA,
52+
poseStack.last().pose());
53+
54+
// head
55+
RenderHelper.renderBox(builder, new Vec3(0, 24, 0), new Vec3(0, 32, 0), 8, 8, color, ALPHA,
56+
poseStack.last().pose());
57+
58+
// arms
59+
RenderHelper.renderBox(builder,
60+
new Vec3(6, 22, 0).subtract(fbtState.left().x() * 2F, fbtState.left().y() * 2F, fbtState.left().z() * 2F),
61+
new Vec3(6, 22, 0).add(fbtState.left().x() * 10F, fbtState.left().y() * 10F, fbtState.left().z() * 10F), 4,
62+
4, fbtState.leftReady() ? COLOR_ACTIVE : COLOR_INACTIVE, ALPHA, poseStack.last().pose());
63+
RenderHelper.renderBox(builder,
64+
new Vec3(-6, 22, 0).subtract(fbtState.right().x() * 2F, fbtState.right().y() * 2F,
65+
fbtState.right().z() * 2F),
66+
new Vec3(-6, 22, 0).add(fbtState.right().x() * 10F, fbtState.right().y() * 10F, fbtState.right().z() * 10F),
67+
4, 4, fbtState.rightReady() ? COLOR_ACTIVE : COLOR_INACTIVE, ALPHA, poseStack.last().pose());
68+
69+
this.bufferSource.endBatch();
70+
poseStack.popPose();
71+
}
72+
73+
@Override
74+
protected String getTextureLabel() {
75+
return "fbt player";
76+
}
77+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.vivecraft.client.gui.pip.state;
2+
3+
import net.minecraft.client.gui.navigation.ScreenRectangle;
4+
import net.minecraft.client.gui.render.state.pip.PictureInPictureRenderState;
5+
import org.jetbrains.annotations.Nullable;
6+
import org.joml.Vector3fc;
7+
8+
public record GuiFBTPlayerState(boolean rightReady, boolean leftReady, Vector3fc right, Vector3fc left, float yRot,
9+
int x0, int y0, int x1, int y1, float scale,
10+
ScreenRectangle bounds) implements PictureInPictureRenderState
11+
{
12+
public GuiFBTPlayerState(
13+
boolean rightReady, boolean leftReady, Vector3fc right, Vector3fc left, float yRot, int x0, int y0, int x1,
14+
int y1)
15+
{
16+
this(rightReady, leftReady, right, left, yRot, x0, y0, x1, y1, 1,
17+
new ScreenRectangle(x0, y0, x1 - x0, y1 - y0));
18+
}
19+
20+
@Override
21+
public @Nullable ScreenRectangle scissorArea() {
22+
return this.bounds;
23+
}
24+
}

common/src/main/java/org/vivecraft/client/gui/screens/BlockedServerScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ protected void init() {
4141
public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) {
4242
super.render(guiGraphics, mouseX, mouseY, partialTick);
4343

44-
guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 15, 0xFFFFFF);
44+
guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 15, 0xFFFFFFFF);
4545
this.message.renderCentered(guiGraphics, this.width / 2, 120);
4646
}
4747
}

common/src/main/java/org/vivecraft/client/gui/screens/ErrorScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ protected void init() {
4747
@Override
4848
public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) {
4949
super.render(guiGraphics, mouseX, mouseY, partialTick);
50-
guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 15, 0xFFFFFF);
50+
guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 15, 0xFFFFFFFF);
5151
}
5252

5353
@Override

common/src/main/java/org/vivecraft/client/gui/screens/FBTCalibrationScreen.java

Lines changed: 13 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,23 @@
11
package org.vivecraft.client.gui.screens;
22

3-
import com.mojang.blaze3d.vertex.PoseStack;
4-
import com.mojang.blaze3d.vertex.VertexConsumer;
5-
import com.mojang.math.Axis;
63
import net.minecraft.client.gui.GuiGraphics;
74
import net.minecraft.client.gui.components.Button;
85
import net.minecraft.client.gui.screens.Screen;
9-
import net.minecraft.client.renderer.RenderType;
10-
import net.minecraft.core.Vec3i;
116
import net.minecraft.network.chat.Component;
127
import net.minecraft.util.Mth;
13-
import net.minecraft.world.phys.Vec3;
148
import org.joml.Quaternionf;
159
import org.joml.Quaternionfc;
1610
import org.joml.Vector3f;
1711
import org.joml.Vector3fc;
1812
import org.vivecraft.client.VivecraftVRMod;
13+
import org.vivecraft.client.gui.pip.state.GuiFBTPlayerState;
1914
import org.vivecraft.client.gui.widgets.MultilineComponent;
2015
import org.vivecraft.client_vr.ClientDataHolderVR;
2116
import org.vivecraft.client_vr.VRState;
2217
import org.vivecraft.client_vr.provider.ControllerType;
23-
import org.vivecraft.client_vr.render.helpers.RenderHelper;
2418
import org.vivecraft.client_vr.settings.AutoCalibration;
2519
import org.vivecraft.common.utils.MathUtils;
20+
import org.vivecraft.mixin.client.gui.GuiGraphicsAccessor;
2621

2722
public class FBTCalibrationScreen extends Screen {
2823

@@ -171,94 +166,21 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partia
171166
} else {
172167
checkPosition();
173168

174-
PoseStack poseStack = guiGraphics.pose();
175-
poseStack.pushPose();
176-
177-
Vec3i color = new Vec3i(128, 64, 64);
178-
Vec3i colorActive = new Vec3i(64, 128, 64);
179-
byte alpha = (byte) 200;
180-
181-
if (this.leftHandAtPosition && this.rightHandAtPosition) {
182-
color = colorActive;
183-
}
184-
185-
// move to screen center
186-
float min = Math.min(guiGraphics.guiWidth(), guiGraphics.guiHeight()) / (4F * 16F);
187-
poseStack.translate(guiGraphics.guiWidth() / 2F, guiGraphics.guiHeight() - 32F, 0);
188-
poseStack.scale(min, -min, min);
189-
poseStack.mulPose(Axis.YP.rotation(Mth.PI));
190-
191-
// arms outline
192-
RenderType renderType = RenderType.debugLineStrip(2F);
193-
VertexConsumer builder = this.minecraft.renderBuffers().bufferSource().getBuffer(renderType);
194-
195-
builder.addVertex(poseStack.last().pose(), 4, 24, -100)
196-
.setColor(1F, 1F, 1F, 1F);
197-
builder.addVertex(poseStack.last().pose(), 16, 24, -100)
198-
.setColor(1F, 1F, 1F, 1F);
199-
builder.addVertex(poseStack.last().pose(), 16, 20, -100)
200-
.setColor(1F, 1F, 1F, 1F);
201-
builder.addVertex(poseStack.last().pose(), 4, 20, -100)
202-
.setColor(1F, 1F, 1F, 1F);
203-
builder.addVertex(poseStack.last().pose(), 4, 24, -100)
204-
.setColor(1F, 1F, 1F, 1F);
205-
206-
// connecting line
207-
builder.addVertex(poseStack.last().pose(), 4, 24, -100)
208-
.setColor(1F, 1F, 1F, 0F);
209-
builder.addVertex(poseStack.last().pose(), -4, 24, -100)
210-
.setColor(1F, 1F, 1F, 0F);
211-
212-
builder.addVertex(poseStack.last().pose(), -4, 24, -100)
213-
.setColor(1F, 1F, 1F, 1F);
214-
builder.addVertex(poseStack.last().pose(), -16, 24, -100)
215-
.setColor(1F, 1F, 1F, 1F);
216-
builder.addVertex(poseStack.last().pose(), -16, 20, -100)
217-
.setColor(1F, 1F, 1F, 1F);
218-
builder.addVertex(poseStack.last().pose(), -4, 20, -100)
219-
.setColor(1F, 1F, 1F, 1F);
220-
builder.addVertex(poseStack.last().pose(), -4, 24, -100)
221-
.setColor(1F, 1F, 1F, 1F);
222-
223-
this.minecraft.renderBuffers().bufferSource().endLastBatch();
169+
// render target rectangles
170+
guiGraphics.renderOutline(guiGraphics.guiWidth() / 2 - 64, guiGraphics.guiHeight() - 32 - 96,
171+
48, 16, 0xFFFFFFFF);
172+
guiGraphics.renderOutline(guiGraphics.guiWidth() / 2 + 16, guiGraphics.guiHeight() - 32 - 96,
173+
48, 16, 0xFFFFFFFF);
224174

175+
// submit player pip
176+
float yRot = 0;
225177
if (VRState.VR_RUNNING) {
226-
poseStack.mulPose(Axis.YP.rotation(
227-
this.yaw - ClientDataHolderVR.getInstance().vrPlayer.vrdata_room_post.hmd.getYawRad()));
178+
yRot = this.yaw - ClientDataHolderVR.getInstance().vrPlayer.vrdata_room_post.hmd.getYawRad();
228179
}
229180

230-
// body overlay
231-
renderType = RenderType.debugQuads();
232-
builder = this.minecraft.renderBuffers().bufferSource().getBuffer(renderType);
233-
234-
// legs
235-
RenderHelper.renderBox(builder,
236-
new Vec3(2, 0, 0), new Vec3(2, 12, 0),
237-
4, 4, color, alpha, poseStack.last().pose());
238-
RenderHelper.renderBox(builder,
239-
new Vec3(-2, 0, 0), new Vec3(-2, 12, 0),
240-
4, 4, color, alpha, poseStack.last().pose());
241-
// body
242-
RenderHelper.renderBox(builder,
243-
new Vec3(0, 12, 0), new Vec3(0, 24, 0),
244-
8, 4, color, alpha, poseStack.last().pose());
245-
246-
// head
247-
RenderHelper.renderBox(builder,
248-
new Vec3(0, 24, 0), new Vec3(0, 32, 0),
249-
8, 8, color, alpha, poseStack.last().pose());
250-
251-
// arms
252-
RenderHelper.renderBox(builder,
253-
new Vec3(6, 22, 0).subtract(this.leftHand.x * 2F, this.leftHand.y * 2F, this.leftHand.z * 2F),
254-
new Vec3(6, 22, 0).add(this.leftHand.x * 10F, this.leftHand.y * 10F, this.leftHand.z * 10F),
255-
4, 4, this.leftHandAtPosition ? colorActive : color, (byte) 200, poseStack.last().pose());
256-
RenderHelper.renderBox(builder,
257-
new Vec3(-6, 22, 0).subtract(this.rightHand.x * 2F, this.rightHand.y * 2F, this.rightHand.z * 2F),
258-
new Vec3(-6, 22, 0).add(this.rightHand.x * 10F, this.rightHand.y * 10F, this.rightHand.z * 10F),
259-
4, 4, this.rightHandAtPosition ? colorActive : color, (byte) 200, poseStack.last().pose());
260-
261-
this.minecraft.renderBuffers().bufferSource().endBatch(renderType);
181+
((GuiGraphicsAccessor) guiGraphics).getGuiRenderState().submitPicturesInPictureState(
182+
new GuiFBTPlayerState(this.rightHandAtPosition, this.leftHandAtPosition, new Vector3f(this.rightHand),
183+
new Vector3f(this.leftHand), yRot, 0, 0, guiGraphics.guiWidth(), guiGraphics.guiHeight()));
262184

263185
if (VRState.VR_RUNNING) {
264186
ClientDataHolderVR.getInstance().vr.getInputAction(VivecraftVRMod.INSTANCE.keyVRInteract)

common/src/main/java/org/vivecraft/client/gui/screens/GarbageCollectorScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ protected void init() {
7676
@Override
7777
public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) {
7878
super.render(guiGraphics, mouseX, mouseY, partialTick);
79-
guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 15, 0xFFFFFF);
79+
guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 15, 0xFFFFFFFF);
8080
}
8181

8282
@Override

0 commit comments

Comments
 (0)