添加新伤害类型,修复手持携带强力吸引模组的武器时,炮塔击杀目标会捡起物品的bug
This commit is contained in:
parent
1771b5d91b
commit
1ed4a43721
15 changed files with 43 additions and 11 deletions
|
@ -321,7 +321,7 @@ public class KillMessageOverlay {
|
|||
icon = BURN;
|
||||
} else if (record.damageType == ModDamageTypes.DRONE_HIT) {
|
||||
icon = DRONE;
|
||||
} else if (record.damageType == ModDamageTypes.LASER || record.damageType == ModDamageTypes.LASER_HEADSHOT) {
|
||||
} else if (record.damageType == ModDamageTypes.LASER || record.damageType == ModDamageTypes.LASER_HEADSHOT || record.damageType == ModDamageTypes.LASER_STATIC) {
|
||||
icon = LASER;
|
||||
} else if (record.damageType == ModDamageTypes.VEHICLE_STRIKE) {
|
||||
icon = VEHICLE;
|
||||
|
|
|
@ -6,6 +6,7 @@ import com.atsuishio.superbwarfare.tools.CustomExplosion;
|
|||
import com.atsuishio.superbwarfare.tools.EntityFindUtil;
|
||||
import com.atsuishio.superbwarfare.tools.ParticleTool;
|
||||
import com.atsuishio.superbwarfare.tools.VectorTool;
|
||||
import net.minecraft.core.particles.ParticleTypes;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
||||
|
@ -287,10 +288,12 @@ public class LaserTowerEntity extends EnergyVehicleEntity implements GeoEntity,
|
|||
this.setRot(this.getYRot(), this.getXRot());
|
||||
|
||||
if (this.entityData.get(COOL_DOWN) == 0 && VectorTool.calculateAngle(getViewVector(1), targetVec) < 1) {
|
||||
if (level() instanceof ServerLevel) {
|
||||
this.level().playSound(this, getOnPos(), ModSounds.CHARGE_RIFLE_FIRE_BOOM_3P.get(), SoundSource.PLAYERS, 2, 1);
|
||||
if (level() instanceof ServerLevel serverLevel) {
|
||||
this.level().playSound(this, getOnPos(), ModSounds.LASER_TOWER_SHOOT.get(), SoundSource.PLAYERS, 2, 1);
|
||||
sendParticle(serverLevel, ParticleTypes.END_ROD, naerestEntity.getX(), naerestEntity.getEyeY(), naerestEntity.getZ(), 12, 0, 0, 0, 0.05, true);
|
||||
sendParticle(serverLevel, ParticleTypes.LAVA, naerestEntity.getX(), naerestEntity.getEyeY(), naerestEntity.getZ(), 4, 0, 0, 0, 0.15, true);
|
||||
}
|
||||
naerestEntity.hurt(ModDamageTypes.causeLaserDamage(this.level().registryAccess(), getOwner(), getOwner()), (float) 25);
|
||||
naerestEntity.hurt(ModDamageTypes.causeLaserStaticDamage(this.level().registryAccess(), getOwner(), getOwner()), (float) 25);
|
||||
naerestEntity.invulnerableTime = 0;
|
||||
entityData.set(LASER_LENGTH, distanceTo(naerestEntity));
|
||||
this.entityData.set(COOL_DOWN, 20);
|
||||
|
|
|
@ -765,7 +765,7 @@ public class LivingEventHandler {
|
|||
return;
|
||||
}
|
||||
|
||||
if (stack.is(ModTags.Items.GUN) && PerkHelper.getItemPerkLevel(ModPerks.POWERFUL_ATTRACTION.get(), stack) > 0) {
|
||||
if (stack.is(ModTags.Items.GUN) && PerkHelper.getItemPerkLevel(ModPerks.POWERFUL_ATTRACTION.get(), stack) > 0 && (DamageTypeTool.isGunDamage(source) || DamageTypeTool.isExplosionDamage(source))) {
|
||||
var drops = event.getDrops();
|
||||
drops.forEach(itemEntity -> {
|
||||
ItemStack item = itemEntity.getItem();
|
||||
|
|
|
@ -30,6 +30,7 @@ public class ModDamageTypes {
|
|||
public static final ResourceKey<DamageType> DRONE_HIT = ResourceKey.create(Registries.DAMAGE_TYPE, ModUtils.loc("drone_hit"));
|
||||
public static final ResourceKey<DamageType> LASER = ResourceKey.create(Registries.DAMAGE_TYPE, ModUtils.loc("laser"));
|
||||
public static final ResourceKey<DamageType> LASER_HEADSHOT = ResourceKey.create(Registries.DAMAGE_TYPE, ModUtils.loc("laser_headshot"));
|
||||
public static final ResourceKey<DamageType> LASER_STATIC = ResourceKey.create(Registries.DAMAGE_TYPE, ModUtils.loc("laser_static"));
|
||||
public static final ResourceKey<DamageType> VEHICLE_STRIKE = ResourceKey.create(Registries.DAMAGE_TYPE, ModUtils.loc("vehicle_strike"));
|
||||
public static final ResourceKey<DamageType> AIR_CRASH = ResourceKey.create(Registries.DAMAGE_TYPE, ModUtils.loc("air_crash"));
|
||||
public static final ResourceKey<DamageType> LUNGE_MINE = ResourceKey.create(Registries.DAMAGE_TYPE, ModUtils.loc("lunge_mine"));
|
||||
|
@ -83,6 +84,10 @@ public class ModDamageTypes {
|
|||
return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(LASER), directEntity, attacker);
|
||||
}
|
||||
|
||||
public static DamageSource causeLaserStaticDamage(RegistryAccess registryAccess, @Nullable Entity directEntity, @Nullable Entity attacker) {
|
||||
return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(LASER_STATIC), directEntity, attacker);
|
||||
}
|
||||
|
||||
public static DamageSource causeLaserHeadshotDamage(RegistryAccess registryAccess, @Nullable Entity directEntity, @Nullable Entity attacker) {
|
||||
return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(LASER_HEADSHOT), directEntity, attacker);
|
||||
}
|
||||
|
|
|
@ -413,5 +413,6 @@ public class ModSounds {
|
|||
public static final RegistryObject<SoundEvent> BMP_MISSILE_RELOAD = REGISTRY.register("bmp_missile_reload", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("bmp_missile_reload")));
|
||||
public static final RegistryObject<SoundEvent> BMP_STEP = REGISTRY.register("bmp_step", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("bmp_step")));
|
||||
public static final RegistryObject<SoundEvent> WHEEL_STEP = REGISTRY.register("wheel_step", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("wheel_step")));
|
||||
public static final RegistryObject<SoundEvent> LASER_TOWER_SHOOT = REGISTRY.register("laser_tower_shoot", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("laser_tower_shoot")));
|
||||
}
|
||||
|
||||
|
|
|
@ -19,6 +19,10 @@ public class DamageTypeTool {
|
|||
|| damageType == ModDamageTypes.GUN_FIRE_ABSOLUTE || damageType == ModDamageTypes.GUN_FIRE_HEADSHOT_ABSOLUTE;
|
||||
}
|
||||
|
||||
public static boolean isExplosionDamage(DamageSource source) {
|
||||
return source.is(ModDamageTypes.CUSTOM_EXPLOSION) || source.is(ModDamageTypes.PROJECTILE_BOOM);
|
||||
}
|
||||
|
||||
public static boolean isHeadshotDamage(DamageSource source) {
|
||||
return source.is(ModDamageTypes.GUN_FIRE_HEADSHOT) || source.is(ModDamageTypes.GUN_FIRE_HEADSHOT_ABSOLUTE);
|
||||
}
|
||||
|
|
|
@ -2835,5 +2835,13 @@
|
|||
"stream": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"laser_tower_shoot": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "superbwarfare:laser_tower_shoot",
|
||||
"stream": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Binary file not shown.
|
@ -5,6 +5,7 @@
|
|||
"superbwarfare:custom_explosion",
|
||||
"superbwarfare:cannon_fire",
|
||||
"superbwarfare:laser",
|
||||
"superbwarfare:laser_headshot"
|
||||
"superbwarfare:laser_headshot",
|
||||
"superbwarfare:laser_static"
|
||||
]
|
||||
}
|
|
@ -9,6 +9,7 @@
|
|||
"superbwarfare:laser_headshot",
|
||||
"superbwarfare:vehicle_strike",
|
||||
"superbwarfare:vehicle_explosion",
|
||||
"superbwarfare:air_crash"
|
||||
"superbwarfare:air_crash",
|
||||
"superbwarfare:laser_static"
|
||||
]
|
||||
}
|
|
@ -9,6 +9,7 @@
|
|||
"superbwarfare:laser_headshot",
|
||||
"superbwarfare:vehicle_strike",
|
||||
"superbwarfare:air_crash",
|
||||
"superbwarfare:vehicle_explosion"
|
||||
"superbwarfare:vehicle_explosion",
|
||||
"superbwarfare:laser_static"
|
||||
]
|
||||
}
|
|
@ -9,6 +9,7 @@
|
|||
"superbwarfare:laser_headshot",
|
||||
"superbwarfare:vehicle_strike",
|
||||
"superbwarfare:air_crash",
|
||||
"superbwarfare:vehicle_explosion"
|
||||
"superbwarfare:vehicle_explosion",
|
||||
"superbwarfare:laser_static"
|
||||
]
|
||||
}
|
|
@ -9,6 +9,7 @@
|
|||
"superbwarfare:laser_headshot",
|
||||
"superbwarfare:vehicle_strike",
|
||||
"superbwarfare:air_crash",
|
||||
"superbwarfare:vehicle_explosion"
|
||||
"superbwarfare:vehicle_explosion",
|
||||
"superbwarfare:laser_static"
|
||||
]
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
"superbwarfare:projectile_boom",
|
||||
"superbwarfare:custom_explosion",
|
||||
"superbwarfare:laser",
|
||||
"superbwarfare:laser_headshot"
|
||||
"superbwarfare:laser_headshot",
|
||||
"superbwarfare:laser_static"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"exhaustion": 0,
|
||||
"message_id": "laser",
|
||||
"scaling": "never"
|
||||
}
|
Loading…
Add table
Reference in a new issue