代码调整,添加todo

This commit is contained in:
17146 2025-01-04 20:05:34 +08:00
parent 81a5cff304
commit 606adcb490
3 changed files with 11 additions and 7 deletions

View file

@ -75,7 +75,7 @@ public class MobileVehicleEntity extends EnergyVehicleEntity {
collisionCoolDown = 4;
}
if ((horizontalCollision)) {
if (this.horizontalCollision) {
this.bounceHorizontal(Direction.getNearest(this.getDeltaMovement().x(), this.getDeltaMovement().y(), this.getDeltaMovement().z()).getOpposite());
this.hurt(ModDamageTypes.causeVehicleStrikeDamage(this.level().registryAccess(), this, this.getFirstPassenger() == null ? this : this.getFirstPassenger()), (float) (160 * ((lastTickSpeed - 0.4) * (lastTickSpeed - 0.4))));
if (!this.level().isClientSide) {
@ -83,9 +83,11 @@ public class MobileVehicleEntity extends EnergyVehicleEntity {
}
}
if ((verticalCollision)) {
// TODO bug修复本方法会在速度到达一定程度且乘客不为空时持续对自身造成伤害
if (this.verticalCollision) {
this.bounceVertical(Direction.getNearest(this.getDeltaMovement().x(), this.getDeltaMovement().y(), this.getDeltaMovement().z()).getOpposite());
this.hurt(ModDamageTypes.causeVehicleStrikeDamage(this.level().registryAccess(), this, this.getFirstPassenger() == null ? this : this.getFirstPassenger()), (float) (100 * ((lastTickSpeed - 0.4) * (lastTickSpeed - 0.4))));
this.hurt(ModDamageTypes.causeVehicleStrikeDamage(this.level().registryAccess(), this,
this.getFirstPassenger() == null ? this : this.getFirstPassenger()), (float) (100 * ((lastTickSpeed - 0.4) * (lastTickSpeed - 0.4))));
if (!this.level().isClientSide) {
this.level().playSound(null, this, ModSounds.VEHICLE_STRIKE.get(), this.getSoundSource(), 1, 1);
}
@ -102,10 +104,11 @@ public class MobileVehicleEntity extends EnergyVehicleEntity {
break;
}
}
private void bounceVertical(Direction direction) {
if (direction.getAxis() == Direction.Axis.Y) {
this.setDeltaMovement(this.getDeltaMovement().multiply(0.9, -0.8, 0.9));
}
if (direction.getAxis() == Direction.Axis.Y) {
this.setDeltaMovement(this.getDeltaMovement().multiply(0.9, -0.8, 0.9));
}
}
/**

View file

@ -168,7 +168,7 @@ public class VehicleEntity extends Entity {
if (source.is(DamageTypes.IN_FIRE))
return false;
if (source.is(ModDamageTypes.VEHICLE_STRIKE))
amount-= 20;
amount -= 20;
if (source.getEntity() != null) {
this.entityData.set(LAST_ATTACKER_UUID, source.getEntity().getStringUUID());
}

View file

@ -11,6 +11,7 @@ import net.minecraft.world.level.entity.LevelEntityGetter;
import java.util.UUID;
public class EntityFindUtil {
/**
* 获取世界里的所有实体对ClientLevel和ServerLevel均有效
*