From 77fa71a9ee52652c8aae85622329ea4bf0b58170 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Tue, 22 Apr 2025 23:13:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E9=87=8D=E6=9E=84=E6=88=98?= =?UTF-8?q?=E6=9C=AF=E5=86=B2=E5=88=BA=E7=A6=81=E7=94=A8=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/command/ConfigCommand.java | 6 ++++ .../network/NetworkRegistry.java | 5 ++-- .../ClientTacticalSprintSyncMessage.java | 29 +++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/atsuishio/superbwarfare/network/message/receive/ClientTacticalSprintSyncMessage.java diff --git a/src/main/java/com/atsuishio/superbwarfare/command/ConfigCommand.java b/src/main/java/com/atsuishio/superbwarfare/command/ConfigCommand.java index af09f27af..8f328c298 100644 --- a/src/main/java/com/atsuishio/superbwarfare/command/ConfigCommand.java +++ b/src/main/java/com/atsuishio/superbwarfare/command/ConfigCommand.java @@ -3,11 +3,13 @@ package com.atsuishio.superbwarfare.command; import com.atsuishio.superbwarfare.config.server.ExplosionConfig; import com.atsuishio.superbwarfare.config.server.MiscConfig; import com.atsuishio.superbwarfare.config.server.VehicleConfig; +import com.atsuishio.superbwarfare.network.message.receive.ClientTacticalSprintSyncMessage; import com.mojang.brigadier.arguments.BoolArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.network.chat.Component; +import net.neoforged.neoforge.network.PacketDistributor; public class ConfigCommand { @@ -28,6 +30,8 @@ public class ConfigCommand { VehicleConfig.COLLISION_DESTROY_BLOCKS_BEASTLY.set(false); VehicleConfig.COLLISION_DESTROY_BLOCKS.save(); + VehicleConfig.COLLISION_DESTROY_HARD_BLOCKS.save(); + VehicleConfig.COLLISION_DESTROY_BLOCKS_BEASTLY.save(); context.getSource().sendSuccess(() -> Component.translatable("commands.config.collision_destroy.none"), true); return 0; @@ -74,6 +78,8 @@ public class ConfigCommand { MiscConfig.ALLOW_TACTICAL_SPRINT.set(value); MiscConfig.ALLOW_TACTICAL_SPRINT.save(); + PacketDistributor.sendToAllPlayers(new ClientTacticalSprintSyncMessage(value)); + context.getSource().sendSuccess(() -> Component.translatable(value ? "commands.config.tactical_sprint.enabled" : "commands.config.tactical_sprint.disabled"), true); return 0; }))); diff --git a/src/main/java/com/atsuishio/superbwarfare/network/NetworkRegistry.java b/src/main/java/com/atsuishio/superbwarfare/network/NetworkRegistry.java index 5c91e5402..3233875f0 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/NetworkRegistry.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/NetworkRegistry.java @@ -9,7 +9,7 @@ public class NetworkRegistry { public static void register(final RegisterPayloadHandlersEvent event) { final PayloadRegistrar registrar = event.registrar("1"); - registrar.playToClient(PlayerVariablesSyncMessage.TYPE, PlayerVariablesSyncMessage.STREAM_CODEC, (message, context1) -> PlayerVariablesSyncMessage.handler(message)); + registrar.playToClient(PlayerVariablesSyncMessage.TYPE, PlayerVariablesSyncMessage.STREAM_CODEC, (msg, ctx) -> PlayerVariablesSyncMessage.handler(msg)); registrar.playToClient(ShakeClientMessage.TYPE, ShakeClientMessage.STREAM_CODEC, ShakeClientMessage::handler); registrar.playToClient(ClientMotionSyncMessage.TYPE, ClientMotionSyncMessage.STREAM_CODEC, ClientMotionSyncMessage::handler); registrar.playToClient(ClientIndicatorMessage.TYPE, ClientIndicatorMessage.STREAM_CODEC, ClientIndicatorMessage::handler); @@ -17,11 +17,12 @@ public class NetworkRegistry { registrar.playToClient(GunsDataMessage.TYPE, GunsDataMessage.STREAM_CODEC, GunsDataMessage::handler); registrar.playToClient(ContainerDataMessage.TYPE, ContainerDataMessage.STREAM_CODEC, ContainerDataMessage::handler); registrar.playToClient(ShootClientMessage.TYPE, ShootClientMessage.STREAM_CODEC, ShootClientMessage::handler); - registrar.playToClient(DrawClientMessage.TYPE, DrawClientMessage.STREAM_CODEC, (drawClientMessage, context) -> DrawClientMessage.handler()); + registrar.playToClient(DrawClientMessage.TYPE, DrawClientMessage.STREAM_CODEC, (msg, ctx) -> DrawClientMessage.handler()); registrar.playToClient(ResetCameraTypeMessage.TYPE, ResetCameraTypeMessage.STREAM_CODEC, ResetCameraTypeMessage::handler); registrar.playToClient(RadarMenuOpenMessage.TYPE, RadarMenuOpenMessage.STREAM_CODEC, RadarMenuOpenMessage::handler); registrar.playToClient(RadarMenuCloseMessage.TYPE, RadarMenuCloseMessage.STREAM_CODEC, RadarMenuCloseMessage::handler); registrar.playToClient(SimulationDistanceMessage.TYPE, SimulationDistanceMessage.STREAM_CODEC, SimulationDistanceMessage::handler); + registrar.playToClient(ClientTacticalSprintSyncMessage.TYPE, ClientTacticalSprintSyncMessage.STREAM_CODEC, (msg, ctx) -> ClientTacticalSprintSyncMessage.handler(msg)); registrar.playToServer(LaserShootMessage.TYPE, LaserShootMessage.STREAM_CODEC, LaserShootMessage::handler); registrar.playToServer(ShootMessage.TYPE, ShootMessage.STREAM_CODEC, ShootMessage::handler); diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/receive/ClientTacticalSprintSyncMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/receive/ClientTacticalSprintSyncMessage.java new file mode 100644 index 000000000..b6bd096cb --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/receive/ClientTacticalSprintSyncMessage.java @@ -0,0 +1,29 @@ +package com.atsuishio.superbwarfare.network.message.receive; + +import com.atsuishio.superbwarfare.Mod; +import com.atsuishio.superbwarfare.config.server.MiscConfig; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import org.jetbrains.annotations.NotNull; + +public record ClientTacticalSprintSyncMessage(boolean flag) implements CustomPacketPayload { + public static final Type TYPE = new Type<>(Mod.loc("client_indicator")); + + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.BOOL, + ClientTacticalSprintSyncMessage::flag, + ClientTacticalSprintSyncMessage::new + ); + + public static void handler(ClientTacticalSprintSyncMessage message) { + MiscConfig.ALLOW_TACTICAL_SPRINT.set(message.flag); + MiscConfig.ALLOW_TACTICAL_SPRINT.save(); + } + + @Override + public @NotNull Type type() { + return TYPE; + } +}