From c2b3f29e7b44a54c3ef156f5bbb1ed7f748bf6e9 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Mon, 2 Dec 2024 20:57:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E2=80=9C=E6=BB=8B=E5=B4=A9?= =?UTF-8?q?=E2=80=9D=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=BF=80=E5=85=89=E4=BC=A4?= =?UTF-8?q?=E5=AE=B3=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../b69ee8a2655365569b979911c0440daa8c470ac2 | 3 +- .../fccefbc98890e89f31af48c3878f78fdede0afb2 | 6 +-- .../superbwarfare/models/item/beam_test.json | 6 +++ .../tags/damage_type/projectile.json | 20 +++++++ .../tags/damage_type/projectile_absolute.json | 4 ++ .../renderer/entity/LaserEntityRenderer.java | 4 +- .../client/screens/KillMessageOverlay.java | 7 ++- .../datagen/ModItemModelProvider.java | 1 + .../superbwarfare/entity/DroneEntity.java | 17 +----- .../entity/projectile/LaserEntity.java | 3 +- .../event/ClientEventHandler.java | 6 +-- .../superbwarfare/init/ModDamageTypes.java | 5 ++ .../superbwarfare/init/ModSounds.java | 3 ++ .../superbwarfare/item/BeamTest.java | 51 ++++++++++++++---- .../mixins/LivingEntityMixin.java | 3 +- .../network/message/LaserShootMessage.java | 3 +- .../superbwarfare/tools/CustomExplosion.java | 2 +- .../assets/superbwarfare/lang/en_us.json | 3 ++ .../assets/superbwarfare/lang/zh_cn.json | 3 ++ .../models/item/butterfly_bullet.json | 6 +++ .../assets/superbwarfare/sounds.json | 16 ++++++ .../charge_rifle/charge_rifle_fire_1p.ogg | Bin 0 -> 26354 bytes .../charge_rifle/charge_rifle_fire_3p.ogg | Bin 0 -> 17867 bytes .../superbwarfare/textures/item/beam_test.png | Bin 0 -> 221 bytes .../textures/item/perk/butterfly_bullet.png | Bin 0 -> 1226 bytes .../textures/screens/damage_types/laser.png | Bin 0 -> 219 bytes .../always_hurts_ender_dragons.json | 3 +- .../tags/damage_type/bypasses_armor.json | 3 +- .../tags/damage_type/bypasses_effects.json | 3 +- .../damage_type/bypasses_enchantments.json | 3 +- .../tags/damage_type/bypasses_resistance.json | 3 +- .../tags/damage_type/no_knockback.json | 3 +- .../data/superbwarfare/damage_type/laser.json | 5 ++ 33 files changed, 146 insertions(+), 49 deletions(-) create mode 100644 src/generated/resources/assets/superbwarfare/models/item/beam_test.json create mode 100644 src/main/resources/assets/superbwarfare/models/item/butterfly_bullet.json create mode 100644 src/main/resources/assets/superbwarfare/sounds/charge_rifle/charge_rifle_fire_1p.ogg create mode 100644 src/main/resources/assets/superbwarfare/sounds/charge_rifle/charge_rifle_fire_3p.ogg create mode 100644 src/main/resources/assets/superbwarfare/textures/item/beam_test.png create mode 100644 src/main/resources/assets/superbwarfare/textures/item/perk/butterfly_bullet.png create mode 100644 src/main/resources/assets/superbwarfare/textures/screens/damage_types/laser.png create mode 100644 src/main/resources/data/superbwarfare/damage_type/laser.json diff --git a/src/generated/resources/.cache/b69ee8a2655365569b979911c0440daa8c470ac2 b/src/generated/resources/.cache/b69ee8a2655365569b979911c0440daa8c470ac2 index 153914d87..79ee66f03 100644 --- a/src/generated/resources/.cache/b69ee8a2655365569b979911c0440daa8c470ac2 +++ b/src/generated/resources/.cache/b69ee8a2655365569b979911c0440daa8c470ac2 @@ -1,10 +1,11 @@ -// 1.20.1 2024-11-28T22:29:47.24523 Item Models: superbwarfare +// 1.20.1 2024-12-02T20:47:31.4312883 Item Models: superbwarfare 13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/aa_12_blueprint.json 13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/ak_12_blueprint.json 13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/ak_47_blueprint.json c993bddc0db9453ffbefa59f9ac9a74dba909038 assets/superbwarfare/models/item/ancient_cpu.json 4b8fe8fbe5e64c3449ad539317254e4ed7188411 assets/superbwarfare/models/item/ap_head.json 984c08ca6f6893a15721a85e30118f9e32c65c7f assets/superbwarfare/models/item/barbed_wire.json +e8f16946c6f9429989d05e9ec250a72ffc64f9e1 assets/superbwarfare/models/item/beam_test.json 13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/bocek_blueprint.json 140e04e98d9d1c0ee790ca43cb28ad549900ab44 assets/superbwarfare/models/item/cannon_core.json 1e5b4637c3787516305dd3d1598f401a5e78a954 assets/superbwarfare/models/item/cemented_carbide_action.json diff --git a/src/generated/resources/.cache/fccefbc98890e89f31af48c3878f78fdede0afb2 b/src/generated/resources/.cache/fccefbc98890e89f31af48c3878f78fdede0afb2 index a6337d0c6..61a492588 100644 --- a/src/generated/resources/.cache/fccefbc98890e89f31af48c3878f78fdede0afb2 +++ b/src/generated/resources/.cache/fccefbc98890e89f31af48c3878f78fdede0afb2 @@ -1,3 +1,3 @@ -// 1.20.1 2024-09-29T01:21:56.4071846 Tags for minecraft:damage_type mod id superbwarfare -ef5293b64057e0650bbb5976246839665f10a0fb data/superbwarfare/tags/damage_type/projectile.json -91f6543d0bd595a1d2b5a74872daed295650ab32 data/superbwarfare/tags/damage_type/projectile_absolute.json +// 1.20.1 2024-12-02T20:47:31.4302884 Tags for minecraft:damage_type mod id superbwarfare +ddb620a872e399a1733001853474cf0b7eb9dc88 data/superbwarfare/tags/damage_type/projectile.json +a14ba1399ece410382dce60dda85902fdd87bf23 data/superbwarfare/tags/damage_type/projectile_absolute.json diff --git a/src/generated/resources/assets/superbwarfare/models/item/beam_test.json b/src/generated/resources/assets/superbwarfare/models/item/beam_test.json new file mode 100644 index 000000000..f0208bb6a --- /dev/null +++ b/src/generated/resources/assets/superbwarfare/models/item/beam_test.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "superbwarfare:item/beam_test" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/superbwarfare/tags/damage_type/projectile.json b/src/generated/resources/data/superbwarfare/tags/damage_type/projectile.json index 1b1f77d13..75e16298f 100644 --- a/src/generated/resources/data/superbwarfare/tags/damage_type/projectile.json +++ b/src/generated/resources/data/superbwarfare/tags/damage_type/projectile.json @@ -12,6 +12,26 @@ { "id": "tacz:bullet_void", "required": false + }, + { + "id": "virtuarealcraft:rain_crystal", + "required": false + }, + { + "id": "virtuarealcraft:rain_shower_butterfly", + "required": false + }, + { + "id": "virtuarealcraft:sparkle_butterfly", + "required": false + }, + { + "id": "dreamaticvoyage:blood_crystal", + "required": false + }, + { + "id": "dreamaticvoyage:leviy_beam", + "required": false } ] } \ No newline at end of file diff --git a/src/generated/resources/data/superbwarfare/tags/damage_type/projectile_absolute.json b/src/generated/resources/data/superbwarfare/tags/damage_type/projectile_absolute.json index 372c25fb9..ac2bd89b1 100644 --- a/src/generated/resources/data/superbwarfare/tags/damage_type/projectile_absolute.json +++ b/src/generated/resources/data/superbwarfare/tags/damage_type/projectile_absolute.json @@ -9,6 +9,10 @@ { "id": "tacz:bullet_void_ignore_armor", "required": false + }, + { + "id": "dreamaticvoyage:leviy_beam_absolute", + "required": false } ] } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/LaserEntityRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/LaserEntityRenderer.java index dd5c0f042..616e89102 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/LaserEntityRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/LaserEntityRenderer.java @@ -51,7 +51,7 @@ public class LaserEntityRenderer extends AbstractLaserEntityRenderer true).stream().sorted(Comparator.comparingDouble(e -> e.distanceToSqr(center))).toList()) { - if (this != target && target instanceof LivingEntity) { - target.hurt(ModDamageTypes.causeDroneHitDamage(this.level().registryAccess(), this, controller), 1); - target.invulnerableTime = 0; - if (target instanceof Mob mobEntity) { - mobEntity.setTarget(this); - } - this.hurt(new DamageSource(level().registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(DamageTypes.EXPLOSION), Objects.requireNonNullElse(controller, this)), 1); - } - } } if (this.isInWater()) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/LaserEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/LaserEntity.java index f248f91f3..56be1a310 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/LaserEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/LaserEntity.java @@ -72,8 +72,7 @@ public class LaserEntity extends AbstractLaserEntity { @Override public boolean shouldRenderAtSqrDistance(double distance) { - double radius = RADIUS; - return distance < (radius * radius) * 2; + return true; } private void updateWithPlayer() { diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 95017e085..fb46b9533 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -368,7 +368,7 @@ public class ClientEventHandler { && (!player.isAlliedTo(lookingEntity) || lookingEntity.getTeam() == null || lookingEntity.getTeam().getName().equals("TDM")); if (canAttack) { - ModUtils.PACKET_HANDLER.sendToServer(new LaserShootMessage(stack.getOrCreateTag().getInt("FireTick") >= 14 ? 45 : 1, lookingEntity.getUUID())); + ModUtils.PACKET_HANDLER.sendToServer(new LaserShootMessage(stack.getOrCreateTag().getInt("FireTick") >= 10 ? 45 : 1, lookingEntity.getUUID())); } } } @@ -622,11 +622,11 @@ public class ClientEventHandler { shakeRadiusAmplitude = (float) Mth.clamp(1 - player.position().distanceTo(new Vec3(shakePos[0], shakePos[1], shakePos[2])) / shakeRadius, 0, 1); if (shakeType > 0) { - event.setYaw((float) (yaw + (shakeTime * Math.sin(0.5 * Math.PI * shakeTime) * shakeAmplitude * shakeRadiusAmplitude * 0.75 * shakeType))); + event.setYaw((float) (yaw + (shakeTime * Math.sin(0.5 * Math.PI * shakeTime) * shakeAmplitude * shakeRadiusAmplitude * shakeType))); event.setPitch((float) (pitch - (shakeTime * Math.sin(0.5 * Math.PI * shakeTime) * shakeAmplitude * shakeRadiusAmplitude * shakeType))); event.setRoll((float) (roll - (shakeTime * Math.sin(0.5 * Math.PI * shakeTime) * shakeAmplitude * shakeRadiusAmplitude))); } else { - event.setYaw((float) (yaw - (shakeTime * Math.sin(0.5 * Math.PI * shakeTime) * shakeAmplitude * shakeRadiusAmplitude * 0.75 * shakeType))); + event.setYaw((float) (yaw - (shakeTime * Math.sin(0.5 * Math.PI * shakeTime) * shakeAmplitude * shakeRadiusAmplitude * shakeType))); event.setPitch((float) (pitch + (shakeTime * Math.sin(0.5 * Math.PI * shakeTime) * shakeAmplitude * shakeRadiusAmplitude * shakeType))); event.setRoll((float) (roll + (shakeTime * Math.sin(0.5 * Math.PI * shakeTime) * shakeAmplitude * shakeRadiusAmplitude))); } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModDamageTypes.java b/src/main/java/com/atsuishio/superbwarfare/init/ModDamageTypes.java index 8a18118ce..b0fc3fdfd 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModDamageTypes.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModDamageTypes.java @@ -28,6 +28,7 @@ public class ModDamageTypes { public static final ResourceKey CANNON_FIRE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "cannon_fire")); public static final ResourceKey CUSTOM_EXPLOSION = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "custom_explosion")); public static final ResourceKey DRONE_HIT = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "drone_hit")); + public static final ResourceKey LASER = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "laser")); public static DamageSource causeGunFireDamage(RegistryAccess registryAccess, @Nullable Entity directEntity, @Nullable Entity attacker) { return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(GUN_FIRE), directEntity, attacker); @@ -73,6 +74,10 @@ public class ModDamageTypes { return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(DRONE_HIT), directEntity, attacker); } + public static DamageSource causeLaserDamage(RegistryAccess registryAccess, @Nullable Entity directEntity, @Nullable Entity attacker) { + return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(LASER), directEntity, attacker); + } + private static class DamageMessages extends DamageSource { public DamageMessages(Holder.Reference typeReference) { super(typeReference); diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModSounds.java b/src/main/java/com/atsuishio/superbwarfare/init/ModSounds.java index 3571abd4b..ca3ce500f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModSounds.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModSounds.java @@ -331,4 +331,7 @@ public class ModSounds { public static final RegistryObject SHELL_CASING_50CAL = REGISTRY.register("shell_casing_50cal", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "shell_casing_50cal"))); public static final RegistryObject OPEN = REGISTRY.register("open", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "open"))); + + public static final RegistryObject CHARGE_RIFLE_FIRE_1P = REGISTRY.register("charge_rifle_fire_1p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "charge_rifle_fire_1p"))); + public static final RegistryObject CHARGE_RIFLE_FIRE_3P = REGISTRY.register("charge_rifle_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "charge_rifle_fire_3p"))); } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/BeamTest.java b/src/main/java/com/atsuishio/superbwarfare/item/BeamTest.java index 38cd011f5..21c4cd556 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/BeamTest.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/BeamTest.java @@ -1,11 +1,16 @@ package com.atsuishio.superbwarfare.item; +import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.capability.LaserCapability; import com.atsuishio.superbwarfare.capability.LaserHandler; import com.atsuishio.superbwarfare.capability.ModCapabilities; import com.atsuishio.superbwarfare.entity.projectile.LaserEntity; import com.atsuishio.superbwarfare.init.ModSounds; +import com.atsuishio.superbwarfare.network.message.ShakeClientMessage; +import net.minecraft.network.protocol.game.ClientboundStopSoundPacket; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; @@ -15,6 +20,10 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; +import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.Set; public class BeamTest extends Item { @@ -29,6 +38,11 @@ public class BeamTest extends Item { player.getCapability(ModCapabilities.LASER_CAPABILITY).ifPresent(capability -> { player.startUsingItem(hand); + SoundEvent sound1p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(ModUtils.MODID, "charge_rifle_fire_1p")); + if (sound1p != null) { + player.playSound(sound1p, 1f, 1); + } + if (!level.isClientSide) { double px = player.getX(); double py = player.getY() + player.getBbHeight() * 0.6F; @@ -42,6 +56,11 @@ public class BeamTest extends Item { if (!stack.getOrCreateTag().getBoolean("LaserFiring") && !(player.getCooldowns().isOnCooldown(stack.getItem()))) { stack.getOrCreateTag().putBoolean("LaserFiring", true); } + + SoundEvent sound3p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(ModUtils.MODID, "charge_rifle_fire_3p")); + if (sound3p != null) { + player.playSound(sound3p, 4, 1f); + } } }); @@ -52,15 +71,8 @@ public class BeamTest extends Item { public void inventoryTick(ItemStack stack, Level world, Entity entity, int slot, boolean selected) { super.inventoryTick(stack, world, entity, slot, selected); if (stack.getOrCreateTag().getBoolean("LaserFiring")) { - entity.playSound(ModSounds.MINIGUN_ROT.get(), 2, 1); stack.getOrCreateTag().putInt("FireTick", stack.getOrCreateTag().getInt("FireTick") + 1); } - - if (stack.getOrCreateTag().getInt("FireTick") >= 14) { - if (entity instanceof ServerPlayer serverPlayer) { - serverPlayer.level().playSound(null, serverPlayer.getOnPos(), ModSounds.SENTINEL_CHARGE_FIRE_3P.get(), SoundSource.PLAYERS, 1, 1); - } - } } @Override @@ -69,25 +81,44 @@ public class BeamTest extends Item { player.getCapability(ModCapabilities.LASER_CAPABILITY).ifPresent(LaserCapability.ILaserCapability::stop); stack.getOrCreateTag().putBoolean("LaserFiring", false); stack.getOrCreateTag().putInt("FireTick", 0); - player.getCooldowns().addCooldown(stack.getItem(), 5); + player.getCooldowns().addCooldown(stack.getItem(), 20); } + if (stack.getOrCreateTag().getInt("FireTick") < 10 && livingEntity instanceof ServerPlayer serverPlayer && stack.getItem() instanceof BeamTest beamTest) { + stopGunChargeSound(serverPlayer,beamTest); + } + + super.releaseUsing(stack, level, livingEntity, timeCharged); } + private static void stopGunChargeSound(ServerPlayer player, BeamTest beamTest) { + beamTest.getChargeSound().forEach(sound -> { + var clientboundstopsoundpacket = new ClientboundStopSoundPacket(sound.getLocation(), SoundSource.PLAYERS); + player.connection.send(clientboundstopsoundpacket); + }); + } + + public Set getChargeSound() { + return Set.of(ModSounds.CHARGE_RIFLE_FIRE_1P.get(), ModSounds.CHARGE_RIFLE_FIRE_3P.get()); + } + @Override public ItemStack finishUsingItem(ItemStack pStack, Level pLevel, LivingEntity pLivingEntity) { if (pLivingEntity instanceof Player player) { player.getCapability(ModCapabilities.LASER_CAPABILITY).ifPresent(LaserCapability.ILaserCapability::stop); pStack.getOrCreateTag().putBoolean("LaserFiring", false); pStack.getOrCreateTag().putInt("FireTick", 0); - player.getCooldowns().addCooldown(pStack.getItem(), 5); + if (player instanceof ServerPlayer serverPlayer) { + ModUtils.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> serverPlayer), new ShakeClientMessage(30,10,20, serverPlayer.getX(), serverPlayer.getEyeY(), serverPlayer.getZ())); + } + player.getCooldowns().addCooldown(pStack.getItem(), 20); } return super.finishUsingItem(pStack, pLevel, pLivingEntity); } @Override public int getUseDuration(ItemStack stack) { - return 15; + return 11; } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/mixins/LivingEntityMixin.java b/src/main/java/com/atsuishio/superbwarfare/mixins/LivingEntityMixin.java index 7e9d9382f..9b179246d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/mixins/LivingEntityMixin.java +++ b/src/main/java/com/atsuishio/superbwarfare/mixins/LivingEntityMixin.java @@ -25,7 +25,8 @@ public class LivingEntityMixin { private double modifyApplyKnockbackArgs(double original) { if (this.target$source.is(ModDamageTypes.GUN_FIRE) || this.target$source.is(ModDamageTypes.GUN_FIRE_HEADSHOT) || this.target$source.is(ModDamageTypes.SHOCK) || this.target$source.is(ModDamageTypes.GUN_FIRE_ABSOLUTE) - || this.target$source.is(ModDamageTypes.GUN_FIRE_HEADSHOT_ABSOLUTE) || this.target$source.is(ModDamageTypes.BURN)) { + || this.target$source.is(ModDamageTypes.GUN_FIRE_HEADSHOT_ABSOLUTE) || this.target$source.is(ModDamageTypes.BURN) + || this.target$source.is(ModDamageTypes.LASER)) { return 0.05 * original; } return original; diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/LaserShootMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/LaserShootMessage.java index 795ae1a22..80163bd17 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/LaserShootMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/LaserShootMessage.java @@ -55,13 +55,12 @@ public class LaserShootMessage { Entity entity = EntityFindUtil.findEntity(level, String.valueOf(uuid)); if (entity != null) { - entity.hurt(ModDamageTypes.causeGunFireDamage(level.registryAccess(), player, player), (float) damage); + entity.hurt(ModDamageTypes.causeLaserDamage(level.registryAccess(), player, player), (float) damage); entity.invulnerableTime = 0; if (player instanceof ServerPlayer serverPlayer) { player.level().playSound(null, player.blockPosition(), ModSounds.INDICATION.get(), SoundSource.VOICE, 0.1f, 1); ModUtils.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> serverPlayer), new ClientIndicatorMessage(0, 5)); } } - } } diff --git a/src/main/java/com/atsuishio/superbwarfare/tools/CustomExplosion.java b/src/main/java/com/atsuishio/superbwarfare/tools/CustomExplosion.java index d2e03d4da..32ffd1961 100644 --- a/src/main/java/com/atsuishio/superbwarfare/tools/CustomExplosion.java +++ b/src/main/java/com/atsuishio/superbwarfare/tools/CustomExplosion.java @@ -170,7 +170,7 @@ public class CustomExplosion extends Explosion { xDistance /= distance; yDistance /= distance; zDistance /= distance; - double seenPercent = Mth.clamp(getSeenPercent(position, entity), 0.25, Double.POSITIVE_INFINITY); + double seenPercent = Mth.clamp(getSeenPercent(position, entity), 0.125, Double.POSITIVE_INFINITY); double damagePercent = (1.0D - distanceRate) * seenPercent; double damageFinal = (damagePercent * damagePercent + damagePercent) / 2.0D * damage; diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index a4e4bd705..40f953e70 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -325,6 +325,9 @@ "death.attack.drone_hit": "%1$s被无人机叶片切碎了", "death.attack.drone_hit.entity": "%1$s被%2$s用无人机叶片切碎了", "death.attack.drone_hit.item": "%1$s被%2$s用无人机叶片切碎了", + "death.attack.laser": "%1$s被激光射穿了", + "death.attack.laser.entity": "%1$s被%2$s用激光射穿了", + "death.attack.laser.item": "%1$s被%2$s用激光射穿了", "gui.superbwarfare.mortar_gui.button_set": "Confirm", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index c926accbe..e5ac3ad97 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -325,6 +325,9 @@ "death.attack.drone_hit": "%1$s被无人机叶片切碎了", "death.attack.drone_hit.entity": "%1$s被%2$s用无人机叶片切碎了", "death.attack.drone_hit.item": "%1$s被%2$s用无人机叶片切碎了", + "death.attack.laser": "%1$s被激光射穿了", + "death.attack.laser.entity": "%1$s被%2$s用激光射穿了", + "death.attack.laser.item": "%1$s被%2$s用激光射穿了", "gui.superbwarfare.mortar_gui.button_set": "确认", diff --git a/src/main/resources/assets/superbwarfare/models/item/butterfly_bullet.json b/src/main/resources/assets/superbwarfare/models/item/butterfly_bullet.json new file mode 100644 index 000000000..fb67648ed --- /dev/null +++ b/src/main/resources/assets/superbwarfare/models/item/butterfly_bullet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "superbwarfare:item/perk/butterfly_bullet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/sounds.json b/src/main/resources/assets/superbwarfare/sounds.json index 5ed697997..c66a39e7c 100644 --- a/src/main/resources/assets/superbwarfare/sounds.json +++ b/src/main/resources/assets/superbwarfare/sounds.json @@ -2357,5 +2357,21 @@ "stream": false } ] + }, + "charge_rifle_fire_1p": { + "sounds": [ + { + "name": "superbwarfare:charge_rifle/charge_rifle_fire_1p", + "stream": false + } + ] + }, + "charge_rifle_fire_3p": { + "sounds": [ + { + "name": "superbwarfare:charge_rifle/charge_rifle_fire_3p", + "stream": false + } + ] } } \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/sounds/charge_rifle/charge_rifle_fire_1p.ogg b/src/main/resources/assets/superbwarfare/sounds/charge_rifle/charge_rifle_fire_1p.ogg new file mode 100644 index 0000000000000000000000000000000000000000..96598b92b4703e601c012915fe64154c9afd0fb5 GIT binary patch literal 26354 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/superbwarfare/sounds/charge_rifle/charge_rifle_fire_3p.ogg b/src/main/resources/assets/superbwarfare/sounds/charge_rifle/charge_rifle_fire_3p.ogg new file mode 100644 index 0000000000000000000000000000000000000000..34326695f9072945011a90e1b4d60498fadbac20 GIT binary patch literal 17867 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/superbwarfare/textures/item/perk/butterfly_bullet.png b/src/main/resources/assets/superbwarfare/textures/item/perk/butterfly_bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..98746353227aa5ff2fd43d6c7a514b159c7302f3 GIT binary patch literal 1226 zcmV;*1U37KP)RCt{2TRV~yF%WGtdjU?cMdUkdLI`JA0t_)Xz?*=NKukG+ zJp&;mJ_C-{H{bx283NGI*7WDKB#+BwUX^R-E2*FQtI-l&IA%mdx3{WH|$zCJj=Ql5j5 z3;*)%_kB%!Q{d~TXB|H;Cg2=}C;F%936GTLOq{Fm62cl#A$;fDKM9E;0s_K&!dmZ4 zN(5{Ipzs|9gd=ZlHi{)0jUEFR2 zCIM4;dqwzSByC!+<`99Z6GVj1J83Np$y#7e0@EsJvP2E=gkP`bT@s!PyzurJ)Dc zHJ>2W0hV6?3F=76S0sc9u*^W4S+5=GSQ54}YKVjsYk-yqXwO8PW{dEMw$aoCqJzjy z!^#~v(C{fliIEl*5s<5?Cn%B=pzk4?7r{|A0D)FZSkGFuh|#u~9aeo9L1C@@l-RqK zLr4i2!=5rTa0$>D=Jtwuee_vx9GVF#<1y<3(*!1}>s=txB=-&MJXNw{7*sXDv(3EX z^9H76eO_J>6<)dDX$vHf572DaBOzZK-~vSpBP(sz-bdC4tD-<|*V@7ee^zV5x{hR@ z5|G7Fl>q*t7LUC+Ewp*?7lA}jBG)UXkaa;*0~X8e{`K9q&l~3hki2`T^OX9?O(zm{ z5V$7r@%?=GpzejlNI2weA|pgQ|A&15hAR9yt0|yFJBb(2FHJC09;7T9IOQq%iCLR)y#ZCRV|Ruf<^-3z@mv# z3*m_Z1Rw=RPDD;f-i~yhzvn$$yLbYbfEIV9!9>&;wRg#nAmc$W>=oW@Hbg}9^u?Fa zm*Bq%MbQor4k@XzGC{2k0IC!G_WAiB$8NWqnI>Qr5zc$+bt{A=phZv%gq$EU8$e|i z?&p|*2v{qdA%y4DHjpJOqyJG`MwCbz3vIhYR)o6fQkGW0c<-T*>I2qymqj1bj9mhd z0c+LTR1m`Q;Ius-W)iSiZufjC$y#{GuX*NBW9J6B;b?_Mfzb{TFQc;rtaWlm(bXlj zPh+Vz0gmWGhJ+R#UI~+f^J``T46bUmUZ@DRv(Jv(>=n*^fQG4^UIuA~;p8o10wZQy zhPL1s5CO|}iRG}gpiuDI{l-oAE2G~9&h}qoJd6nV`S5O%ZR)4O&CLy^%9ltWfZx0X ooP2-4sWE84IsDh>e;fh70j$J&QPNpYHvj+t07*qoM6N<$f&mOAWdHyG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/superbwarfare/textures/screens/damage_types/laser.png b/src/main/resources/assets/superbwarfare/textures/screens/damage_types/laser.png new file mode 100644 index 0000000000000000000000000000000000000000..366bf1f27ae0d260d3aaffb94103cc25b4fed40b GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DA?=i z;usRq`Zmmw?|=eFbL#*9pUNV|7CY*$o}}|-&C-Az5l{o9@vFV*u_$@`;XP! zG$szo!_&eWR%toK%+q|oi&a4>;;3&=P3pd`g}-(Q?0&2_^Qvm_k(auMHYwP29Ma{8 zciQ}7UAl$n(J;p>k?Spc0~c?!Rb}W6pVo1VDdprgoh2vE*SmDOJYxG(-hVoo^ZpK? P!x%hW{an^LB{Ts5I89OZ literal 0 HcmV?d00001 diff --git a/src/main/resources/data/minecraft/tags/damage_type/always_hurts_ender_dragons.json b/src/main/resources/data/minecraft/tags/damage_type/always_hurts_ender_dragons.json index 970955c29..c2900aaa3 100644 --- a/src/main/resources/data/minecraft/tags/damage_type/always_hurts_ender_dragons.json +++ b/src/main/resources/data/minecraft/tags/damage_type/always_hurts_ender_dragons.json @@ -3,6 +3,7 @@ "values": [ "superbwarfare:projectile_boom", "superbwarfare:custom_explosion", - "superbwarfare:cannon_fire" + "superbwarfare:cannon_fire", + "superbwarfare:laser" ] } \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/damage_type/bypasses_armor.json b/src/main/resources/data/minecraft/tags/damage_type/bypasses_armor.json index 96bea489c..b48123bc5 100644 --- a/src/main/resources/data/minecraft/tags/damage_type/bypasses_armor.json +++ b/src/main/resources/data/minecraft/tags/damage_type/bypasses_armor.json @@ -4,6 +4,7 @@ "superbwarfare:gunfire_absolute", "superbwarfare:gunfire_headshot_absolute", "superbwarfare:shock", - "superbwarfare:cannon_fire" + "superbwarfare:cannon_fire", + "superbwarfare:laser" ] } \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/damage_type/bypasses_effects.json b/src/main/resources/data/minecraft/tags/damage_type/bypasses_effects.json index 96bea489c..b48123bc5 100644 --- a/src/main/resources/data/minecraft/tags/damage_type/bypasses_effects.json +++ b/src/main/resources/data/minecraft/tags/damage_type/bypasses_effects.json @@ -4,6 +4,7 @@ "superbwarfare:gunfire_absolute", "superbwarfare:gunfire_headshot_absolute", "superbwarfare:shock", - "superbwarfare:cannon_fire" + "superbwarfare:cannon_fire", + "superbwarfare:laser" ] } \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/damage_type/bypasses_enchantments.json b/src/main/resources/data/minecraft/tags/damage_type/bypasses_enchantments.json index 96bea489c..b48123bc5 100644 --- a/src/main/resources/data/minecraft/tags/damage_type/bypasses_enchantments.json +++ b/src/main/resources/data/minecraft/tags/damage_type/bypasses_enchantments.json @@ -4,6 +4,7 @@ "superbwarfare:gunfire_absolute", "superbwarfare:gunfire_headshot_absolute", "superbwarfare:shock", - "superbwarfare:cannon_fire" + "superbwarfare:cannon_fire", + "superbwarfare:laser" ] } \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/damage_type/bypasses_resistance.json b/src/main/resources/data/minecraft/tags/damage_type/bypasses_resistance.json index 96bea489c..b48123bc5 100644 --- a/src/main/resources/data/minecraft/tags/damage_type/bypasses_resistance.json +++ b/src/main/resources/data/minecraft/tags/damage_type/bypasses_resistance.json @@ -4,6 +4,7 @@ "superbwarfare:gunfire_absolute", "superbwarfare:gunfire_headshot_absolute", "superbwarfare:shock", - "superbwarfare:cannon_fire" + "superbwarfare:cannon_fire", + "superbwarfare:laser" ] } \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/damage_type/no_knockback.json b/src/main/resources/data/minecraft/tags/damage_type/no_knockback.json index 917e6bd72..2ea504609 100644 --- a/src/main/resources/data/minecraft/tags/damage_type/no_knockback.json +++ b/src/main/resources/data/minecraft/tags/damage_type/no_knockback.json @@ -2,6 +2,7 @@ "replace": false, "values": [ "superbwarfare:projectile_boom", - "superbwarfare:custom_explosion" + "superbwarfare:custom_explosion", + "superbwarfare:laser" ] } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/damage_type/laser.json b/src/main/resources/data/superbwarfare/damage_type/laser.json new file mode 100644 index 000000000..27bf8b5cb --- /dev/null +++ b/src/main/resources/data/superbwarfare/damage_type/laser.json @@ -0,0 +1,5 @@ +{ + "exhaustion": 0, + "message_id": "laser", + "scaling": "never" +} \ No newline at end of file