diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 926ab6d1e..41dc0233e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -1434,6 +1434,26 @@ public class ClientEventHandler { } } + /** + * 载具banHand时,禁用快捷栏渲染 + */ + @SubscribeEvent + public static void handleAvoidRenderingHotbar(RenderGuiOverlayEvent.Pre event) { + if (event.getOverlay() != VanillaGuiOverlay.HOTBAR.type()) { + return; + } + + Minecraft mc = Minecraft.getInstance(); + Player player = mc.player; + if (player == null) { + return; + } + + if (player.getVehicle() instanceof ArmedVehicleEntity vehicle && vehicle.banHand(player)) { + event.setCanceled(true); + } + } + public static void handleDrawMessage(boolean draw, Supplier ctx) { if (ctx.get().getDirection().getReceptionSide() == LogicalSide.CLIENT) { drawTime = 1; diff --git a/src/main/java/com/atsuishio/superbwarfare/mixins/MinecraftMixin.java b/src/main/java/com/atsuishio/superbwarfare/mixins/MinecraftMixin.java index 4db4b76db..69e9211d2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/mixins/MinecraftMixin.java +++ b/src/main/java/com/atsuishio/superbwarfare/mixins/MinecraftMixin.java @@ -60,14 +60,15 @@ public class MinecraftMixin { var seatIndex = vehicle.getSeatIndex(player); - // 数字键 武器切换 - if (vehicle instanceof WeaponVehicleEntity weaponVehicle - && !Screen.hasShiftDown() - && weaponVehicle.hasWeapon(seatIndex) - && weaponVehicle.getWeaponType(seatIndex) != index - ) { - ModUtils.PACKET_HANDLER.sendToServer(new SwitchVehicleWeaponMessage(seatIndex, index, false)); + if (vehicle instanceof WeaponVehicleEntity weaponVehicle && weaponVehicle.banHand(player)) { ci.cancel(); + + // 数字键 武器切换 + if (!Screen.hasShiftDown() + && weaponVehicle.hasWeapon(seatIndex) + && weaponVehicle.getWeaponType(seatIndex) != index) { + ModUtils.PACKET_HANDLER.sendToServer(new SwitchVehicleWeaponMessage(seatIndex, index, false)); + } } } } diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/SwitchVehicleWeaponMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/SwitchVehicleWeaponMessage.java index b18a9df64..4b851f65e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/SwitchVehicleWeaponMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/SwitchVehicleWeaponMessage.java @@ -9,10 +9,9 @@ import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class SwitchVehicleWeaponMessage { + private final int index; - private final double value; - private final boolean isScroll; public SwitchVehicleWeaponMessage(int index, double value, boolean isScroll) { @@ -45,5 +44,4 @@ public class SwitchVehicleWeaponMessage { }); context.get().setPacketHandled(true); } - }