给小鸟添加了单独的破坏配置
This commit is contained in:
parent
6340223db3
commit
566a504923
4 changed files with 23 additions and 6 deletions
|
@ -65,6 +65,7 @@ public class VehicleConfig {
|
|||
public static ModConfigSpec.IntValue AH_6_ROCKET_DAMAGE;
|
||||
public static ModConfigSpec.IntValue AH_6_ROCKET_EXPLOSION_DAMAGE;
|
||||
public static ModConfigSpec.IntValue AH_6_ROCKET_EXPLOSION_RADIUS;
|
||||
public static ModConfigSpec.BooleanValue AH_6_CANNON_DESTROY;
|
||||
|
||||
public static ModConfigSpec.IntValue LAV_150_HP;
|
||||
public static ModConfigSpec.IntValue LAV_150_ENERGY_COST;
|
||||
|
@ -308,6 +309,9 @@ public class VehicleConfig {
|
|||
builder.comment("The rocket explosion radius of AH-6");
|
||||
AH_6_ROCKET_EXPLOSION_RADIUS = builder.defineInRange("ah_6_rocket_explosion_radius", 5, 1, 10000000);
|
||||
|
||||
builder.comment("Whether to destroy the block when cannon of AH-6 hits a block");
|
||||
AH_6_CANNON_DESTROY = builder.define("ah_6_cannon_destroy", true);
|
||||
|
||||
builder.pop();
|
||||
|
||||
builder.push("LAV-150");
|
||||
|
|
|
@ -39,6 +39,7 @@ public class SmallCannonShellEntity extends FastThrowableProjectile implements G
|
|||
private float explosionDamage = 80f;
|
||||
private float explosionRadius = 5f;
|
||||
private boolean aa;
|
||||
private Explosion.BlockInteraction blockInteraction;
|
||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||
|
||||
public SmallCannonShellEntity(EntityType<? extends SmallCannonShellEntity> type, Level world) {
|
||||
|
@ -54,6 +55,11 @@ public class SmallCannonShellEntity extends FastThrowableProjectile implements G
|
|||
this.aa = aa;
|
||||
}
|
||||
|
||||
public SmallCannonShellEntity setBlockInteraction(Explosion.BlockInteraction blockInteraction) {
|
||||
this.blockInteraction = blockInteraction;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NotNull Item getDefaultItem() {
|
||||
return ModItems.SMALL_SHELL.get();
|
||||
|
@ -112,8 +118,10 @@ public class SmallCannonShellEntity extends FastThrowableProjectile implements G
|
|||
vec3.y,
|
||||
vec3.z,
|
||||
explosionRadius,
|
||||
hitEntity ? Explosion.BlockInteraction.KEEP : (ExplosionConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP)).
|
||||
setDamageMultiplier(1.25f);
|
||||
this.blockInteraction != null ? this.blockInteraction :
|
||||
hitEntity ? Explosion.BlockInteraction.KEEP :
|
||||
(ExplosionConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP)
|
||||
).setDamageMultiplier(1.25f);
|
||||
explosion.explode();
|
||||
EventHooks.onExplosionStart(this.level(), explosion);
|
||||
explosion.finalizeExplosion(false);
|
||||
|
@ -154,13 +162,11 @@ public class SmallCannonShellEntity extends FastThrowableProjectile implements G
|
|||
.filter(entity -> !(entity instanceof SmallCannonShellEntity) && (entity.getBbWidth() >= 0.3 || entity.getBbHeight() >= 0.3))
|
||||
.toList();
|
||||
for (var entity : entities) {
|
||||
|
||||
causeExplode(entity.position(), false);
|
||||
|
||||
entity.discard();
|
||||
this.discard();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -81,6 +81,7 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
|||
return new VehicleWeapon[][]{
|
||||
new VehicleWeapon[]{
|
||||
new SmallCannonShellWeapon()
|
||||
.blockInteraction(VehicleConfig.AH_6_CANNON_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP)
|
||||
.damage(VehicleConfig.AH_6_CANNON_DAMAGE.get())
|
||||
.explosionDamage(VehicleConfig.AH_6_CANNON_EXPLOSION_DAMAGE.get().floatValue())
|
||||
.explosionRadius(VehicleConfig.AH_6_CANNON_EXPLOSION_RADIUS.get().floatValue())
|
||||
|
|
|
@ -2,12 +2,13 @@ package com.atsuishio.superbwarfare.entity.vehicle.weapon;
|
|||
|
||||
import com.atsuishio.superbwarfare.entity.projectile.SmallCannonShellEntity;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.level.Explosion;
|
||||
|
||||
public class SmallCannonShellWeapon extends VehicleWeapon {
|
||||
|
||||
public float damage = 40, explosionDamage = 80, explosionRadius = 5;
|
||||
|
||||
public boolean aa = false;
|
||||
public Explosion.BlockInteraction blockInteraction = null;
|
||||
|
||||
public SmallCannonShellWeapon damage(float damage) {
|
||||
this.damage = damage;
|
||||
|
@ -29,7 +30,12 @@ public class SmallCannonShellWeapon extends VehicleWeapon {
|
|||
return this;
|
||||
}
|
||||
|
||||
public SmallCannonShellWeapon blockInteraction(Explosion.BlockInteraction blockInteraction) {
|
||||
this.blockInteraction = blockInteraction;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SmallCannonShellEntity create(LivingEntity entity) {
|
||||
return new SmallCannonShellEntity(entity, entity.level(), damage, explosionDamage, explosionRadius, aa);
|
||||
return new SmallCannonShellEntity(entity, entity.level(), damage, explosionDamage, explosionRadius, aa).setBlockInteraction(blockInteraction);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue