From 03805792c523ead76a13aeec9bbe00b346027de6 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Tue, 3 Dec 2024 00:24:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E2=80=9C=E6=BB=8B=E5=B4=A9?= =?UTF-8?q?=E2=80=9D=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/ClientEventHandler.java | 2 +- .../superbwarfare/item/BeamTest.java | 36 ++++++++++++------- .../assets/superbwarfare/lang/en_us.json | 1 + .../assets/superbwarfare/lang/zh_cn.json | 1 + 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index fb46b9533..cc3f5d374 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") >= 10 ? 45 : 1, lookingEntity.getUUID())); + ModUtils.PACKET_HANDLER.sendToServer(new LaserShootMessage(1, lookingEntity.getUUID())); } } } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/BeamTest.java b/src/main/java/com/atsuishio/superbwarfare/item/BeamTest.java index 21c4cd556..a0babf1ea 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/BeamTest.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/BeamTest.java @@ -6,7 +6,9 @@ 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.LaserShootMessage; import com.atsuishio.superbwarfare.network.message.ShakeClientMessage; +import com.atsuishio.superbwarfare.tools.TraceTool; import net.minecraft.network.protocol.game.ClientboundStopSoundPacket; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; @@ -67,23 +69,13 @@ public class BeamTest extends Item { return InteractionResultHolder.consume(player.getItemInHand(hand)); } - @Override - 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")) { - stack.getOrCreateTag().putInt("FireTick", stack.getOrCreateTag().getInt("FireTick") + 1); - } - } - @Override public void releaseUsing(ItemStack stack, Level level, LivingEntity livingEntity, int timeCharged) { if (livingEntity instanceof Player player) { player.getCapability(ModCapabilities.LASER_CAPABILITY).ifPresent(LaserCapability.ILaserCapability::stop); stack.getOrCreateTag().putBoolean("LaserFiring", false); - stack.getOrCreateTag().putInt("FireTick", 0); - player.getCooldowns().addCooldown(stack.getItem(), 20); } - if (stack.getOrCreateTag().getInt("FireTick") < 10 && livingEntity instanceof ServerPlayer serverPlayer && stack.getItem() instanceof BeamTest beamTest) { + if (livingEntity instanceof ServerPlayer serverPlayer && stack.getItem() instanceof BeamTest beamTest) { stopGunChargeSound(serverPlayer,beamTest); } @@ -107,18 +99,36 @@ public class BeamTest extends Item { if (pLivingEntity instanceof Player player) { player.getCapability(ModCapabilities.LASER_CAPABILITY).ifPresent(LaserCapability.ILaserCapability::stop); pStack.getOrCreateTag().putBoolean("LaserFiring", false); - pStack.getOrCreateTag().putInt("FireTick", 0); 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); + + if (player.level().isClientSide()) { + beamShoot(player); + } } return super.finishUsingItem(pStack, pLevel, pLivingEntity); } + public static void beamShoot(Player player) { + Entity lookingEntity = TraceTool.laserfindLookingEntity(player, 512); + + if (lookingEntity == null) { + return; + } + + boolean canAttack = lookingEntity != player && !(lookingEntity instanceof Player player_ && (player_.isCreative() || player_.isSpectator())) + && (!player.isAlliedTo(lookingEntity) || lookingEntity.getTeam() == null || lookingEntity.getTeam().getName().equals("TDM")); + + if (canAttack) { + ModUtils.PACKET_HANDLER.sendToServer(new LaserShootMessage(45, lookingEntity.getUUID())); + } + } + @Override public int getUseDuration(ItemStack stack) { - return 11; + return 10; } @Override diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index 40f953e70..6539dac98 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -189,6 +189,7 @@ "des.superbwarfare.transcript.score": "Score: ", "des.superbwarfare.transcript.distance": "Distance: ", "des.superbwarfare.transcript.total": "Total: ", + "item.superbwarfare.beam_test": "[ZzzzBoom!]", "attribute.superbwarfare.bullet_resistance": "Bullet Resistance", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index e5ac3ad97..0b049c4fe 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -189,6 +189,7 @@ "des.superbwarfare.transcript.score": "环数:", "des.superbwarfare.transcript.distance": "距离:", "des.superbwarfare.transcript.total": "总环数:", + "item.superbwarfare.beam_test": "[滋崩]", "attribute.superbwarfare.bullet_resistance": "子弹防护",