superb-warfare/src/main/java/net/mcreator/target/mixins/MouseHandlerMixin.java
2024-05-05 15:44:33 +08:00

41 lines
1.6 KiB
Java

package net.mcreator.target.mixins;
import net.minecraft.client.CameraType;
import net.minecraft.client.Minecraft;
import net.minecraft.client.MouseHandler;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.ItemTags;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
@Mixin(MouseHandler.class)
public class MouseHandlerMixin {
@ModifyVariable(method = "turnPlayer()V", at = @At(value = "STORE", opcode = Opcodes.DSTORE), ordinal = 2)
private double sensitivity(double original) {
float additionalAdsSensitivity = 1.0F;
Minecraft mc = Minecraft.getInstance();
boolean flag = false;
float sens = 0.13f;
float fov = 0;
if (mc.player != null && !mc.player.getMainHandItem().isEmpty() && mc.options.getCameraType() == CameraType.FIRST_PERSON) {
Player player = Minecraft.getInstance().player;
ItemStack stack = mc.player.getMainHandItem();
fov = ((float) player.getPersistentData().getDouble("fov"));
if (stack.is(ItemTags.create(new ResourceLocation("target:gun")))) {
float modifier = 1.5f * fov / 90;
additionalAdsSensitivity = Mth.clamp(1.0F - (1.0F / modifier) / 10F, 0.0F, 1.0F);
flag = true;
}
}
return original * additionalAdsSensitivity * (1.0 - sens * (flag ? 1 : 0));
}
}