添加起爆器音效,允许C4贴在投掷者身上
This commit is contained in:
parent
a5332a6cac
commit
b3fe6f24ad
7 changed files with 34 additions and 9 deletions
|
@ -279,7 +279,7 @@ public class C4Entity extends Projectile implements GeoEntity {
|
|||
protected void onHitEntity(EntityHitResult pResult) {
|
||||
super.onHitEntity(pResult);
|
||||
Entity entity = pResult.getEntity();
|
||||
if (entity == this.getOwner() || entity == this.getVehicle()) return;
|
||||
if (entity == this.getVehicle()) return;
|
||||
this.entityData.set(TARGET_UUID, entity.getStringUUID());
|
||||
this.onEntity = true;
|
||||
this.setDeltaMovement(this.getDeltaMovement().multiply(0, 0, 0));
|
||||
|
|
|
@ -425,5 +425,7 @@ public class ModSounds {
|
|||
public static final RegistryObject<SoundEvent> TURRET_TURN = REGISTRY.register("turret_turn", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("turret_turn")));
|
||||
public static final RegistryObject<SoundEvent> C4_BEEP = REGISTRY.register("c4_beep", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("c4_beep")));
|
||||
public static final RegistryObject<SoundEvent> C4_FINAL = REGISTRY.register("c4_final", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("c4_final")));
|
||||
public static final RegistryObject<SoundEvent> C4_THROW = REGISTRY.register("c4_throw", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("c4_throw")));
|
||||
public static final RegistryObject<SoundEvent> C4_DETONATOR_CLICK = REGISTRY.register("c4_detonator_click", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("c4_detonator_click")));
|
||||
}
|
||||
|
||||
|
|
|
@ -2,8 +2,10 @@ package com.atsuishio.superbwarfare.item;
|
|||
|
||||
import com.atsuishio.superbwarfare.client.TooltipTool;
|
||||
import com.atsuishio.superbwarfare.entity.C4Entity;
|
||||
import com.atsuishio.superbwarfare.tools.EntityFindUtil;
|
||||
import com.atsuishio.superbwarfare.init.ModSounds;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResultHolder;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
|
@ -25,11 +27,6 @@ public class C4Bomb extends Item {
|
|||
public InteractionResultHolder<ItemStack> use(Level level, Player player, InteractionHand hand) {
|
||||
ItemStack stack = player.getItemInHand(hand);
|
||||
|
||||
if (player.serializeNBT().contains("C4UUID") && player.serializeNBT().hasUUID("C4UUID")) {
|
||||
if (EntityFindUtil.findEntity(player.level(), player.serializeNBT().getUUID("C4UUID").toString()) != null) {
|
||||
return InteractionResultHolder.pass(stack);
|
||||
}
|
||||
}
|
||||
if (!level.isClientSide) {
|
||||
C4Entity entity = new C4Entity(player, level);
|
||||
entity.setPos(player.getX() + 0.25 * player.getLookAngle().x, player.getEyeY() - 0.2f + 0.25 * player.getLookAngle().y, player.getZ() + 0.25 * player.getLookAngle().z);
|
||||
|
@ -39,6 +36,10 @@ public class C4Bomb extends Item {
|
|||
level.addFreshEntity(entity);
|
||||
}
|
||||
|
||||
if (player instanceof ServerPlayer serverPlayer) {
|
||||
serverPlayer.level().playSound(null, serverPlayer.getOnPos(), ModSounds.C4_THROW.get(), SoundSource.PLAYERS, 1, 1);
|
||||
}
|
||||
|
||||
player.getCooldowns().addCooldown(this, 20);
|
||||
|
||||
if (!player.getAbilities().instabuild) {
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
package com.atsuishio.superbwarfare.item;
|
||||
|
||||
import com.atsuishio.superbwarfare.entity.C4Entity;
|
||||
import com.atsuishio.superbwarfare.init.ModSounds;
|
||||
import com.atsuishio.superbwarfare.tools.EntityFindUtil;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResultHolder;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
|
@ -28,16 +31,19 @@ public Detonator() {
|
|||
ItemStack stack = player.getItemInHand(hand);
|
||||
player.getCooldowns().addCooldown(stack.getItem(), 10);
|
||||
|
||||
if (player instanceof ServerPlayer serverPlayer) {
|
||||
serverPlayer.level().playSound(null, serverPlayer.getOnPos(), ModSounds.C4_DETONATOR_CLICK.get(), SoundSource.PLAYERS, 1, 1);
|
||||
}
|
||||
|
||||
releaseUsing(stack, player.level(), player, 1);
|
||||
|
||||
List<Entity> entities = getC4(player, player.level());
|
||||
|
||||
for (var e : entities) {
|
||||
if (e instanceof C4Entity c4) {
|
||||
c4.explode();
|
||||
}
|
||||
}
|
||||
|
||||
return super.use(world, player, hand);
|
||||
return InteractionResultHolder.consume(stack);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2931,5 +2931,21 @@
|
|||
"stream": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"c4_throw": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "superbwarfare:c4/c4_throw",
|
||||
"stream": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"c4_detonator_click": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "superbwarfare:c4/c4_detonator_click",
|
||||
"stream": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Binary file not shown.
BIN
src/main/resources/assets/superbwarfare/sounds/c4/c4_throw.ogg
Normal file
BIN
src/main/resources/assets/superbwarfare/sounds/c4/c4_throw.ogg
Normal file
Binary file not shown.
Loading…
Add table
Reference in a new issue