diff --git a/src/main/java/net/mcreator/target/TargetMod.java b/src/main/java/net/mcreator/target/TargetMod.java index 57f0628aa..ffda5498a 100644 --- a/src/main/java/net/mcreator/target/TargetMod.java +++ b/src/main/java/net/mcreator/target/TargetMod.java @@ -93,5 +93,6 @@ public class TargetMod { addNetworkMessage(ReloadMessage.class, ReloadMessage::buffer, ReloadMessage::new, ReloadMessage::handler); addNetworkMessage(PlayerGunKillMessage.class, PlayerGunKillMessage::encode, PlayerGunKillMessage::decode, PlayerGunKillMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); addNetworkMessage(ClientIndicatorMessage.class, ClientIndicatorMessage::encode, ClientIndicatorMessage::decode, ClientIndicatorMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); + addNetworkMessage(SensitivityMessage.class, SensitivityMessage::encode, SensitivityMessage::decode, SensitivityMessage::handler); } } diff --git a/src/main/java/net/mcreator/target/client/ClickHandler.java b/src/main/java/net/mcreator/target/client/ClickHandler.java index db87f92ca..fd88b38d5 100644 --- a/src/main/java/net/mcreator/target/client/ClickHandler.java +++ b/src/main/java/net/mcreator/target/client/ClickHandler.java @@ -4,6 +4,7 @@ import com.mojang.blaze3d.platform.InputConstants; import net.mcreator.target.TargetMod; import net.mcreator.target.init.TargetModTags; import net.mcreator.target.network.message.FireMessage; +import net.mcreator.target.network.message.SensitivityMessage; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -67,24 +68,23 @@ public class ClickHandler { } @SubscribeEvent - public static void onKeyPressed(InputEvent.Key event) { + public static void onSensitivityKeyPressed(InputEvent.Key event) { Player player = Minecraft.getInstance().player; + if (player == null) return; + ItemStack stack = player.getMainHandItem(); int button = event.getKey(); - var tag = stack.getOrCreateTag(); if (notInGame()) return; if (event.getAction() != InputConstants.PRESS) return; setKeyState(event.getKey(), 1); - if (stack.is(TargetModTags.Items.GUN)){ if (button == GLFW.GLFW_KEY_PAGE_UP) { - TargetMod.PACKET_HANDLER.sendToServer(new FireMessage(0)); - tag.putDouble("sensitivity", tag.getDouble("sensitivity") + 1); + TargetMod.PACKET_HANDLER.sendToServer(new SensitivityMessage(true)); } if (button == GLFW.GLFW_KEY_PAGE_DOWN) { - tag.putDouble("sensitivity", tag.getDouble("sensitivity") - 1); + TargetMod.PACKET_HANDLER.sendToServer(new SensitivityMessage(false)); } } } diff --git a/src/main/java/net/mcreator/target/event/ClientEventHandler.java b/src/main/java/net/mcreator/target/event/ClientEventHandler.java index f65c5b9d1..59a7c8988 100644 --- a/src/main/java/net/mcreator/target/event/ClientEventHandler.java +++ b/src/main/java/net/mcreator/target/event/ClientEventHandler.java @@ -1,6 +1,5 @@ package net.mcreator.target.event; -import net.mcreator.target.entity.Target1Entity; import net.mcreator.target.init.TargetModAttributes; import net.mcreator.target.init.TargetModMobEffects; import net.mcreator.target.init.TargetModTags; @@ -9,7 +8,6 @@ import net.minecraft.client.CameraType; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.Entity; @@ -58,11 +56,6 @@ public class ClientEventHandler { data.putDouble("crosshair", data.getDouble("crosshair") + 0.05 * Math.pow(spread - data.getDouble("crosshair"), 2) * times); } } - if (entity instanceof Player player) { - ItemStack stack = player.getMainHandItem(); - var tag = stack.getOrCreateTag(); - player.displayClientMessage(Component.literal("Sen: " + tag.getDouble("sensitivity")), true); - } } private static void handleWeaponSway(LivingEntity entity) { diff --git a/src/main/java/net/mcreator/target/network/message/SensitivityMessage.java b/src/main/java/net/mcreator/target/network/message/SensitivityMessage.java new file mode 100644 index 000000000..8e573756d --- /dev/null +++ b/src/main/java/net/mcreator/target/network/message/SensitivityMessage.java @@ -0,0 +1,49 @@ +package net.mcreator.target.network.message; + +import net.mcreator.target.init.TargetModTags; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.network.NetworkEvent; + +import java.util.function.Supplier; + +public class SensitivityMessage { + private final boolean add; + + public SensitivityMessage(boolean add) { + this.add = add; + } + + public static void encode(SensitivityMessage message, FriendlyByteBuf byteBuf) { + byteBuf.writeBoolean(message.add); + } + + public static SensitivityMessage decode(FriendlyByteBuf byteBuf) { + return new SensitivityMessage(byteBuf.readBoolean()); + } + + public static void handler(SensitivityMessage message, Supplier context) { + context.get().enqueueWork(() -> { + ServerPlayer player = context.get().getSender(); + if (player == null) { + return; + } + + ItemStack stack = player.getMainHandItem(); + if (!stack.is(TargetModTags.Items.GUN)) { + return; + } + + if (message.add) { + stack.getOrCreateTag().putInt("sensitivity", Math.min(10, stack.getOrCreateTag().getInt("sensitivity") + 1)); + } else { + stack.getOrCreateTag().putInt("sensitivity", Math.max(-10, stack.getOrCreateTag().getInt("sensitivity") - 1)); + } + player.displayClientMessage(Component.translatable("des.target.sensitivity", stack.getOrCreateTag().getInt("sensitivity")), true); + }); + context.get().setPacketHandled(true); + } + +} diff --git a/src/main/resources/assets/target/lang/en_us.json b/src/main/resources/assets/target/lang/en_us.json index 3bf5b44cd..a8ca8364c 100644 --- a/src/main/resources/assets/target/lang/en_us.json +++ b/src/main/resources/assets/target/lang/en_us.json @@ -197,6 +197,8 @@ "effect.target.shock": "Shock", + "des.target.sensitivity": "Current Sensitivity of This Gun: %1$s", + "commands.ammo.get": "Current %s ammo: %s", "commands.ammo.set": "Set %s ammo to %s for %s players", "commands.ammo.add": "Added %s ammo of amount %s for %s players", diff --git a/src/main/resources/assets/target/lang/zh_cn.json b/src/main/resources/assets/target/lang/zh_cn.json index cb7a193ec..607d9f4c2 100644 --- a/src/main/resources/assets/target/lang/zh_cn.json +++ b/src/main/resources/assets/target/lang/zh_cn.json @@ -197,6 +197,8 @@ "effect.target.shock": "麻痹", + "des.target.sensitivity": "当前枪械的灵敏度为:%1$s", + "commands.ammo.get": "当前%s弹药数量: %s", "commands.ammo.set": "为%3$s位玩家的%1$s弹药数量设置为%2$s", "commands.ammo.add": "为%3$s位玩家添加了%2$s发%1$s弹药",