man!
This commit is contained in:
parent
da7bb84159
commit
b398fa1b23
1 changed files with 91 additions and 80 deletions
|
@ -242,86 +242,100 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
||||||
Entity passenger4 = getNthEntity(3);
|
Entity passenger4 = getNthEntity(3);
|
||||||
float diffX;
|
float diffX;
|
||||||
float diffY;
|
float diffY;
|
||||||
|
float diffZ;
|
||||||
|
|
||||||
|
if (getHealth() > 0) {
|
||||||
if (passenger == null) {
|
if (passenger == null) {
|
||||||
this.leftInputDown = false;
|
this.leftInputDown = false;
|
||||||
this.rightInputDown = false;
|
this.rightInputDown = false;
|
||||||
this.forwardInputDown = false;
|
|
||||||
this.backInputDown = false;
|
|
||||||
this.upInputDown = false;
|
|
||||||
this.downInputDown = false;
|
|
||||||
this.setZRot(this.roll * 0.98f);
|
|
||||||
this.setXRot(this.getXRot() * 0.98f);
|
|
||||||
if (passenger2 == null && passenger3 == null && passenger4 == null) {
|
|
||||||
this.entityData.set(POWER, this.entityData.get(POWER) * 0.99f);
|
|
||||||
}
|
|
||||||
} else if (passenger instanceof Player) {
|
|
||||||
diffY = Math.clamp(-90f, 90f, Mth.wrapDegrees(passenger.getYHeadRot() - this.getYRot()));
|
|
||||||
diffX = Math.clamp(-60f, 60f, Mth.wrapDegrees(passenger.getXRot() - this.getXRot()));
|
|
||||||
|
|
||||||
if (rightInputDown) {
|
|
||||||
holdTick++;
|
|
||||||
this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) - 2f * Math.min(holdTick, 7) * this.entityData.get(POWER));
|
|
||||||
} else if (this.leftInputDown) {
|
|
||||||
holdTick++;
|
|
||||||
this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) + 2f * Math.min(holdTick, 7) * this.entityData.get(POWER));
|
|
||||||
} else {
|
|
||||||
holdTick = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.setYRot(this.getYRot() + Mth.clamp((this.onGround() ? 0.1f : 2f) * diffY * this.entityData.get(PROPELLER_ROT), -10f, 10f));
|
|
||||||
this.setXRot(Mth.clamp(this.getXRot() + ((this.onGround()) ? 0 : 1.5f) * diffX * this.entityData.get(PROPELLER_ROT), -80, 80));
|
|
||||||
this.setZRot(this.getRoll() - this.entityData.get(DELTA_ROT) + (this.onGround() ? 0 : 0.25f) * diffY * this.entityData.get(PROPELLER_ROT));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.level() instanceof ServerLevel) {
|
|
||||||
if (this.getEnergy() > 0) {
|
|
||||||
boolean up = upInputDown || forwardInputDown;
|
|
||||||
boolean down = this.downInputDown;
|
|
||||||
|
|
||||||
if (!engineStart && up) {
|
|
||||||
engineStart = true;
|
|
||||||
this.level().playSound(null, this, ModSounds.HELICOPTER_ENGINE_START.get(), this.getSoundSource(), 3, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (up && engineStartOver) {
|
|
||||||
holdPowerTick++;
|
|
||||||
this.entityData.set(POWER, Math.min(this.entityData.get(POWER) + 0.0007f * Math.min(holdPowerTick, 10), 0.12f));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (engineStartOver) {
|
|
||||||
if (down) {
|
|
||||||
holdPowerTick++;
|
|
||||||
this.entityData.set(POWER, Math.max(this.entityData.get(POWER) - 0.001f * Math.min(holdPowerTick, 5), this.onGround() ? 0 : 0.025f));
|
|
||||||
} else if (backInputDown) {
|
|
||||||
holdPowerTick++;
|
|
||||||
this.entityData.set(POWER, Math.max(this.entityData.get(POWER) - 0.001f * Math.min(holdPowerTick, 5), this.onGround() ? 0 : 0.052f));
|
|
||||||
if (passenger != null) {
|
|
||||||
passenger.setXRot(0.8f * passenger.getXRot());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (engineStart && !engineStartOver) {
|
|
||||||
this.entityData.set(POWER, Math.min(this.entityData.get(POWER) + 0.0012f, 0.045f));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(up || down || backInputDown) && engineStartOver) {
|
|
||||||
if (this.getDeltaMovement().y() < 0) {
|
|
||||||
this.entityData.set(POWER, Math.min(this.entityData.get(POWER) + 0.0002f, 0.12f));
|
|
||||||
} else {
|
|
||||||
this.entityData.set(POWER, Math.max(this.entityData.get(POWER) - (this.onGround() ? 0.00005f : 0.0002f), 0));
|
|
||||||
}
|
|
||||||
holdPowerTick = 0;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.entityData.set(POWER, Math.max(this.entityData.get(POWER) - 0.0001f, 0));
|
|
||||||
this.forwardInputDown = false;
|
this.forwardInputDown = false;
|
||||||
this.backInputDown = false;
|
this.backInputDown = false;
|
||||||
engineStart = false;
|
this.upInputDown = false;
|
||||||
engineStartOver = false;
|
this.downInputDown = false;
|
||||||
|
this.setZRot(this.roll * 0.98f);
|
||||||
|
this.setXRot(this.getXRot() * 0.98f);
|
||||||
|
if (passenger2 == null && passenger3 == null && passenger4 == null) {
|
||||||
|
this.entityData.set(POWER, this.entityData.get(POWER) * 0.99f);
|
||||||
|
}
|
||||||
|
} else if (passenger instanceof Player) {
|
||||||
|
diffY = Math.clamp(-90f, 90f, Mth.wrapDegrees(passenger.getYHeadRot() - this.getYRot()));
|
||||||
|
diffX = Math.clamp(-60f, 60f, Mth.wrapDegrees(passenger.getXRot() - this.getXRot()));
|
||||||
|
|
||||||
|
if (rightInputDown) {
|
||||||
|
holdTick++;
|
||||||
|
this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) - 2f * Math.min(holdTick, 7) * this.entityData.get(POWER));
|
||||||
|
} else if (this.leftInputDown) {
|
||||||
|
holdTick++;
|
||||||
|
this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) + 2f * Math.min(holdTick, 7) * this.entityData.get(POWER));
|
||||||
|
} else {
|
||||||
|
holdTick = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setYRot(this.getYRot() + Mth.clamp((this.onGround() ? 0.1f : 2f) * diffY * this.entityData.get(PROPELLER_ROT), -10f, 10f));
|
||||||
|
this.setXRot(Mth.clamp(this.getXRot() + ((this.onGround()) ? 0 : 1.5f) * diffX * this.entityData.get(PROPELLER_ROT), -80, 80));
|
||||||
|
this.setZRot(this.getRoll() - this.entityData.get(DELTA_ROT) + (this.onGround() ? 0 : 0.25f) * diffY * this.entityData.get(PROPELLER_ROT));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.level() instanceof ServerLevel) {
|
||||||
|
if (this.getEnergy() > 0) {
|
||||||
|
boolean up = upInputDown || forwardInputDown;
|
||||||
|
boolean down = this.downInputDown;
|
||||||
|
|
||||||
|
if (!engineStart && up) {
|
||||||
|
engineStart = true;
|
||||||
|
this.level().playSound(null, this, ModSounds.HELICOPTER_ENGINE_START.get(), this.getSoundSource(), 3, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (up && engineStartOver) {
|
||||||
|
holdPowerTick++;
|
||||||
|
this.entityData.set(POWER, Math.min(this.entityData.get(POWER) + 0.0007f * Math.min(holdPowerTick, 10), 0.12f));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (engineStartOver) {
|
||||||
|
if (down) {
|
||||||
|
holdPowerTick++;
|
||||||
|
this.entityData.set(POWER, Math.max(this.entityData.get(POWER) - 0.001f * Math.min(holdPowerTick, 5), this.onGround() ? 0 : 0.025f));
|
||||||
|
} else if (backInputDown) {
|
||||||
|
holdPowerTick++;
|
||||||
|
this.entityData.set(POWER, Math.max(this.entityData.get(POWER) - 0.001f * Math.min(holdPowerTick, 5), this.onGround() ? 0 : 0.052f));
|
||||||
|
if (passenger != null) {
|
||||||
|
passenger.setXRot(0.8f * passenger.getXRot());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (engineStart && !engineStartOver) {
|
||||||
|
this.entityData.set(POWER, Math.min(this.entityData.get(POWER) + 0.0012f, 0.045f));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(up || down || backInputDown) && engineStartOver) {
|
||||||
|
if (this.getDeltaMovement().y() < 0) {
|
||||||
|
this.entityData.set(POWER, Math.min(this.entityData.get(POWER) + 0.0002f, 0.12f));
|
||||||
|
} else {
|
||||||
|
this.entityData.set(POWER, Math.max(this.entityData.get(POWER) - (this.onGround() ? 0.00005f : 0.0002f), 0));
|
||||||
|
}
|
||||||
|
holdPowerTick = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.entityData.set(POWER, Math.max(this.entityData.get(POWER) - 0.0001f, 0));
|
||||||
|
this.forwardInputDown = false;
|
||||||
|
this.backInputDown = false;
|
||||||
|
engineStart = false;
|
||||||
|
engineStartOver = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.entityData.set(POWER, Math.max(this.entityData.get(POWER) - 0.0001f, 0.01f));
|
||||||
|
float destroy = 0;
|
||||||
|
destroy += 9f;
|
||||||
|
|
||||||
|
diffX = 45 - this.getXRot();
|
||||||
|
diffZ = -20 - this.getRoll();
|
||||||
|
|
||||||
|
this.setXRot(this.getXRot() + diffX * 0.1f * this.entityData.get(PROPELLER_ROT));
|
||||||
|
this.setYRot(this.getYRot() + destroy);
|
||||||
|
this.setZRot(this.getRoll() + diffZ * 0.1f * this.entityData.get(PROPELLER_ROT));
|
||||||
|
setDeltaMovement(getDeltaMovement().add(0, -0.06, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) * 0.9f);
|
this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) * 0.9f);
|
||||||
|
@ -338,10 +352,6 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
||||||
Vector3f direction = getRightDirection().mul(-Math.sin(this.getRoll() * Mth.DEG_TO_RAD) * this.entityData.get(PROPELLER_ROT));
|
Vector3f direction = getRightDirection().mul(-Math.sin(this.getRoll() * Mth.DEG_TO_RAD) * this.entityData.get(PROPELLER_ROT));
|
||||||
setDeltaMovement(getDeltaMovement().add(new Vec3(direction.x, direction.y, direction.z).scale(3)));
|
setDeltaMovement(getDeltaMovement().add(new Vec3(direction.x, direction.y, direction.z).scale(3)));
|
||||||
|
|
||||||
// if (passenger instanceof Player player) {
|
|
||||||
// player.displayClientMessage(Component.literal(this.getRoll() + ""), true);
|
|
||||||
// }
|
|
||||||
|
|
||||||
Vector3f directionZ = getForwardDirection().mul(-Math.cos((this.getXRot() + 90) * Mth.DEG_TO_RAD) * this.entityData.get(PROPELLER_ROT));
|
Vector3f directionZ = getForwardDirection().mul(-Math.cos((this.getXRot() + 90) * Mth.DEG_TO_RAD) * this.entityData.get(PROPELLER_ROT));
|
||||||
setDeltaMovement(getDeltaMovement().add(new Vec3(directionZ.x, directionZ.y, directionZ.z).scale(3)));
|
setDeltaMovement(getDeltaMovement().add(new Vec3(directionZ.x, directionZ.y, directionZ.z).scale(3)));
|
||||||
|
|
||||||
|
@ -469,6 +479,7 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void destroy() {
|
public void destroy() {
|
||||||
|
if (!onGround()) return;
|
||||||
if (this.crash) {
|
if (this.crash) {
|
||||||
crashPassengers();
|
crashPassengers();
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Reference in a new issue