尝试修复引擎音效问题
This commit is contained in:
parent
b3f8e7d671
commit
0c86fe5755
3 changed files with 28 additions and 19 deletions
|
@ -127,7 +127,7 @@ public class Mod {
|
||||||
MolangVariable.register();
|
MolangVariable.register();
|
||||||
|
|
||||||
MobileVehicleEntity.trackSound = vehicle -> Minecraft.getInstance().getSoundManager().play(new VehicleSoundInstance.TrackSound(vehicle));
|
MobileVehicleEntity.trackSound = vehicle -> Minecraft.getInstance().getSoundManager().play(new VehicleSoundInstance.TrackSound(vehicle));
|
||||||
MobileVehicleEntity.engineSound = vehicle -> Minecraft.getInstance().getSoundManager().play(new VehicleSoundInstance.EngineSound(vehicle, vehicle.getEngineSound()));
|
MobileVehicleEntity.engineSound = vehicle -> Minecraft.getInstance().getSoundManager().play(new VehicleSoundInstance.EngineSound(vehicle));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,13 +82,14 @@ public abstract class VehicleSoundInstance extends AbstractTickableSoundInstance
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class EngineSound extends VehicleSoundInstance {
|
public static class EngineSound extends VehicleSoundInstance {
|
||||||
public EngineSound(MobileVehicleEntity mobileVehicle, SoundEvent soundEvent) {
|
|
||||||
super(soundEvent, Minecraft.getInstance(), mobileVehicle);
|
public EngineSound(MobileVehicleEntity mobileVehicle) {
|
||||||
|
super(mobileVehicle.getEngineSound(), Minecraft.getInstance(), mobileVehicle);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean canPlay(MobileVehicleEntity mobileVehicle) {
|
protected boolean canPlay(MobileVehicleEntity mobileVehicle) {
|
||||||
return true;
|
return mobileVehicle.engineRunning();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -88,6 +88,8 @@ public abstract class MobileVehicleEntity extends EnergyVehicleEntity implements
|
||||||
public double lastTickVerticalSpeed;
|
public double lastTickVerticalSpeed;
|
||||||
public int collisionCoolDown;
|
public int collisionCoolDown;
|
||||||
|
|
||||||
|
private boolean wasEngineRunning = false;
|
||||||
|
|
||||||
public float rudderRot;
|
public float rudderRot;
|
||||||
public float rudderRotO;
|
public float rudderRotO;
|
||||||
|
|
||||||
|
@ -136,18 +138,6 @@ public abstract class MobileVehicleEntity extends EnergyVehicleEntity implements
|
||||||
super(pEntityType, pLevel);
|
super(pEntityType, pLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void playerTouch(Player pPlayer) {
|
|
||||||
if (pPlayer.isCrouching() && !this.level().isClientSide) {
|
|
||||||
double entitySize = pPlayer.getBbWidth() * pPlayer.getBbHeight();
|
|
||||||
double thisSize = this.getBbWidth() * this.getBbHeight();
|
|
||||||
double f = Math.min(entitySize / thisSize, 2);
|
|
||||||
double f1 = Math.min(thisSize / entitySize, 4);
|
|
||||||
this.setDeltaMovement(this.getDeltaMovement().add(new Vec3(pPlayer.position().vectorTo(this.position()).toVector3f()).scale(0.15 * f * pPlayer.getDeltaMovement().length())));
|
|
||||||
pPlayer.setDeltaMovement(pPlayer.getDeltaMovement().add(new Vec3(this.position().vectorTo(pPlayer.position()).toVector3f()).scale(0.1 * f1 * pPlayer.getDeltaMovement().length())));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void processInput(short keys) {
|
public void processInput(short keys) {
|
||||||
leftInputDown
|
leftInputDown
|
||||||
|
@ -170,8 +160,25 @@ public abstract class MobileVehicleEntity extends EnergyVehicleEntity implements
|
||||||
= (keys & 0b100000000) > 0;
|
= (keys & 0b100000000) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void playerTouch(Player pPlayer) {
|
||||||
|
if (pPlayer.isCrouching() && !this.level().isClientSide) {
|
||||||
|
double entitySize = pPlayer.getBbWidth() * pPlayer.getBbHeight();
|
||||||
|
double thisSize = this.getBbWidth() * this.getBbHeight();
|
||||||
|
double f = Math.min(entitySize / thisSize, 2);
|
||||||
|
double f1 = Math.min(thisSize / entitySize, 4);
|
||||||
|
this.setDeltaMovement(this.getDeltaMovement().add(new Vec3(pPlayer.position().vectorTo(this.position()).toVector3f()).scale(0.15 * f * pPlayer.getDeltaMovement().length())));
|
||||||
|
pPlayer.setDeltaMovement(pPlayer.getDeltaMovement().add(new Vec3(this.position().vectorTo(pPlayer.position()).toVector3f()).scale(0.1 * f1 * pPlayer.getDeltaMovement().length())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void baseTick() {
|
public void baseTick() {
|
||||||
|
if (!this.wasEngineRunning && this.engineRunning() && this.level().isClientSide()) {
|
||||||
|
engineSound.accept(this);
|
||||||
|
}
|
||||||
|
this.wasEngineRunning = this.engineRunning();
|
||||||
|
|
||||||
turretYRotO = this.getTurretYRot();
|
turretYRotO = this.getTurretYRot();
|
||||||
turretXRotO = this.getTurretXRot();
|
turretXRotO = this.getTurretXRot();
|
||||||
|
|
||||||
|
@ -223,9 +230,6 @@ public abstract class MobileVehicleEntity extends EnergyVehicleEntity implements
|
||||||
// 更新前一时刻的速度
|
// 更新前一时刻的速度
|
||||||
previousVelocity = currentVelocity;
|
previousVelocity = currentVelocity;
|
||||||
|
|
||||||
|
|
||||||
engineSound.accept(this);
|
|
||||||
|
|
||||||
double direct = (90 - calculateAngle(this.getDeltaMovement(), this.getViewVector(1))) / 90;
|
double direct = (90 - calculateAngle(this.getDeltaMovement(), this.getViewVector(1))) / 90;
|
||||||
setVelocity(Mth.lerp(0.4, getVelocity(), getDeltaMovement().horizontalDistance() * direct * 20));
|
setVelocity(Mth.lerp(0.4, getVelocity(), getDeltaMovement().horizontalDistance() * direct * 20));
|
||||||
|
|
||||||
|
@ -881,6 +885,10 @@ public abstract class MobileVehicleEntity extends EnergyVehicleEntity implements
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean engineRunning() {
|
||||||
|
return Math.abs(this.entityData.get(POWER)) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void defineSynchedData(SynchedEntityData.Builder builder) {
|
protected void defineSynchedData(SynchedEntityData.Builder builder) {
|
||||||
super.defineSynchedData(builder);
|
super.defineSynchedData(builder);
|
||||||
|
|
Loading…
Add table
Reference in a new issue