重做灵敏度调整

This commit is contained in:
17146 2024-05-30 13:51:13 +08:00
parent fa9261ce21
commit 881afe900c
6 changed files with 60 additions and 13 deletions

View file

@ -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);
}
}

View file

@ -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));
}
}
}

View file

@ -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) {

View file

@ -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<NetworkEvent.Context> 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);
}
}

View file

@ -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",

View file

@ -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弹药",