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 000000000..96598b92b Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/charge_rifle/charge_rifle_fire_1p.ogg differ 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 000000000..34326695f Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/charge_rifle/charge_rifle_fire_3p.ogg differ diff --git a/src/main/resources/assets/superbwarfare/textures/item/beam_test.png b/src/main/resources/assets/superbwarfare/textures/item/beam_test.png new file mode 100644 index 000000000..ec2fff13a Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/item/beam_test.png differ 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 000000000..987463532 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/item/perk/butterfly_bullet.png differ 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 000000000..366bf1f27 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/screens/damage_types/laser.png differ 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