diff --git a/neoforge/src/main/java/dev/nolij/zume/neoforge/NeoZume.java b/neoforge/src/main/java/dev/nolij/zume/neoforge/NeoZume.java index 8f236123..cf6f965f 100644 --- a/neoforge/src/main/java/dev/nolij/zume/neoforge/NeoZume.java +++ b/neoforge/src/main/java/dev/nolij/zume/neoforge/NeoZume.java @@ -187,15 +187,20 @@ private void onMouseScroll(InputEvent.MouseScrollingEvent event) { } } + @SuppressWarnings("DataFlowIssue") + private static final MethodHandle GET_DISTANCE = + METHOD_HANDLE_HELPER.getMethodOrNull(CalculateDetachedCameraDistanceEvent.class, "getDistance") + .asType(MethodType.methodType(double.class, CalculateDetachedCameraDistanceEvent.class)); + @SuppressWarnings("DataFlowIssue") private static final MethodHandle SET_DISTANCE = MethodHandleHelper.firstNonNull( METHOD_HANDLE_HELPER.getMethodOrNull(CalculateDetachedCameraDistanceEvent.class, "setDistance", float.class), METHOD_HANDLE_HELPER.getMethodOrNull(CalculateDetachedCameraDistanceEvent.class, "setDistance", double.class) - ).asType(MethodType.methodType(void.class, CalculateDetachedCameraDistanceEvent.class, float.class)); + ).asType(MethodType.methodType(void.class, CalculateDetachedCameraDistanceEvent.class, double.class)); private void calculateDetachedCameraDistance(CalculateDetachedCameraDistanceEvent event) { try { - SET_DISTANCE.invokeExact(event, (float) Zume.thirdPersonCameraHook(event.getDistance())); + SET_DISTANCE.invokeExact(event, (double) Zume.thirdPersonCameraHook((double) GET_DISTANCE.invokeExact(event))); } catch (Throwable e) { throw new AssertionError(e); }