Skip to content

Commit c275c92

Browse files
author
The Judge
committed
Merge remote-tracking branch 'vivecraft/Multiloader-1.21' into 1.21.0
2 parents c9c64f3 + eea1369 commit c275c92

17 files changed

Lines changed: 75 additions & 62 deletions

File tree

common/src/main/java/org/vivecraft/client/render/VRPlayerModel_WithArms.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@
1717
import net.minecraft.world.entity.LivingEntity;
1818
import net.minecraft.world.phys.Vec3;
1919
import org.vivecraft.client.VRPlayersClient;
20-
import org.vivecraft.client.Xplat;
20+
import org.vivecraft.client_vr.utils.ScaleHelper;
2121
import org.vivecraft.mod_compat_vr.optifine.OptifineHelper;
22-
import org.vivecraft.mod_compat_vr.pehkui.PehkuiHelper;
2322
import org.vivecraft.mod_compat_vr.sodium.SodiumHelper;
2423

2524
public class VRPlayerModel_WithArms<T extends LivingEntity> extends VRPlayerModel<T> {
@@ -157,13 +156,11 @@ public void setupAnim(T pEntity, float pLimbSwing, float pLimbSwingAmount, float
157156
this.leftShoulder.y += 3.2F;
158157
}
159158

160-
Vec3 vec3 = rotinfo.leftArmPos;
161-
Vec3 vec32 = rotinfo.rightArmPos;
162-
if (Xplat.isModLoaded("pehkui")) {
163-
// remove pehkui scale from that, since the whole entity is scaled
164-
vec3 = vec3.scale(1.0F / PehkuiHelper.getPlayerScale(pEntity, Minecraft.getInstance().getTimer().getGameTimeDeltaPartialTick(false)));
165-
vec32 = vec32.scale(1.0F / PehkuiHelper.getPlayerScale(pEntity, Minecraft.getInstance().getTimer().getGameTimeDeltaPartialTick(false)));
166-
}
159+
// remove entity scale from that
160+
float scale = 1.0F / ScaleHelper.getEntityScale(pEntity, Minecraft.getInstance().getTimer().getGameTimeDeltaPartialTick(false));
161+
Vec3 vec3 = rotinfo.leftArmPos.scale(scale);
162+
Vec3 vec32 = rotinfo.rightArmPos.scale(scale);
163+
167164
vec3 = vec3.add(0.0D, d0, 0.0D);
168165
vec3 = vec3.yRot((float) (-Math.PI + d1));
169166
vec3 = vec3.scale(16.0F / rotinfo.heightScale);

common/src/main/java/org/vivecraft/client_vr/gameplay/VRPlayer.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
import net.minecraft.world.phys.HitResult;
2424
import net.minecraft.world.phys.Vec3;
2525
import org.vivecraft.client.VivecraftVRMod;
26-
import org.vivecraft.client.Xplat;
2726
import org.vivecraft.client.network.ClientNetworking;
27+
import org.vivecraft.client_vr.utils.ScaleHelper;
2828
import org.vivecraft.client_vr.ClientDataHolderVR;
2929
import org.vivecraft.client_vr.ItemTags;
3030
import org.vivecraft.client_vr.MethodHolder;
@@ -39,7 +39,6 @@
3939
import org.vivecraft.client_vr.render.RenderPass;
4040
import org.vivecraft.client_vr.settings.VRSettings;
4141
import org.vivecraft.common.VRServerPerms;
42-
import org.vivecraft.mod_compat_vr.pehkui.PehkuiHelper;
4342

4443
import java.util.ArrayList;
4544
import java.util.Random;
@@ -147,16 +146,14 @@ public void preTick() {
147146

148147
this.worldScale = rawWorldScale;
149148

150-
if (Xplat.isModLoaded("pehkui")) {
151-
// scale world with player size
152-
this.worldScale *= PehkuiHelper.getPlayerScale(mc.player, mc.getTimer().getGameTimeDeltaPartialTick(false));
153-
// limit scale
154-
if (this.worldScale > 100F) {
155-
this.worldScale = 100F;
156-
} else if (this.worldScale < 0.025F) //minClip + player position indicator offset
157-
{
158-
this.worldScale = 0.025F;
159-
}
149+
// scale world with player size
150+
this.worldScale *= ScaleHelper.getEntityScale(mc.player, mc.getTimer().getGameTimeDeltaPartialTick(false));
151+
// limit scale
152+
if (this.worldScale > 100F) {
153+
this.worldScale = 100F;
154+
} else if (this.worldScale < 0.025F) //minClip + player position indicator offset
155+
{
156+
this.worldScale = 0.025F;
160157
}
161158

162159
// check that nobody tries to bypass the server set worldscale limit it with a runtime worldscale

common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/BowTracker.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
import net.minecraft.world.item.UseAnim;
1313
import net.minecraft.world.phys.Vec3;
1414
import org.vivecraft.client.VivecraftVRMod;
15-
import org.vivecraft.client.Xplat;
1615
import org.vivecraft.client.network.ClientNetworking;
16+
import org.vivecraft.client_vr.utils.ScaleHelper;
1717
import org.vivecraft.client_vr.ClientDataHolderVR;
1818
import org.vivecraft.client_vr.VRData;
1919
import org.vivecraft.client_vr.extensions.PlayerExtension;
@@ -22,7 +22,6 @@
2222
import org.vivecraft.client_vr.settings.VRSettings;
2323
import org.vivecraft.common.network.CommonNetworkHelper;
2424
import org.vivecraft.common.utils.math.Vector3;
25-
import org.vivecraft.mod_compat_vr.pehkui.PehkuiHelper;
2625

2726
import java.nio.ByteBuffer;
2827

@@ -126,12 +125,9 @@ public void doProcess(LocalPlayer player) {
126125
this.lastpressed = this.pressed;
127126
this.lastDraw = this.currentDraw;
128127
this.lastcanDraw = this.canDraw;
129-
this.maxDraw = (double) this.mc.player.getBbHeight() * 0.22D;
130128

131-
if (Xplat.isModLoaded("pehkui")) {
132-
// this is meant to be relative to the base Bb height, not the scaled one
133-
this.maxDraw /= PehkuiHelper.getPlayerBbScale(player, mc.getTimer().getGameTimeDeltaPartialTick(false));
134-
}
129+
// this is meant to be relative to the base Bb height, not the scaled one
130+
this.maxDraw = (double) this.mc.player.getBbHeight() * 0.22D / ScaleHelper.getEntityBbScale(player, mc.getTimer().getGameTimeDeltaPartialTick(false));
135131

136132
Vec3 vec3 = vrdata.getController(0).getPosition();
137133
Vec3 vec31 = vrdata.getController(1).getPosition();

common/src/main/java/org/vivecraft/client_vr/gameplay/trackers/CrawlTracker.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@
44
import net.minecraft.client.player.LocalPlayer;
55
import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket;
66
import net.minecraft.world.entity.Pose;
7-
import org.vivecraft.client.Xplat;
87
import org.vivecraft.client.network.ClientNetworking;
8+
import org.vivecraft.client_vr.utils.ScaleHelper;
99
import org.vivecraft.client_vr.ClientDataHolderVR;
1010
import org.vivecraft.common.network.CommonNetworkHelper;
11-
import org.vivecraft.mod_compat_vr.pehkui.PehkuiHelper;
1211

1312
public class CrawlTracker extends Tracker {
1413
private boolean wasCrawling;
@@ -44,10 +43,7 @@ public void reset(LocalPlayer player) {
4443
}
4544

4645
public void doProcess(LocalPlayer player) {
47-
double scaleMultiplier = 1.0;
48-
if (Xplat.isModLoaded("pehkui")) {
49-
scaleMultiplier /= PehkuiHelper.getPlayerScale(player, mc.getTimer().getGameTimeDeltaPartialTick(false));
50-
}
46+
float scaleMultiplier = 1.0F / ScaleHelper.getEntityScale(player, mc.getTimer().getGameTimeDeltaPartialTick(false));
5147
this.crawling = this.dh.vr.hmdPivotHistory.averagePosition(0.2F).y * (double) this.dh.vrPlayer.worldScale * scaleMultiplier + (double) 0.1F < (double) this.dh.vrSettings.crawlThreshold;
5248
this.updateState(player);
5349
}

common/src/main/java/org/vivecraft/client_vr/render/VivecraftItemRendering.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -344,9 +344,12 @@ public static void applyFirstPersonItemTransforms(PoseStack pMatrixStack, Vivecr
344344
translateY = 0.0D;
345345
translateX = 0.0D;
346346
} else if (rendertype == VivecraftItemTransformType.Mace) {
347-
translateX = 0.00D;
348-
translateY = 0.02D;
349-
translateZ = -0.07D;
347+
preRotation = Axis.XP.rotationDegrees((float) gunAngle);
348+
translateX = 0.0D;
349+
translateY = 0.0125;
350+
translateZ = -0.06;
351+
rotation = rotation.mul(Axis.XP.rotationDegrees((float) -gunAngle));
352+
scale = 0.56F;
350353
}
351354
}
352355
} else {

common/src/main/java/org/vivecraft/client_vr/render/helpers/VREffectsHelper.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -885,9 +885,16 @@ public static void renderFaceOverlay(float partialTicks) {
885885
if (((GameRendererExtension) mc.gameRenderer).vivecraft$isInBlock() > 0.0F) {
886886
renderFaceInBlock();
887887

888+
RenderSystem.getModelViewStack().pushMatrix().identity();
889+
RenderHelper.applyVRModelView(dataHolder.currentPass, RenderSystem.getModelViewStack());
890+
RenderSystem.applyModelViewMatrix();
891+
888892
renderGuiAndShadow(partialTicks, true, true);
889893

890894
VRArmHelper.renderVRHands(partialTicks, true, true, true, true);
895+
896+
RenderSystem.getModelViewStack().popMatrix();
897+
RenderSystem.applyModelViewMatrix();
891898
}
892899
}
893900

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.vivecraft.client_vr.utils;
2+
3+
import net.minecraft.world.entity.LivingEntity;
4+
import org.vivecraft.client.Xplat;
5+
import org.vivecraft.mod_compat_vr.pehkui.PehkuiHelper;
6+
7+
public class ScaleHelper {
8+
9+
public static float getEntityScale(LivingEntity livingEntity, float tickDelta) {
10+
float scale = livingEntity.getScale();
11+
if (Xplat.isModLoaded("pehkui")) {
12+
scale *= PehkuiHelper.getEntityScale(livingEntity, tickDelta);
13+
}
14+
return scale;
15+
}
16+
17+
public static float getEntityBbScale(LivingEntity livingEntity, float tickDelta) {
18+
float scale = livingEntity.getScale();
19+
if (Xplat.isModLoaded("pehkui")) {
20+
scale *= PehkuiHelper.getEntityBbScale(livingEntity, tickDelta);
21+
}
22+
return scale;
23+
}
24+
}

common/src/main/java/org/vivecraft/mixin/client_vr/MinecraftVRMixin.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -542,10 +542,6 @@ public abstract class MinecraftVRMixin implements MinecraftExtension {
542542
if (VRState.vrRunning) {
543543

544544
if (ClientDataHolderVR.getInstance().menuWorldRenderer.isReady()) {
545-
// update textures in the menu
546-
if (this.level == null) {
547-
this.textureManager.tick();
548-
}
549545
ClientDataHolderVR.getInstance().menuWorldRenderer.tick();
550546
}
551547

common/src/main/java/org/vivecraft/mixin/client_vr/particle/ItemPickupParticleVRMixin.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@
1111
import org.spongepowered.asm.mixin.Unique;
1212
import org.spongepowered.asm.mixin.injection.At;
1313
import org.spongepowered.asm.mixin.injection.Redirect;
14-
import org.vivecraft.client.Xplat;
1514
import org.vivecraft.client_vr.VRState;
1615
import org.vivecraft.client_vr.render.helpers.RenderHelper;
17-
import org.vivecraft.mod_compat_vr.pehkui.PehkuiHelper;
1816

1917
@Mixin(ItemPickupParticle.class)
2018
public class ItemPickupParticleVRMixin {
@@ -45,14 +43,7 @@ public class ItemPickupParticleVRMixin {
4543
@Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Mth;lerp(DDD)D", ordinal = 1), method = "render")
4644
public double vivecraft$updateY(double d, double e, double f) {
4745
if (VRState.vrRunning && target == vivecraft$mc.player) {
48-
float offset = 0.5F;
49-
if (Xplat.isModLoaded("pehkui")) {
50-
// pehkui changes the offset, need to account for that
51-
offset *= PehkuiHelper.getPlayerScale(target, (float) d);
52-
}
53-
// offset, so the particle is centered around the arm
54-
offset += itemEntity.getBbHeight();
55-
e = f = vivecraft$playerPos.y - offset;
46+
e = f = vivecraft$playerPos.y - itemEntity.getBbHeight();
5647
}
5748

5849
return Mth.lerp(d, e, f);

common/src/main/java/org/vivecraft/mod_compat_vr/iris/IrisHelper.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public class IrisHelper {
4141
private static Method CapturedRenderingState_getGbufferProjection;
4242

4343
private static Method WorldRenderingSettings_setUseExtendedVertexFormat;
44+
private static Method WorldRenderingSettings_shouldUseExtendedVertexFormat;
4445

4546
public static boolean isIrisLoaded() {
4647
return Xplat.isModLoaded("iris") || Xplat.isModLoaded("oculus");
@@ -83,7 +84,11 @@ public static boolean hasWaterEffect() {
8384
}
8485

8586
public static boolean isShaderActive() {
86-
return IrisApi.getInstance().isShaderPackInUse();
87+
try {
88+
return IrisApi.getInstance().isShaderPackInUse() || (WorldRenderingSettings_shouldUseExtendedVertexFormat != null && (boolean) WorldRenderingSettings_shouldUseExtendedVertexFormat.invoke(WorldRenderingSettings.INSTANCE));
89+
} catch (InvocationTargetException | IllegalAccessException e) {
90+
return false;
91+
}
8792
}
8893

8994
public static boolean hasIssuesWithMenuWorld() {
@@ -164,6 +169,7 @@ private static boolean init() {
164169

165170
try {
166171
WorldRenderingSettings_setUseExtendedVertexFormat = Class.forName("net.irisshaders.iris.shaderpack.materialmap.WorldRenderingSettings").getMethod("setUseExtendedVertexFormat", boolean.class);
172+
WorldRenderingSettings_shouldUseExtendedVertexFormat = Class.forName("net.irisshaders.iris.shaderpack.materialmap.WorldRenderingSettings").getMethod("shouldUseExtendedVertexFormat");
167173
} catch (ClassNotFoundException | NoSuchMethodException ignore) {}
168174

169175
// distant horizon compat

0 commit comments

Comments
 (0)