优化履带动画

This commit is contained in:
Atsuihsio 2025-03-13 01:07:12 +08:00
parent 78a5b59f8b
commit 074b187900
6 changed files with 151 additions and 211 deletions

View file

@ -3,9 +3,6 @@ package com.atsuishio.superbwarfare.client.model.entity;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.entity.vehicle.Bmp2Entity; import com.atsuishio.superbwarfare.entity.vehicle.Bmp2Entity;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
import software.bernie.geckolib.core.animation.AnimationState;
import software.bernie.geckolib.model.GeoModel; import software.bernie.geckolib.model.GeoModel;
public class Bmp2Model extends GeoModel<Bmp2Entity> { public class Bmp2Model extends GeoModel<Bmp2Entity> {
@ -37,92 +34,4 @@ public class Bmp2Model extends GeoModel<Bmp2Entity> {
public ResourceLocation getTextureResource(Bmp2Entity entity) { public ResourceLocation getTextureResource(Bmp2Entity entity) {
return ModUtils.loc("textures/entity/bmp2.png"); return ModUtils.loc("textures/entity/bmp2.png");
} }
@Override
public void setCustomAnimations(Bmp2Entity animatable, long instanceId, AnimationState<Bmp2Entity> animationState) {
for (int i = 0; i < 50; i++) {
CoreGeoBone trackL = getAnimationProcessor().getBone("trackL" + i);
CoreGeoBone trackLRot = getAnimationProcessor().getBone("trackLRot" + i);
CoreGeoBone trackR = getAnimationProcessor().getBone("trackR" + i);
CoreGeoBone trackRRot = getAnimationProcessor().getBone("trackRRot" + i);
float t = animatable.getLeftTrack() + 2 * i;
if (t >= 100) {
t -= 100;
}
trackAnimation(trackL, trackLRot, t);
float t2 = animatable.getRightTrack() + 2 * i;
if (t2 >= 100) {
t2 -= 100;
}
trackAnimation(trackR, trackRRot, t2);
}
}
public void trackAnimation(CoreGeoBone track, CoreGeoBone trackRot, float t) {
if (t < 37.5) {
track.setPosY(0);
track.setPosZ(3 * t);
trackRot.setRotX(0);
}
if (t >= 37.5 && t < 39.5) {
track.setPosY(-(t - 37.5f) * 3 * 0.7071f);
track.setPosZ(3 * 37.5f + (t - 37.5f) * 3 * 0.7071f);
trackRot.setRotX(45 * Mth.DEG_TO_RAD);
}
if (t >= 39.5 && t < 41.5) {
track.setPosY(-5.3f - (t - 39.5f) * 3);
track.setPosZ(116);
trackRot.setRotX(90 * Mth.DEG_TO_RAD);
}
if (t >= 41.5 && t < 43) {
track.setPosY(-11.6f - (t - 41.5f) * 3 * 0.7071f);
track.setPosZ(115 - (t - 41.5f) * 3 * 0.7071f);
trackRot.setRotX(135 * Mth.DEG_TO_RAD);
}
if (t >= 43 && t < 49.5) {
track.setPosY(-15.6f - (t - 43f) * 3 * 0.45f);
track.setPosZ(109.5f - (t - 43f) * 3 * 0.75f);
trackRot.setRotX(150 * Mth.DEG_TO_RAD);
}
if (t >= 49.5 && t < 76.5) {
track.setPosY(-23.5f);
track.setPosZ(95f - (t - 49.5f) * 3);
trackRot.setRotX(180 * Mth.DEG_TO_RAD);
}
if (t >= 76.5 && t < 83.5) {
track.setPosY(-23.5f + (t - 76.5f) * 3 * 0.45f);
track.setPosZ(13.5f - (t - 76.5f) * 3 * 0.75f);
trackRot.setRotX(210 * Mth.DEG_TO_RAD);
}
if (t >= 83.5 && t < 85.5) {
track.setPosY(-12.7f + (t - 83.5f) * 3 * 0.7071f);
track.setPosZ(-3.5f - (t - 83.5f) * 3 * 0.7071f);
trackRot.setRotX(225 * Mth.DEG_TO_RAD);
}
if (t >= 85.5 && t < 87) {
track.setPosY(-9.2f + (t - 85.5f) * 3);
track.setPosZ(-6.9f);
trackRot.setRotX(270 * Mth.DEG_TO_RAD);
}
if (t >= 87 && t < 89) {
track.setPosY(-4.3f + (t - 87f) * 3 * 0.7071f);
track.setPosZ(-6.9f + (t - 87f) * 3 * 0.7071f);
trackRot.setRotX(315 * Mth.DEG_TO_RAD);
}
}
} }

View file

@ -3,9 +3,6 @@ package com.atsuishio.superbwarfare.client.model.entity;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.entity.vehicle.Yx100Entity; import com.atsuishio.superbwarfare.entity.vehicle.Yx100Entity;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
import software.bernie.geckolib.core.animation.AnimationState;
import software.bernie.geckolib.model.GeoModel; import software.bernie.geckolib.model.GeoModel;
public class Yx100Model extends GeoModel<Yx100Entity> { public class Yx100Model extends GeoModel<Yx100Entity> {
@ -37,80 +34,4 @@ public class Yx100Model extends GeoModel<Yx100Entity> {
public ResourceLocation getTextureResource(Yx100Entity entity) { public ResourceLocation getTextureResource(Yx100Entity entity) {
return ModUtils.loc("textures/entity/yx_100.png"); return ModUtils.loc("textures/entity/yx_100.png");
} }
@Override
public void setCustomAnimations(Yx100Entity animatable, long instanceId, AnimationState<Yx100Entity> animationState) {
for (int i = 0; i < 40; i++) {
CoreGeoBone trackL = getAnimationProcessor().getBone("trackL" + i);
CoreGeoBone trackLRot = getAnimationProcessor().getBone("trackLRot" + i);
CoreGeoBone trackR = getAnimationProcessor().getBone("trackR" + i);
CoreGeoBone trackRRot = getAnimationProcessor().getBone("trackRRot" + i);
float t = animatable.getLeftTrack() + 2 * i;
if (t >= 80) {
t -= 80;
}
// trackAnimation(trackL, trackLRot, t);
float t2 = animatable.getRightTrack() + 2 * i;
if (t2 >= 80) {
t2 -= 80;
}
// trackAnimation(trackR, trackRRot, t2);
}
}
public void trackAnimation(CoreGeoBone track, CoreGeoBone trackRot, float t) {
if (t < 34.5) {
track.setPosY(0);
track.setPosZ(4f * t);
trackRot.setRotX(0);
}
if (t >= 34.5 && t < 35.75) {
track.setPosY(-(t - 34.5f) * 4f * 0.7071f);
track.setPosZ(4f * 34.5f + (t - 34.5f) * 4f * 0.7071f);
trackRot.setRotX(45 * Mth.DEG_TO_RAD);
}
if (t >= 35.75 && t < 37.75) {
track.setPosY(-4f - (t - 35.75f) * 4f);
track.setPosZ(142);
trackRot.setRotX(90 * Mth.DEG_TO_RAD);
}
if (t >= 37.75 && t < 44) {
track.setPosY(-11.4f - (t - 37.75f) * 4.5f * 0.42f);
track.setPosZ(141f - (t - 37.75f) * 4.5f * 0.75f);
trackRot.setRotX(150 * Mth.DEG_TO_RAD);
}
if (t >= 44 && t < 70.75) {
track.setPosY(-21.5f);
track.setPosZ(120f - (t - 44f) * 4);
trackRot.setRotX(180 * Mth.DEG_TO_RAD);
}
if (t >= 70.75 && t < 77) {
track.setPosY(-21f + (t - 70.75f) * 4.5F * 0.42f);
track.setPosZ(11.4f - (t - 70.75f) * 4.5f * 0.75f);
trackRot.setRotX(210 * Mth.DEG_TO_RAD);
}
if (t >= 77 && t < 78.25) {
track.setPosY(-7.8f + (t - 77f) * 4f);
track.setPosZ(-10.6f);
trackRot.setRotX(270 * Mth.DEG_TO_RAD);
}
if (t >= 78.25 && t < 80) {
track.setPosY(-2.3f + (t - 78.25f) * 4 * 0.7071f);
track.setPosZ(-9.6f + (t - 78.25f) * 4 * 0.7071f);
trackRot.setRotX(315 * Mth.DEG_TO_RAD);
}
}
} }

View file

@ -70,11 +70,98 @@ public class Bmp2Renderer extends GeoEntityRenderer<Bmp2Entity> {
bone.setRotZ((float) (0.5 * (Math.random() - 0.5))); bone.setRotZ((float) (0.5 * (Math.random() - 0.5)));
} }
for (int i = 0; i < 51; i++) {
float t = animatable.getLeftTrack() + 2 * i;
float t2 = animatable.getRightTrack() + 2 * i;
if (t >= 100) {
t -= 100;
}
if (t2 >= 100) {
t2 -= 100;
}
if (name.equals("trackL" + i)) {
bone.setPosY(getBoneMoveY(t));
bone.setPosZ(getBoneMoveZ(t));
}
if (name.equals("trackR" + i)) {
bone.setPosY(getBoneMoveY(t2));
bone.setPosZ(getBoneMoveZ(t2));
}
if (name.equals("trackLRot" + i)) {
bone.setRotX(-getBoneRotX(t) * Mth.DEG_TO_RAD);
}
if (name.equals("trackRRot" + i)) {
bone.setRotX(-getBoneRotX(t2) * Mth.DEG_TO_RAD);
}
}
super.renderRecursively(poseStack, animatable, bone, renderType, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha); super.renderRecursively(poseStack, animatable, bone, renderType, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha);
} }
@Override public float getBoneRotX(float t) {
protected float getDeathMaxRotation(Bmp2Entity entityLivingBaseIn) { if (t <= 37.6667) return 0F;
return 0.0F; if (t <= 38.5833) return Mth.lerp((t - 37.6667F) / (38.5833F - 37.6667F), 0F, -45F);
if (t <= 39.75) return -45F;
if (t <= 40.6667) return Mth.lerp((t - 39.75F) / (40.6667F - 39.75F), -45F, -90F);
if (t <= 41.6667) return -90F;
if (t <= 42.5) return -90F;
if (t <= 43.5) return Mth.lerp(t - 42.5F, -90F, -135F);
if (t <= 44.5833) return -135F;
if (t <= 45.0833) return Mth.lerp((t - 44.5833F) / (45.0833F - 44.5833F), -135F, -150F);
if (t <= 52.25) return -150F;
if (t <= 52.75) return Mth.lerp((t - 52.25F) / (52.75F - 52.25F), -150F, -180F);
if (t <= 84.3333) return -180F;
if (t <= 84.9167) return Mth.lerp((t - 84.3333F) / (84.9167F - 84.3333F), -180F, -210F);
if (t <= 92.5833) return -210F;
if (t <= 93.4167) return Mth.lerp((t - 92.5833F) / (93.4167F - 92.5833F), -210F, -220F);
if (t <= 94.25) return -220F;
if (t <= 94.9167) return Mth.lerp((t - 94.25F) / (94.9167F - 94.25F), -220F, -243.33F);
if (t <= 95.75) return Mth.lerp((t - 94.9167F) / (95.75F - 94.9167F), -243.33F, -270F);
if (t <= 96.8333) return -270F;
if (t <= 97.5833) return Mth.lerp((t - 96.8333F) / (97.5833F - 96.8333F), -270F, -315F);
if (t <= 98.8333) return -315F;
if (t <= 99.5833) return Mth.lerp((t - 98.8333F) / (99.5833F - 98.8333F), -315F, -360F);
return 0F;
}
public float getBoneMoveY(float t) {
if (t <= 37.6667) return 0F;
if (t <= 38.5833) return Mth.lerp((t - 37.6667F) / (38.5833F - 37.6667F), 0F, -1.8F);
if (t <= 40.3333) return Mth.lerp((t - 38.5833F) / (40.3333F - 38.5833F), -1.8F, -4.1F);
if (t <= 42.9167) return Mth.lerp((t - 40.3333F) / (42.9167F - 40.3333F), -4.1F, -10.3F);
if (t <= 44.25) return Mth.lerp((t - 42.9167F) / (44.25F - 42.9167F), -10.3F, -12.9F);
if (t <= 52.4167) return Mth.lerp((t - 44.25F) / (52.4167F - 44.25F), -12.9F, -23.96F);
if (t <= 84.5833) return -23.96F;
if (t <= 93) return Mth.lerp((t - 84.5833F) / (93F - 84.5833F), -23.96F, -12.93F);
if (t <= 95.25) return Mth.lerp((t - 93F) / (95.25F - 93F), -12.93F, -10.085F);
if (t <= 97.5) return Mth.lerp((t - 95.25F) / (97.5F - 95.25F), -10.085F, -4.585F);
if (t <= 98.8333) return Mth.lerp((t - 97.5F) / (98.8333F - 97.5F), -4.585F, -1.165F);
if (t <= 99.25) return Mth.lerp((t - 98.8333F) / (99.25F - 98.8333F), -1.165F, -0.25F);
return Mth.lerp((t - 99.25F) / (100F - 99.25F), -0.25F, 0F);
}
public float getBoneMoveZ(float t) {
if (t <= 37.6667) return Mth.lerp(t / (37.6667F - 0F), 0F, 111.6F);
if (t <= 38.5833) return Mth.lerp((t - 37.6667F) / (38.5833F - 37.6667F), 111.6F, 113.25F);
if (t <= 40.3333) return Mth.lerp((t - 38.5833F) / (40.3333F - 38.5833F), 113.25F, 116F);
if (t <= 42.9167) return 116F;
if (t <= 44.25) return Mth.lerp((t - 42.9167F) / (44.25F - 42.9167F), 116F, 113.5F);
if (t <= 52.4167) return Mth.lerp((t - 44.25F) / (52.4167F - 44.25F), 113.5F, 96.25F);
if (t <= 84.5833) return Mth.lerp((t - 52.4167F) / (84.5833F - 52.4167F), 96.25F, 14.095F);
if (t <= 93) return Mth.lerp((t - 84.5833F) / (93F - 84.5833F), 14.095F, -3.565F);
if (t <= 95.25) return Mth.lerp((t - 93F) / (95.25F - 93F), -3.565F, -6.35F);
if (t <= 97.5) return Mth.lerp((t - 95.25F) / (97.5F - 95.25F), -6.35F, -6.39F);
if (t <= 98.8333) return Mth.lerp((t - 97.5F) / (98.8333F - 97.5F), -6.39F, -3.03F);
if (t <= 99.25) return Mth.lerp((t - 98.8333F) / (99.25F - 98.8333F), -3.03F, -1.95F);
return Mth.lerp((t - 99.25F) / (100F - 99.25F), -1.95F, 0F);
} }
} }

View file

@ -84,7 +84,6 @@ public class Yx100Renderer extends GeoEntityRenderer<Yx100Entity> {
} }
if (name.equals("base")) { if (name.equals("base")) {
bone.setHidden(true);
float a = animatable.getEntityData().get(YAW); float a = animatable.getEntityData().get(YAW);
float r = (Mth.abs(a) - 90f) / 90f; float r = (Mth.abs(a) - 90f) / 90f;
@ -107,52 +106,86 @@ public class Yx100Renderer extends GeoEntityRenderer<Yx100Entity> {
bone.setRotZ(r2 * Mth.lerp(partialTick, (float) animatable.recoilShakeO, (float) animatable.getRecoilShake()) * Mth.DEG_TO_RAD * 1.5f); 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++) { for (int i = 0; i < 41; i++) {
float tO = animatable.leftTrackO + 2 * i;
float t = animatable.getLeftTrack() + 2 * i; float t = animatable.getLeftTrack() + 2 * i;
float t2 = animatable.getRightTrack() + 2 * i;
if (t >= 80) { if (t >= 80) {
t -= 80; t -= 80;
} }
float tO2 = animatable.rightTrackO + 2 * i;
float t2 = animatable.getRightTrack() + 2 * i;
if (t2 >= 80) { if (t2 >= 80) {
t2 -= 80; t2 -= 80;
} }
if (name.equals("trackL" + i)) { if (name.equals("trackL" + i)) {
bone.setPosY(Mth.lerp(partialTick, getBoneMoveY(tO), getBoneMoveY(t))); bone.setPosY(getBoneMoveY(t));
bone.setPosZ(Mth.lerp(partialTick, getBoneMoveZ(tO), getBoneMoveZ(t))); bone.setPosZ(getBoneMoveZ(t));
} }
if (name.equals("trackR" + i)) { if (name.equals("trackR" + i)) {
bone.setPosY(Mth.lerp(partialTick, getBoneMoveY(tO2), getBoneMoveY(t2))); bone.setPosY(getBoneMoveY(t2));
bone.setPosZ(Mth.lerp(partialTick, getBoneMoveZ(tO2), getBoneMoveZ(t2))); bone.setPosZ(getBoneMoveZ(t2));
} }
if (name.equals("trackLRot" + i)) { if (name.equals("trackLRot" + i)) {
bone.setRotX(Mth.lerp(partialTick, getBoneRotX(tO), getBoneRotX(t)) * Mth.DEG_TO_RAD); bone.setRotX(-getBoneRotX(t) * Mth.DEG_TO_RAD);
} }
if (name.equals("trackRRot" + i)) { if (name.equals("trackRRot" + i)) {
bone.setRotX(Mth.lerp(partialTick, getBoneRotX(tO2), getBoneRotX(t2)) * Mth.DEG_TO_RAD); bone.setRotX(-getBoneRotX(t2) * Mth.DEG_TO_RAD);
} }
} }
super.renderRecursively(poseStack, animatable, bone, renderType, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha); super.renderRecursively(poseStack, animatable, bone, renderType, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha);
} }
public float getBoneRotX(float t) {
if (t <= 32.5833) return 0F;
if (t <= 33.5833) return Mth.lerp(t - 32.5833F, 0F, -45F);
if (t <= 34.5833) return Mth.lerp(t - 33.5833F, -45F, -90F);
if (t <= 36.8333) return Mth.lerp((t - 34.5833F) / (36.8333F - 34.5833F), -90F, -150F);
if (t <= 40.5833) return -150F;
if (t <= 41.0833) return Mth.lerp((t - 40.5833F) / (41.0833F - 40.5833F), -150F, -180F);
if (t <= 70) return -180F;
if (t <= 71) return Mth.lerp(t - 70F, -180F, -210F);
if (t <= 74.25) return -210F;
if (t <= 76.5) return Mth.lerp((t - 74.25F) / (76.5F - 74.25F), -210F, -270F);
if (t <= 77.5) return Mth.lerp(t - 76.5F, -270F, -315F);
if (t <= 79.75) return Mth.lerp((t - 77.5F) / (79.75F - 77.5F), -315F, -360F);
return 0F;
}
public float getBoneMoveY(float t) { public float getBoneMoveY(float t) {
return y; if (t <= 32.5833) return 0F;
if (t <= 33.0833) return Mth.lerp((t - 32.5833F) / (33.0833F - 32.5833F), 0F, -1F);
if (t <= 34.0833) return Mth.lerp(t - 33.0833F, -1F, -2.5F);
if (t <= 35.5833) return Mth.lerp((t - 34.0833F) / (35.5833F - 34.0833F), -2.5F, -7.5F);
if (t <= 36.8333) return Mth.lerp((t - 35.5833F) / (36.8333F - 35.5833F), -7.5F, -12.25F);
if (t <= 41.0833) return Mth.lerp((t - 36.8333F) / (41.0833F - 36.8333F), -12.25F, -20.9F);
if (t <= 70) return -20.9F;
if (t <= 74.25) return Mth.lerp((t - 70F) / (74.25F - 70F), -20.9F, -12.25F);
if (t <= 76) return Mth.lerp((t - 74.25F) / (76F - 74.25F), -12.25F, -7.5F);
if (t <= 77.75) return Mth.lerp((t - 76F) / (77.75F - 76F), -7.5F, -2F);
if (t <= 79.25) return Mth.lerp((t - 77.75F) / (79.25F - 77.75F), -2F, -0.3F);
return Mth.lerp((t - 79.25F) / (80F - 79.25F), -0.3F, 0F);
} }
public float getBoneMoveZ(float t) { public float getBoneMoveZ(float t) {
return z; if (t <= 32.5833) return Mth.lerp(t / (32.5833F - 0F), 0F, 135.6F);
} if (t <= 33.0833) return Mth.lerp((t - 32.5833F) / (33.0833F - 32.5833F), 135.6F, 137.75F);
if (t <= 34.0833) return Mth.lerp(t - 33.0833F, 137.75F, 140.25F);
if (t <= 35.5833) return 140.25F;
if (t <= 36.8333) return Mth.lerp((t - 35.5833F) / (36.8333F - 35.5833F), 140.25F, 137.25F);
if (t <= 41.0833) return Mth.lerp((t - 36.8333F) / (41.0833F - 36.8333F), 137.25F, 121.5F);
if (t <= 70) return Mth.lerp((t - 41.0833F) / (70F - 41.0833F), 121.5F, 11.5F);
if (t <= 74.25) return Mth.lerp((t - 70F) / (74.25F - 70F), 11.5F, -3.75F);
if (t <= 76) return Mth.lerp((t - 74.25F) / (76F - 74.25F), -3.75F, -10F);
if (t <= 77.75) return Mth.lerp((t - 76F) / (77.75F - 76F), -10F, -8.25F);
if (t <= 79.25) return Mth.lerp((t - 77.75F) / (79.25F - 77.75F), -8.25F, -4.12F);
public float getBoneRotX(float t) { return Mth.lerp((t - 79.25F) / (80F - 79.25F), -4.12F, 0F);
return x;
} }
} }

View file

@ -188,25 +188,20 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
public void baseTick() { public void baseTick() {
super.baseTick(); super.baseTick();
if (getLeftTrack() < 0) { while (getLeftTrack() > 80F) {
setLeftTrack(80); setLeftTrack(getLeftTrack() - 80F);
}
while (getLeftTrack() <= 0) {
setLeftTrack(getLeftTrack() + 80F);
} }
if (getLeftTrack() > 80) { while (getRightTrack() > 80F) {
setLeftTrack(0); setRightTrack(getRightTrack() - 80F);
} }
while (getRightTrack() <= 0) {
if (getRightTrack() < 0) { setRightTrack(getRightTrack() + 80F);
setRightTrack(80);
} }
if (getRightTrack() > 80) {
setRightTrack(0);
}
setRightTrack(getRightTrack() + 0.1f);
setLeftTrack(getLeftTrack() + 0.1f);
if (this.entityData.get(CANNON_FIRE_TIME) > 0) { if (this.entityData.get(CANNON_FIRE_TIME) > 0) {
this.entityData.set(CANNON_FIRE_TIME, this.entityData.get(CANNON_FIRE_TIME) - 1); this.entityData.set(CANNON_FIRE_TIME, this.entityData.get(CANNON_FIRE_TIME) - 1);
} }
@ -507,8 +502,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.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))); 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))); setLeftTrack((float) ((getLeftTrack() - 1.5 * 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))); setRightTrack((float) ((getRightTrack() - 1.5 * Math.PI * s0) - Mth.clamp(0.4f * Math.PI * this.entityData.get(DELTA_ROT), -5f, 5f)));
if (this.isInWater() || onGround()) { if (this.isInWater() || onGround()) {
this.setYRot((float) (this.getYRot() - (isInWater() && !onGround() ? 2.5 : 6) * entityData.get(DELTA_ROT))); this.setYRot((float) (this.getYRot() - (isInWater() && !onGround() ? 2.5 : 6) * entityData.get(DELTA_ROT)));

View file

@ -68,8 +68,6 @@ public abstract class MobileVehicleEntity extends EnergyVehicleEntity {
public float leftWheelRotO; public float leftWheelRotO;
public float rightWheelRotO; public float rightWheelRotO;
public float leftTrackO;
public float rightTrackO;
public float leftTrack; public float leftTrack;
public float rightTrack; public float rightTrack;
@ -113,9 +111,6 @@ public abstract class MobileVehicleEntity extends EnergyVehicleEntity {
leftWheelRotO = this.getLeftWheelRot(); leftWheelRotO = this.getLeftWheelRot();
rightWheelRotO = this.getRightWheelRot(); rightWheelRotO = this.getRightWheelRot();
leftTrackO = this.getLeftTrack();
rightTrackO = this.getRightTrack();
rotorRotO = this.getRotorRot(); rotorRotO = this.getRotorRot();
rudderRotO = this.getRudderRot(); rudderRotO = this.getRudderRot();