From 9108bdea0bbd072d41bba1e6ced0bfaae8122adf Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Fri, 20 Dec 2024 13:28:15 +0800 Subject: [PATCH] =?UTF-8?q?=E9=81=87=E5=88=B0=E4=B8=80=E4=B8=AA=E7=A5=9E?= =?UTF-8?q?=E7=A7=98=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../atsuishio/superbwarfare/client/ClickHandler.java | 12 ++++++------ .../client/screens/VehicleMgHudOverlay.java | 3 ++- .../superbwarfare/entity/AnnihilatorEntity.java | 2 +- .../atsuishio/superbwarfare/entity/Mk42Entity.java | 2 +- .../superbwarfare/entity/Mle1934Entity.java | 2 +- .../superbwarfare/event/ClientEventHandler.java | 5 +++++ 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java index edd192157..5f691f708 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java @@ -118,10 +118,10 @@ public class ClickHandler { } } - if ((player.getMainHandItem().is(ModTags.Items.GUN) && !(player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity)) + if ((player.getMainHandItem().is(ModTags.Items.GUN) && !(player.getVehicle() instanceof ICannonEntity)) || stack.is(ModItems.MONITOR.get()) - || (player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity) - || (player.getVehicle() != null && player.getVehicle() instanceof SpeedboatEntity boat && boat.getFirstPassenger() == player && stack.is(ItemStack.EMPTY.getItem())) + || (player.getVehicle() instanceof ICannonEntity) + || (player.getVehicle() instanceof IVehicleEntity iVehicle && iVehicle.isDriver(player) && stack.is(ItemStack.EMPTY.getItem())) || (stack.is(Items.SPYGLASS) && player.isScoping() && player.getOffhandItem().is(ModItems.FIRING_PARAMETERS.get()))) { if (button == ModKeyMappings.FIRE.getKey().getValue()) { handleWeaponFirePress(player, stack); @@ -244,10 +244,10 @@ public class ClickHandler { ModUtils.PACKET_HANDLER.sendToServer(new SensitivityMessage(false)); } - if ((player.getMainHandItem().is(ModTags.Items.GUN) && !(player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity)) + if ((player.getMainHandItem().is(ModTags.Items.GUN) && !(player.getVehicle() instanceof ICannonEntity)) || stack.is(ModItems.MONITOR.get()) - || (player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity) - || (player.getVehicle() != null && player.getVehicle() instanceof SpeedboatEntity boat && boat.getFirstPassenger() == player && stack.is(ItemStack.EMPTY.getItem())) + || (player.getVehicle() instanceof ICannonEntity) + || (player.getVehicle() instanceof IVehicleEntity iVehicle && iVehicle.isDriver(player) && stack.is(ItemStack.EMPTY.getItem())) || (stack.is(Items.SPYGLASS) && player.isScoping() && player.getOffhandItem().is(ModItems.FIRING_PARAMETERS.get()))) { if (key == ModKeyMappings.FIRE.getKey().getValue()) { handleWeaponFirePress(player, stack); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleMgHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleMgHudOverlay.java index a47d0802c..cae29ed08 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleMgHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleMgHudOverlay.java @@ -4,6 +4,7 @@ import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.client.RenderHelper; import com.atsuishio.superbwarfare.entity.SpeedboatEntity; import com.atsuishio.superbwarfare.event.ClientEventHandler; +import com.atsuishio.superbwarfare.init.ModTags; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.Minecraft; @@ -67,6 +68,6 @@ public class VehicleMgHudOverlay { private static boolean shouldRenderCrossHair(Player player) { if (player == null) return false; return !player.isSpectator() - && player.getVehicle() instanceof SpeedboatEntity && ClientEventHandler.zoom; + && player.getVehicle() instanceof SpeedboatEntity && ClientEventHandler.zoom && !player.getMainHandItem().is(ModTags.Items.GUN); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/AnnihilatorEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/AnnihilatorEntity.java index b3c90d0af..7c83aac2c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/AnnihilatorEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/AnnihilatorEntity.java @@ -553,7 +553,7 @@ public class AnnihilatorEntity extends Entity implements GeoEntity, ICannonEntit @Override public boolean isDriver(Player player) { - return false; + return player == this.getFirstPassenger(); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/Mk42Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/Mk42Entity.java index 370aec7cc..0a3ff5c1f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/Mk42Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/Mk42Entity.java @@ -433,7 +433,7 @@ public class Mk42Entity extends Entity implements GeoEntity, ICannonEntity { @Override public boolean isDriver(Player player) { - return false; + return player == this.getFirstPassenger(); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/Mle1934Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/Mle1934Entity.java index d0559d153..5515cb3d3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/Mle1934Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/Mle1934Entity.java @@ -528,7 +528,7 @@ public class Mle1934Entity extends Entity implements GeoEntity, ICannonEntity { @Override public boolean isDriver(Player player) { - return false; + return player == this.getFirstPassenger(); } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 16569483d..fc1851cb8 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -22,6 +22,7 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.commands.arguments.EntityAnchorArgument; import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; import net.minecraft.util.Mth; @@ -551,6 +552,10 @@ public class ClientEventHandler { if (player == null) return; if (level == null) return; + if (player.getVehicle() instanceof IVehicleEntity iVehicle && iVehicle.isDriver(player)) { + player.displayClientMessage(Component.literal("canShoot: " + iVehicle.canShoot(player)), true); + } + if (player.getVehicle() instanceof IVehicleEntity iVehicle && iVehicle.isDriver(player) && iVehicle.canShoot(player)) { int rpm = iVehicle.mainGunRpm(); if (rpm == 0) {