优化近防炮拦截,调整部分载具减伤

This commit is contained in:
Atsuishio 2025-07-10 14:27:14 +08:00 committed by Light_Quanta
parent 1742e1b706
commit 15b20eb86f
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
5 changed files with 14 additions and 34 deletions

View file

@ -60,6 +60,9 @@ public class SmallCannonShellEntity extends FastThrowableProjectile implements G
this.explosionDamage = explosionDamage;
this.explosionRadius = explosionRadius;
this.aa = aa;
if (aa) {
crushProjectile(getDeltaMovement());
}
}
public SmallCannonShellEntity setBlockInteraction(Explosion.BlockInteraction blockInteraction) {

View file

@ -33,7 +33,6 @@ import net.minecraft.world.entity.projectile.Projectile;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Explosion;
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec2;
import net.minecraft.world.phys.Vec3;
import net.neoforged.api.distmarker.Dist;
@ -49,7 +48,6 @@ import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache;
import software.bernie.geckolib.animation.AnimatableManager;
import software.bernie.geckolib.util.GeckoLibUtil;
import java.util.Comparator;
import java.util.Optional;
import java.util.UUID;
import java.util.function.Consumer;
@ -301,7 +299,7 @@ public class Hpj11Entity extends ContainerMobileVehicleEntity implements GeoEnti
Vec3 targetPos = target.getBoundingBox().getCenter();
Vec3 targetVel = target.getDeltaMovement();
Vec3 targetVec = RangeTool.calculateFiringSolution(barrelRootPos, targetPos, targetVel, 30, 0.03);
Vec3 targetVec = RangeTool.calculateFiringSolution(barrelRootPos, targetPos, targetVel, 20, 0.03);
double d0 = targetVec.x;
double d1 = targetVec.y;
@ -319,7 +317,6 @@ public class Hpj11Entity extends ContainerMobileVehicleEntity implements GeoEnti
if (target.distanceTo(this) <= 144 && VectorTool.calculateAngle(getViewVector(1), targetVec) < 10) {
if (checkNoClip(this, target, barrelRootPos) && entityData.get(AMMO) > 0) {
vehicleShoot(player, 0);
findEntityOnPath(barrelRootPos, targetVec, 0.3);
} else {
changeTargetTimer++;
}
@ -356,34 +353,6 @@ public class Hpj11Entity extends ContainerMobileVehicleEntity implements GeoEnti
return !projectile.getOwner().isAlliedTo(this.getOwner()) || (projectile.getOwner().getTeam() != null && projectile.getOwner().getTeam().getName().equals("TDM"));
}
public void findEntityOnPath(Vec3 pos, Vec3 toVec, double size) {
for (Entity target : level().getEntitiesOfClass(Entity.class, new AABB(pos, pos).inflate(0.125).expandTowards(toVec.scale(30)), e -> true).stream().sorted(Comparator.comparingDouble(e -> e.distanceToSqr(pos))).toList()) {
var condition = target instanceof Projectile && isThreateningEntity(this, target, size, pos) && smokeFilter(target);
if (condition) {
causeAirExplode(target.position());
target.discard();
}
}
}
private void causeAirExplode(Vec3 vec3) {
CustomExplosion explosion = new CustomExplosion(this.level(), this,
ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(),
this,
this.getOwner()),
VehicleConfig.HPJ11_EXPLOSION_DAMAGE.get().floatValue(),
vec3.x,
vec3.y,
vec3.z,
VehicleConfig.HPJ11_EXPLOSION_RADIUS.get().floatValue(),
ExplosionConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP).
setDamageMultiplier(1.25f);
explosion.explode();
EventHooks.onExplosionStart(this.level(), explosion);
explosion.finalizeExplosion(false);
ParticleTool.spawnMediumExplosionParticles(this.level(), vec3);
}
public float getGunRot() {
return this.gunRot;
}
@ -479,7 +448,7 @@ public class Hpj11Entity extends ContainerMobileVehicleEntity implements GeoEnti
Vector4f worldPosition = transformPosition(transform, 0f, 0.4f, 0);
entityToSpawn.setPos(worldPosition.x, worldPosition.y, worldPosition.z);
entityToSpawn.shoot(getLookAngle().x, getLookAngle().y, getLookAngle().z, 30, 0.75f);
entityToSpawn.shoot(getLookAngle().x, getLookAngle().y, getLookAngle().z, 20, 0.25f);
level().addFreshEntity(entityToSpawn);
this.entityData.set(GUN_ROTATE, entityData.get(GUN_ROTATE) + 0.5f);

View file

@ -91,6 +91,10 @@
"Value": 1.5,
"Source": "@superbwarfare:gun_grenade"
},
{
"Type": "Multiply",
"Value": 0.75
},
{
"Type": "Reduce",
"Value": 7

View file

@ -96,6 +96,10 @@
"Value": 3,
"Source": "@superbwarfare:mortar_shell"
},
{
"Type": "Multiply",
"Value": 0.8
},
{
"Type": "Reduce",
"Value": 2

View file

@ -7,7 +7,7 @@
"DamageModifiers": [
{
"Type": "Multiply",
"Value": 0.2
"Value": 0.17
},
{
"Type": "Multiply",