From 96fc0256ed68fec25c67e13c551d7db6b6067dca Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Thu, 22 Aug 2024 17:02:13 +0800 Subject: [PATCH] fix BEGesture --- .../main/assets/app_runtime/lwjgl/lwjgl.jar | Bin 2938283 -> 2944228 bytes FCL/src/main/assets/app_runtime/lwjgl/version | 2 +- FCLauncher/src/main/jni/fcl/fcl_event.c | 11 -- .../src/main/jni/fcl/include/fcl_bridge.h | 6 - .../src/main/jni/fcl/include/fcl_internal.h | 17 -- FCLauncher/src/main/jni/pojav/egl_bridge.c | 8 + .../main/java/org/lwjgl/glfw/FCLInjector.java | 174 ++++++++++++++++++ .../org/lwjgl/glfw/FCLInjectorCallback.java | 55 ++++++ .../org/lwjgl/glfw/FCLInjectorCallbackI.java | 33 ++++ .../src/main/java/org/lwjgl/glfw/GLFW.java | 3 +- 10 files changed, 273 insertions(+), 36 deletions(-) create mode 100644 LWJGL-Pojav/src/main/java/org/lwjgl/glfw/FCLInjector.java create mode 100644 LWJGL-Pojav/src/main/java/org/lwjgl/glfw/FCLInjectorCallback.java create mode 100644 LWJGL-Pojav/src/main/java/org/lwjgl/glfw/FCLInjectorCallbackI.java diff --git a/FCL/src/main/assets/app_runtime/lwjgl/lwjgl.jar b/FCL/src/main/assets/app_runtime/lwjgl/lwjgl.jar index 1bf03be13fc2af07bac7ebb129688c01acd9caf4..3d489aa458ba14a20d7b54de4bce528336accace 100644 GIT binary patch delta 55823 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 a`)ARt+oG$bgOP*L%ke_JKMRYS7 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 diff --git a/FCL/src/main/assets/app_runtime/lwjgl/version b/FCL/src/main/assets/app_runtime/lwjgl/version index 76668d99..1f8c5354 100644 --- a/FCL/src/main/assets/app_runtime/lwjgl/version +++ b/FCL/src/main/assets/app_runtime/lwjgl/version @@ -1 +1 @@ -1724075588557 \ No newline at end of file +1724317165115 \ No newline at end of file diff --git a/FCLauncher/src/main/jni/fcl/fcl_event.c b/FCLauncher/src/main/jni/fcl/fcl_event.c index e2d4da45..864e460c 100644 --- a/FCLauncher/src/main/jni/fcl/fcl_event.c +++ b/FCLauncher/src/main/jni/fcl/fcl_event.c @@ -12,21 +12,10 @@ void fclSetInjectorCallback(FCLinjectorfun callback) { } void fclSetHitResultType(int type) { - if (!fcl->has_event_pipe) { - return; - } PrepareFCLBridgeJNI(); CallFCLBridgeJNIFunc( , Void, setHitResultType, "(I)V", type); } -void fclSetCursorMode(int mode) { - if (!fcl->has_event_pipe) { - return; - } - PrepareFCLBridgeJNI(); - CallFCLBridgeJNIFunc( , Void, setCursorMode, "(I)V", mode); -} - JNIEXPORT void JNICALL Java_com_tungsten_fclauncher_bridge_FCLBridge_refreshHitResultType(JNIEnv *env, jobject thiz) { if (injectorCallback) injectorCallback(); diff --git a/FCLauncher/src/main/jni/fcl/include/fcl_bridge.h b/FCLauncher/src/main/jni/fcl/include/fcl_bridge.h index 5d6a3b15..f1910376 100644 --- a/FCLauncher/src/main/jni/fcl/include/fcl_bridge.h +++ b/FCLauncher/src/main/jni/fcl/include/fcl_bridge.h @@ -10,14 +10,8 @@ typedef void (* FCLinjectorfun)(); -ANativeWindow* fclGetNativeWindow(void); -int fclWaitForEvent(int timeout); -int fclPollEvent(FCLEvent* event); -int fclGetEventFd(void); -void fclLog(const char *buffer); void fclSetInjectorCallback(FCLinjectorfun callback); void fclSetHitResultType(int type); -void fclSetCursorMode(int mode); void fclSetPrimaryClipString(const char* string); const char* fclGetPrimaryClipString(void); diff --git a/FCLauncher/src/main/jni/fcl/include/fcl_internal.h b/FCLauncher/src/main/jni/fcl/include/fcl_internal.h index 4dc19a83..f291a2dc 100644 --- a/FCLauncher/src/main/jni/fcl/include/fcl_internal.h +++ b/FCLauncher/src/main/jni/fcl/include/fcl_internal.h @@ -17,29 +17,12 @@ #include "fcl_bridge.h" #include "fcl_keycodes.h" -typedef struct _QueueElement { - struct _QueueElement* next; - FCLEvent event; -} QueueElement; - -typedef struct { - int count; - int capacity; - QueueElement* head; - QueueElement* tail; -} EventQueue; - struct FCLInternal { JavaVM* android_jvm; jclass class_FCLBridge; jobject object_FCLBridge; ANativeWindow* window; char* clipboard_string; - EventQueue event_queue; - pthread_mutex_t event_queue_mutex; - int has_event_pipe; - int event_pipe_fd[2]; - int epoll_fd; FILE* logFile; }; diff --git a/FCLauncher/src/main/jni/pojav/egl_bridge.c b/FCLauncher/src/main/jni/pojav/egl_bridge.c index b5ab3a73..2d68146c 100644 --- a/FCLauncher/src/main/jni/pojav/egl_bridge.c +++ b/FCLauncher/src/main/jni/pojav/egl_bridge.c @@ -45,6 +45,7 @@ struct PotatoBridge potatoBridge; #include "ctxbridges/egl_loader.h" #include "ctxbridges/osmesa_loader.h" #include "pojav/virgl/virgl.h" +#include "fcl/include/fcl_bridge.h" #define RENDERER_GL4ES 1 #define RENDERER_VK_ZINK 2 @@ -286,3 +287,10 @@ EXTERNAL_API void pojavSwapInterval(int interval) { else br_swap_interval(interval); } +EXTERNAL_API void pojavSetInjectorCallback(FCLinjectorfun callback) { + fclSetInjectorCallback(callback); +} + +EXTERNAL_API void pojavSetHitResultType(int type) { + fclSetHitResultType(type); +} \ No newline at end of file diff --git a/LWJGL-Pojav/src/main/java/org/lwjgl/glfw/FCLInjector.java b/LWJGL-Pojav/src/main/java/org/lwjgl/glfw/FCLInjector.java new file mode 100644 index 00000000..fe0d2c7e --- /dev/null +++ b/LWJGL-Pojav/src/main/java/org/lwjgl/glfw/FCLInjector.java @@ -0,0 +1,174 @@ +package org.lwjgl.glfw; + +import org.lwjgl.system.*; + +import javax.annotation.Nullable; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import static org.lwjgl.system.APIUtil.apiGetFunctionAddress; +import static org.lwjgl.system.APIUtil.apiLog; +import static org.lwjgl.system.JNI.invokePP; +import static org.lwjgl.system.MemoryUtil.memAddressSafe; + +/** + * By Tungsten + * This class is for Fold Craft Launcher. + */ +public class FCLInjector { + + public static final long SetInjectorCallBack = apiGetFunctionAddress(GLFW.GLFW, "pojavSetInjectorCallback"); + public static final long SetHitResultType = apiGetFunctionAddress(GLFW.GLFW, "pojavSetHitResultType"); + + private static boolean get = false; + private static ClassLoader classLoader; + + private static final String HIT_RESULT_TYPE_UNKNOWN = "UNKNOWN"; + private static final String HIT_RESULT_TYPE_MISS = "MISS"; + private static final String HIT_RESULT_TYPE_BLOCK = "BLOCK"; + private static final String HIT_RESULT_TYPE_BLOCK_OLD = "TILE"; + private static final String HIT_RESULT_TYPE_ENTITY = "ENTITY"; + + private static final int INJECTOR_LEVEL_0 = 0; // unknown + private static final int INJECTOR_LEVEL_1 = 1; // 1.0 - 1.2 + private static final int INJECTOR_LEVEL_2 = 2; // 1.3 - 1.6 + private static final int INJECTOR_LEVEL_3 = 3; // 1.7 - 1.13 + private static final int INJECTOR_LEVEL_4 = 4; // 1.13+ + + private static final int INJECTOR_MODE_ENABLE = 1; + private static final int INJECTOR_MODE_DISABLE = 0; + + private static int level = 0; + @Nullable + private static String param0 = null; + @Nullable + private static String param1 = null; + @Nullable + private static String param2 = null; + @Nullable + private static String param3 = null; + + public static void setClassLoader(ClassLoader classLoader) { + String prop = System.getProperty("fcl.injector"); + if (!get && prop != null && !prop.isEmpty()) { + FCLInjector.classLoader = classLoader; + String[] props = prop.split(":"); + if (props.length == 5 && (props[0].equals("0") || props[0].equals("1") || props[0].equals("2") || props[0].equals("3") || props[0].equals("4"))) { + int level = Integer.parseInt(props[0]); + String param0 = props[1]; + String param1 = props[2]; + String param2 = props[3]; + String param3 = props[4]; + setup(level, param0, param1, param2, param3); + } + } + } + + public static void setup(int level, String param0, String param1, String param2, String param3) { + FCLInjector.level = level; + FCLInjector.param0 = param0; + FCLInjector.param1 = param1; + FCLInjector.param2 = param2; + FCLInjector.param3 = param3; + get = true; + FCLInjectorCallback callback = new FCLInjectorCallback() { + @Override + public void invoke() { + getHitResultType(); + } + }; + glfwSetFCLInjectorCallback(callback); + } + + @Nullable + @NativeType("FCLinjectorfun") + public static FCLInjectorCallback glfwSetFCLInjectorCallback(@Nullable @NativeType("FCLinjectorfun") FCLInjectorCallbackI cbfun) { +// boolean a =true; +// if (a) { +// throw new IllegalArgumentException("glfwSetFCLInjectorCallback"); +// } + return FCLInjectorCallback.createSafe(nglfwSetFCLInjectorCallback(memAddressSafe(cbfun))); + } + + public static long nglfwSetFCLInjectorCallback(long cbfun) { + return invokePP(cbfun, SetInjectorCallBack); + } + + public static void nglfwSetHitResultType(String type) { + int typeInt; + switch (type) { + case HIT_RESULT_TYPE_MISS: + typeInt = 1; + break; + case HIT_RESULT_TYPE_BLOCK: + case HIT_RESULT_TYPE_BLOCK_OLD: + typeInt = 2; + break; + case HIT_RESULT_TYPE_ENTITY: + typeInt = 3; + break; + default: + typeInt = 0; + break; + } + JNI.invokeV(typeInt, FCLInjector.SetHitResultType); + } + + public static void getHitResultType() { + if (!get) { + nglfwSetHitResultType(HIT_RESULT_TYPE_UNKNOWN); + apiLog("FCL Injector not initialized!\n"); + return; + } + if (param0 != null && param1 != null && param2 != null && param3 != null) { + Object type = null; + boolean success = false; + try { + Class minecraftClass = Class.forName(param0, true, classLoader); + Method method = minecraftClass.getDeclaredMethod(param1); + method.setAccessible(true); + Object minecraft = method.invoke(null); + Field targetField = minecraftClass.getDeclaredField(param2); + targetField.setAccessible(true); + Object target = targetField.get(minecraft); + if (target != null) { + switch (level) { + case INJECTOR_LEVEL_2: + case INJECTOR_LEVEL_3: + Field typeField = target.getClass().getDeclaredField(param3); + typeField.setAccessible(true); + type = typeField.get(target); + break; + case INJECTOR_LEVEL_4: + Method typeMethod = target.getClass().getDeclaredMethod(param3); + typeMethod.setAccessible(true); + type = typeMethod.invoke(target); + break; + default: + break; + } + } + success = true; + } catch (ClassNotFoundException | NoSuchFieldException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + apiLog(e.getMessage()); + } + if (level == INJECTOR_LEVEL_2) { + if (success && type == null) { + nglfwSetHitResultType(HIT_RESULT_TYPE_MISS); + } else if (success && (type.toString().equals(HIT_RESULT_TYPE_BLOCK_OLD) || type.toString().equals(HIT_RESULT_TYPE_ENTITY))) { + nglfwSetHitResultType(type.toString()); + } else { + nglfwSetHitResultType(HIT_RESULT_TYPE_UNKNOWN); + } + } else { + if (type != null && (type.toString().equals(HIT_RESULT_TYPE_MISS) || type.toString().equals(HIT_RESULT_TYPE_BLOCK) || type.toString().equals(HIT_RESULT_TYPE_ENTITY))) { + nglfwSetHitResultType(type.toString()); + } else { + nglfwSetHitResultType(HIT_RESULT_TYPE_UNKNOWN); + } + } + } + } + +} diff --git a/LWJGL-Pojav/src/main/java/org/lwjgl/glfw/FCLInjectorCallback.java b/LWJGL-Pojav/src/main/java/org/lwjgl/glfw/FCLInjectorCallback.java new file mode 100644 index 00000000..c7a524a2 --- /dev/null +++ b/LWJGL-Pojav/src/main/java/org/lwjgl/glfw/FCLInjectorCallback.java @@ -0,0 +1,55 @@ +package org.lwjgl.glfw; + +import static org.lwjgl.system.MemoryUtil.NULL; + +import org.lwjgl.system.Callback; + +import javax.annotation.Nullable; + +public abstract class FCLInjectorCallback extends Callback implements FCLInjectorCallbackI { + + public static FCLInjectorCallback create(long functionPointer) { + FCLInjectorCallbackI instance = Callback.get(functionPointer); + return instance instanceof FCLInjectorCallback + ? (FCLInjectorCallback)instance + : new Container(functionPointer, instance); + } + + /** Like {@link #create(long) create}, but returns {@code null} if {@code functionPointer} is {@code NULL}. */ + @Nullable + public static FCLInjectorCallback createSafe(long functionPointer) { + return functionPointer == NULL ? null : create(functionPointer); + } + + /** Creates a {@code GLFWCursorEnterCallback} instance that delegates to the specified {@code GLFWCursorEnterCallbackI} instance. */ + public static FCLInjectorCallback create(FCLInjectorCallbackI instance) { + return instance instanceof FCLInjectorCallback + ? (FCLInjectorCallback)instance + : new Container(instance.address(), instance); + } + + protected FCLInjectorCallback() { + super(CIF); + } + + FCLInjectorCallback(long functionPointer) { + super(functionPointer); + } + + private static final class Container extends FCLInjectorCallback { + + private final FCLInjectorCallbackI delegate; + + Container(long functionPointer, FCLInjectorCallbackI delegate) { + super(functionPointer); + this.delegate = delegate; + } + + @Override + public void invoke() { + delegate.invoke(); + } + + } + +} \ No newline at end of file diff --git a/LWJGL-Pojav/src/main/java/org/lwjgl/glfw/FCLInjectorCallbackI.java b/LWJGL-Pojav/src/main/java/org/lwjgl/glfw/FCLInjectorCallbackI.java new file mode 100644 index 00000000..20c91556 --- /dev/null +++ b/LWJGL-Pojav/src/main/java/org/lwjgl/glfw/FCLInjectorCallbackI.java @@ -0,0 +1,33 @@ +package org.lwjgl.glfw; + +import static org.lwjgl.system.APIUtil.apiCreateCIF; +import static org.lwjgl.system.libffi.LibFFI.FFI_DEFAULT_ABI; +import static org.lwjgl.system.libffi.LibFFI.ffi_type_pointer; +import static org.lwjgl.system.libffi.LibFFI.ffi_type_uint32; +import static org.lwjgl.system.libffi.LibFFI.ffi_type_void; + +import org.lwjgl.system.CallbackI; +import org.lwjgl.system.NativeType; +import org.lwjgl.system.libffi.FFICIF; + +@FunctionalInterface + @NativeType("FCLinjectorfun") + public interface FCLInjectorCallbackI extends CallbackI { + + FFICIF CIF = apiCreateCIF( + FFI_DEFAULT_ABI, + ffi_type_void, + ffi_type_pointer, ffi_type_uint32 + ); + + @Override + default FFICIF getCallInterface() { return CIF; } + + @Override + default void callback(long ret, long args) { + invoke(); + } + + void invoke(); + + } \ No newline at end of file diff --git a/LWJGL-Pojav/src/main/java/org/lwjgl/glfw/GLFW.java b/LWJGL-Pojav/src/main/java/org/lwjgl/glfw/GLFW.java index 467593b4..f0096244 100644 --- a/LWJGL-Pojav/src/main/java/org/lwjgl/glfw/GLFW.java +++ b/LWJGL-Pojav/src/main/java/org/lwjgl/glfw/GLFW.java @@ -608,7 +608,7 @@ public class GLFW throw new UnsupportedOperationException(); } - private static final SharedLibrary GLFW = Library.loadNative(GLFW.class, "org.lwjgl.glfw", "libpojavexec.so", true); + public static final SharedLibrary GLFW = Library.loadNative(GLFW.class, "org.lwjgl.glfw", "libpojavexec.so", true); /** Contains the function pointers loaded from the glfw {@link SharedLibrary}. */ public static final class Functions { @@ -818,6 +818,7 @@ public class GLFW mGLFWInitialTime = (double) System.nanoTime(); long __functionAddress = Functions.Init; isGLFWReady = invokeI(__functionAddress) != 0; + FCLInjector.setClassLoader(Thread.currentThread().getContextClassLoader()); } return isGLFWReady; }