From 848404872c09ab7b71716d7d1568d30e6c7a012a Mon Sep 17 00:00:00 2001 From: Atsuishio <842960157@qq.com> Date: Wed, 2 Apr 2025 15:48:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DGameRendererMixin=E8=A7=86?= =?UTF-8?q?=E8=A7=92=E6=97=8B=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/vehicle/Ah6Entity.java | 2 +- .../superbwarfare/mixins/CameraMixin.java | 2 +- .../mixins/GameRendererMixin.java | 28 ++++++++----------- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java index e0cbaa381..3a292e765 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Ah6Entity.java @@ -440,7 +440,7 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity Matrix4f transform = getVehicleTransform(1); float x = 0.6f; - float y = -0.85f; + float y = -0.65f; float z = 1f; int i = this.getOrderedPassengers().indexOf(passenger); diff --git a/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java b/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java index 5920f5bdb..835db1cc0 100644 --- a/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java +++ b/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java @@ -163,7 +163,7 @@ public abstract class CameraMixin { var cameraPosition = vehicle.getThirdPersonCameraPosition(vehicle.getSeatIndex(entity)); if (cameraPosition != null) { - move(-getMaxZoom((float) cameraPosition.distance()), (float) cameraPosition.y(), (float) cameraPosition.z()); + move(-getMaxZoom((float) cameraPosition.distance()), (float) cameraPosition.y(), -(float) cameraPosition.z()); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/mixins/GameRendererMixin.java b/src/main/java/com/atsuishio/superbwarfare/mixins/GameRendererMixin.java index 9b37f9f72..3d846d106 100644 --- a/src/main/java/com/atsuishio/superbwarfare/mixins/GameRendererMixin.java +++ b/src/main/java/com/atsuishio/superbwarfare/mixins/GameRendererMixin.java @@ -7,7 +7,6 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; import net.minecraft.client.Camera; import net.minecraft.client.CameraType; -import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.util.Mth; @@ -44,14 +43,12 @@ public class GameRendererMixin { private Camera mainCamera; @SuppressWarnings("ConstantValue") - @Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;setup(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/world/entity/Entity;ZZF)V")) - public void superbWarfare$renderWorld(DeltaTracker deltaTracker, CallbackInfo ci) { + @Inject(method = "bobHurt(Lcom/mojang/blaze3d/vertex/PoseStack;F)V", at = @At("HEAD"), cancellable = false) + public void superbWarfare$renderWorld(PoseStack poseStack, float partialTicks, CallbackInfo ci) { Entity entity = mainCamera.getEntity(); - if (entity != null && !mainCamera.isDetached() && entity.getRootVehicle() instanceof VehicleEntity vehicle) { // rotate camera - var tickDelta = deltaTracker.getGameTimeDeltaPartialTick(true); - float a = vehicle.getTurretYaw(tickDelta); + float a = vehicle.getTurretYaw(partialTicks); float r = (Mth.abs(a) - 90f) / 90f; @@ -67,8 +64,7 @@ public class GameRendererMixin { } } - // TODO game render mixin matrices -// matrices.mulPose(Axis.ZP.rotationDegrees(-r * vehicle.getRoll(tickDelta) + r2 * vehicle.getViewXRot(tickDelta))); + poseStack.mulPose(Axis.ZP.rotationDegrees(-r * vehicle.getRoll(partialTicks) + r2 * vehicle.getViewXRot(partialTicks))); if (!(vehicle instanceof SpeedboatEntity)) { // fetch eye offset @@ -77,17 +73,17 @@ public class GameRendererMixin { // transform eye offset to match aircraft rotation Vector3f offset = new Vector3f(0, -eye, 0); Quaternionf quaternion = Axis.XP.rotationDegrees(0.0f); - quaternion.mul(Axis.YP.rotationDegrees(-vehicle.getViewYRot(tickDelta))); - quaternion.mul(Axis.XP.rotationDegrees(vehicle.getViewXRot(tickDelta))); - quaternion.mul(Axis.ZP.rotationDegrees(vehicle.getRoll(tickDelta))); + quaternion.mul(Axis.YP.rotationDegrees(-vehicle.getViewYRot(partialTicks))); + quaternion.mul(Axis.XP.rotationDegrees(vehicle.getViewXRot(partialTicks))); + quaternion.mul(Axis.ZP.rotationDegrees(vehicle.getRoll(partialTicks))); offset.rotate(quaternion); // apply camera offset -// matrices.mulPose(Axis.XP.rotationDegrees(mainCamera.getXRot())); -// matrices.mulPose(Axis.YP.rotationDegrees(mainCamera.getYRot() + 180.0f)); -// matrices.translate(offset.x(), offset.y() + eye, offset.z()); -// matrices.mulPose(Axis.YP.rotationDegrees(-mainCamera.getYRot() - 180.0f)); -// matrices.mulPose(Axis.XP.rotationDegrees(-mainCamera.getXRot())); + poseStack.mulPose(Axis.XP.rotationDegrees(mainCamera.getXRot())); + poseStack.mulPose(Axis.YP.rotationDegrees(mainCamera.getYRot() + 180.0f)); + poseStack.translate(offset.x(), offset.y() + eye, offset.z()); + poseStack.mulPose(Axis.YP.rotationDegrees(-mainCamera.getYRot() - 180.0f)); + poseStack.mulPose(Axis.XP.rotationDegrees(-mainCamera.getXRot())); } } }