From 5e340c2cc04af206427cca5ee70e21de029fcff9 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Wed, 12 Mar 2025 21:52:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E7=AE=80=E5=8C=96=E5=B1=A5?= =?UTF-8?q?=E5=B8=A6=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/entity/Yx100Model.java | 4 +-- .../client/renderer/entity/Yx100Renderer.java | 36 +++++++++++++++++++ .../entity/vehicle/Yx100Entity.java | 7 ++-- 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Yx100Model.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Yx100Model.java index 68395eff5..9674a1837 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Yx100Model.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Yx100Model.java @@ -52,7 +52,7 @@ public class Yx100Model extends GeoModel { t -= 80; } - trackAnimation(trackL, trackLRot, t); +// trackAnimation(trackL, trackLRot, t); float t2 = animatable.getRightTrack() + 2 * i; @@ -60,7 +60,7 @@ public class Yx100Model extends GeoModel { t2 -= 80; } - trackAnimation(trackR, trackRRot, t2); +// trackAnimation(trackR, trackRRot, t2); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100Renderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100Renderer.java index 8ab73457a..d88829ad3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100Renderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100Renderer.java @@ -84,6 +84,7 @@ public class Yx100Renderer extends GeoEntityRenderer { } if (name.equals("base")) { + bone.setHidden(true); float a = animatable.getEntityData().get(YAW); float r = (Mth.abs(a) - 90f) / 90f; @@ -105,6 +106,41 @@ public class Yx100Renderer extends GeoEntityRenderer { bone.setPosX(r2 * Mth.lerp(partialTick, (float) animatable.recoilShakeO, (float) animatable.getRecoilShake()) * 1f); bone.setRotZ(r2 * Mth.lerp(partialTick, (float) animatable.recoilShakeO, (float) animatable.getRecoilShake()) * Mth.DEG_TO_RAD * 1.5f); } + + for (int i = 0; i < 40; i++) { + float tO = animatable.leftTrackO + 2 * i; + float t = animatable.getLeftTrack() + 2 * i; + + if (t >= 80) { + t -= 80; + } + + float tO2 = animatable.rightTrackO + 2 * i; + float t2 = animatable.getRightTrack() + 2 * i; + + if (t2 >= 80) { + t2 -= 80; + } + + if (name.equals("trackL" + i)) { + bone.setPosY(Mth.lerp(partialTick, getBoneMoveY(tO), getBoneMoveY(t))); + bone.setPosZ(Mth.lerp(partialTick, getBoneMoveZ(tO), getBoneMoveZ(t))); + } + + if (name.equals("trackR" + i)) { + bone.setPosY(Mth.lerp(partialTick, getBoneMoveY(tO2), getBoneMoveY(t2))); + bone.setPosZ(Mth.lerp(partialTick, getBoneMoveZ(tO2), getBoneMoveZ(t2))); + } + + } super.renderRecursively(poseStack, animatable, bone, renderType, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha); } + + public float getBoneMoveY(float t) { + return y; + } + + public float getBoneMoveZ(float t) { + return z; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java index 2b1edde81..279892763 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java @@ -204,6 +204,9 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti setRightTrack(0); } + setRightTrack(getRightTrack() + 0.1f); + setLeftTrack(getLeftTrack() + 0.1f); + if (this.entityData.get(CANNON_FIRE_TIME) > 0) { this.entityData.set(CANNON_FIRE_TIME, this.entityData.get(CANNON_FIRE_TIME) - 1); } @@ -504,8 +507,8 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti this.setLeftWheelRot((float) ((this.getLeftWheelRot() - 1.25 * s0) + Mth.clamp(0.75f * this.entityData.get(DELTA_ROT), -5f, 5f))); this.setRightWheelRot((float) ((this.getRightWheelRot() - 1.25 * s0) - Mth.clamp(0.75f * this.entityData.get(DELTA_ROT), -5f, 5f))); - setLeftTrack((float) ((getLeftTrack() - 1.9 * Math.PI * s0) + Mth.clamp(0.4f * Math.PI * this.entityData.get(DELTA_ROT), -5f, 5f))); - setRightTrack((float) ((getRightTrack() - 1.9 * Math.PI * s0) - Mth.clamp(0.4f * Math.PI * this.entityData.get(DELTA_ROT), -5f, 5f))); +// setLeftTrack((float) ((getLeftTrack() - 1.9 * Math.PI * s0) + Mth.clamp(0.4f * Math.PI * this.entityData.get(DELTA_ROT), -5f, 5f))); +// setRightTrack((float) ((getRightTrack() - 1.9 * Math.PI * s0) - Mth.clamp(0.4f * Math.PI * this.entityData.get(DELTA_ROT), -5f, 5f))); if (this.isInWater() || onGround()) { this.setYRot((float) (this.getYRot() - (isInWater() && !onGround() ? 2.5 : 6) * entityData.get(DELTA_ROT)));