diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientMouseHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientMouseHandler.java new file mode 100644 index 000000000..2e3818c33 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientMouseHandler.java @@ -0,0 +1,59 @@ +package com.atsuishio.superbwarfare.event; + +import com.atsuishio.superbwarfare.client.MouseMovementHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec2; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT) +public class ClientMouseHandler { + public static Vec2 posO = new Vec2(0 , 0); + public static Vec2 posN = new Vec2(0 , 0); + public static Vec2 mousePos = new Vec2(0 , 0); + public static double PosX = 0; + public static double lerpPosX = 0; + public static double PosY = 0; + public static double lerpPosY = 0; + + private static boolean notInGame() { + Minecraft mc = Minecraft.getInstance(); + if (mc.player == null) return true; + if (mc.getOverlay() != null) return true; + if (mc.screen != null) return true; + if (!mc.mouseHandler.isMouseGrabbed()) return true; + return !mc.isWindowActive(); + } + + @SubscribeEvent + public static void handleClientTick(TickEvent.ClientTickEvent event) { + LocalPlayer player = Minecraft.getInstance().player; + + if (player == null) { + return; + } + + posO = posN; + posN = MouseMovementHandler.getMousePos(); + + if (!notInGame()) { + mousePos = posN.add(posO.scale(-1)); + + if (mousePos.x != 0) { + lerpPosX = Mth.lerp(0.1,PosX,mousePos.x); + } + if (mousePos.y != 0) { + lerpPosY = Mth.lerp(0.1,PosY,mousePos.y); + } + } + + lerpPosX = Mth.lerp(0.1,lerpPosX,0); + lerpPosY = Mth.lerp(0.1,lerpPosY,0); + +// player.displayClientMessage(Component.literal(new DecimalFormat("##.##").format(lerpPosX)), true); + } +}