{"id":25495319,"url":"https://github.com/touchcontroller/touchcontroller","last_synced_at":"2026-04-06T13:02:46.354Z","repository":{"id":268500204,"uuid":"898894440","full_name":"TouchController/TouchController","owner":"TouchController","description":"Touchscreen control mod for Minecraft Java version / Minecraft Java 版触屏控制 mod","archived":false,"fork":false,"pushed_at":"2025-03-31T16:45:20.000Z","size":2753,"stargazers_count":96,"open_issues_count":52,"forks_count":5,"subscribers_count":5,"default_branch":"0.2","last_synced_at":"2025-04-07T16:17:45.583Z","etag":null,"topics":["minecraft","minecraft-fabric-mod","minecraft-forge-mod","minecraft-mod","minecraft-neoforge-mod","touchscreen"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TouchController.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS-en.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-05T08:36:32.000Z","updated_at":"2025-04-06T06:52:07.000Z","dependencies_parsed_at":"2025-01-23T06:22:59.754Z","dependency_job_id":"b8d3f67a-b3ca-497b-8d32-6df9acaa8601","html_url":"https://github.com/TouchController/TouchController","commit_stats":null,"previous_names":["fifth-light/touchcontroller","touchcontroller/touchcontroller"],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TouchController%2FTouchController","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TouchController%2FTouchController/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TouchController%2FTouchController/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TouchController%2FTouchController/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TouchController","download_url":"https://codeload.github.com/TouchController/TouchController/tar.gz/refs/heads/0.2","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247685628,"owners_count":20979085,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["minecraft","minecraft-fabric-mod","minecraft-forge-mod","minecraft-mod","minecraft-neoforge-mod","touchscreen"],"created_at":"2025-02-19T00:25:35.637Z","updated_at":"2026-04-06T13:02:46.320Z","avatar_url":"https://github.com/TouchController.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TouchController\n\nA mod bringing controlling style of bedrock version to Java version. Currently in early development, report for bugs or\nother problems are welcome if you found!\n\n## Download and install\n\nYou can download the latest release of TouchController mod\non [Modrinth](https://modrinth.com/mod/touchcontroller#download), [Github Releases](https://github.com/TouchController/TouchController/releases), [Gitee Releases](https://gitee.com/fifth_light/TouchController/releases)\nand [MC 百科](https://www.mcmod.cn/download/17432.html).\n\nOn different mod loaders, TouchController needs dependency mod as below:\n\n- Fabric: [Fabric API](https://github.com/FabricMC/fabric)\n- Forge: None\n- NeoForge: None\n\n## Supported game version and platforms\n\nBelow are game versions and mod loaders TouchController supports:\n\n- 1.12.2 (Forge)\n- 1.16.5 (Forge, Fabric)\n- 1.20.1 (Forge, Fabric)\n- 1.20.4 (Forge, NeoForge, Fabric)\n- 1.20.6 (Forge, NeoForge, Fabric)\n- 1.21   (Forge, NeoForge, Fabric)\n- 1.21.1 (Forge, NeoForge, Fabric)\n- 1.21.3 (Forge, NeoForge, Fabric)\n- 1.21.4 (Forge, NeoForge, Fabric)\n\nSupport for more game versions and mod loaders is in developing currently.\n\nBelow are platforms TouchController supports:\n\n- Windows (Minimum supported version is Windows 10, supports x86, x86_64 and ARM64 architecture)\n- [Fold Craft Launcher](https://github.com/FCL-Team/FoldCraftLauncher)\n- [Zalith Launcher](https://github.com/ZalithLauncher/ZalithLauncher)\n- [Pojav Glow·Worm](https://github.com/Vera-Firefly/Pojav-Glow-Worm)\n- [My fork of PojavLauncher](https://github.com/TouchController/PojavLauncher)(No longer update)\n\nSupport for touch screen for X11 on Linux may be added in the future. iOS and macOS will not be supported\nbecause I don't have corresponding environment and devices, but pull requests for iOS and macOS supported will be\naccepted.\n\n## Features supported by now\n\n- Touch input of Minecraft Bedrock version style\n- Customizable controller layout\n- Ability to switch displaying buttons by conditions such as swimming and flying\n- Provide haptic feedback when breaking blocks (Only supported on Android platform currently)\n\n## Compile\n\nAt first, Rust compiler is required, you can install it with [rustup](https://rustup.rs/).\n\nAnd then, you need to install Rust toolchains for targets below:\n\n- armv7-linux-androideabi\n- aarch64-linux-android\n- i686-linux-android\n- x86_64-linux-android\n\nYou can add these toolchain by `rustup target add \u003ctoolchain target\u003e`.\n\nYou also need install the Android SDK which is able to install in Android Studio, and create a file named\n`local.properties` in the project root directory with content below:\n\n```\nsdk.dir=\u003cAndroid SDK directory\u003e\n```\n\nBy default Android Studio will do this for you. If you opened this project in Android Studio, there is no need for you\nto configure this file.\n\nYou need to install the Android SDK, which is also able to install in Android Studio. After you installed the Android\nSDK, install the `cargo-ndk` tool by using `cargo install cargo-ndk`.\n\nYou need to build two podman images: `touchcontroller-linux` and `llvm-mingw-jdk`. Make sure you installed podman, and\nrun commands below:\n\n```shell\npodman -t touchcontroller-linux proxy-linux\npodman -t llvm-mingw-jdk proxy-windows\n```\n\nFinally, you can run `./gradlew build` to compile, and built file can bu found in `mod/build/libs`.\n\n---\n\n# TouchController\n\n一个为 Minecraft Java 版添加触控支持的 Mod。目前处于早期开发中，如果遇到 Bug 或者其他问题，欢迎积极报告！\n\n## 下载与安装\n\n你可以在 [Modrinth](https://modrinth.com/mod/touchcontroller#download)、[Github Releases](https://github.com/TouchController/TouchController/releases) 、[Gitee 发行版](https://gitee.com/fifth_light/TouchController/releases)\n和 [MC 百科](https://www.mcmod.cn/download/17432.html) 上下载 TouchController 的最新发布版。\n\n根据不同的 mod 加载器，TouchController 需要如下的前置 mod：\n\n- Fabric：[Fabric API](https://github.com/FabricMC/fabric)\n- Forge：无前置\n- NeoForge: 无前置\n\n## 支持的游戏版本和平台\n\n目前 TouchController 支持的 Minecraft 版本和 mod 加载器有：\n\n- 1.12.2 (Forge)\n- 1.16.5 (Forge, Fabric)\n- 1.20.1 (Forge, Fabric)\n- 1.20.4 (Forge, NeoForge, Fabric)\n- 1.20.6 (Forge, NeoForge, Fabric)\n- 1.21   (Forge, NeoForge, Fabric)\n- 1.21.1 (Forge, NeoForge, Fabric)\n- 1.21.3 (Forge, NeoForge, Fabric)\n- 1.21.4 (Forge, NeoForge, Fabric)\n\n更多游戏版本、mod 加载器的支持正在开发中。\n\n目前支持的平台有：\n\n- Windows（版本最低为 Windows 10，支持 x86、x86_64 和 ARM64 架构）\n- [官方版 Fold Craft Launcher](https://github.com/FCL-Team/FoldCraftLauncher)\n- [官方版 Zalith Launcher](https://github.com/ZalithLauncher/ZalithLauncher)\n- [官方版 Pojav Glow·Worm](https://github.com/Vera-Firefly/Pojav-Glow-Worm)\n- [我修改后的 PojavLauncher](https://github.com/TouchController/PojavLauncher)\n\n在未来可能会添加 Linux 上 X11 触屏的支持。iOS 和 macOS 由于没有相应环境和设备，不会提供支持，但是接受 iOS 和 macOS 支持的\nPull\nRequest。\n\n## 目前支持的功能\n\n- Minecraft 基岩版风格的触屏输入\n- 可自定义的控制器布局\n- 能够根据游泳、飞行等状态切换不同按键的显示\n- 破坏方块时进行震动反馈（目前只支持 Android 平台）\n\n## 编译\n\n首先你需要 Rust 编译器，可以使用 [rustup](https://rustup.rs/) 安装。\n\n接下来你需要安装以下几个目标的 Rust 工具链：\n\n- armv7-linux-androideabi\n- aarch64-linux-android\n- i686-linux-android\n- x86_64-linux-android\n\n这些工具链可以用 `rustup target add \u003c工具链目标\u003e` 添加。\n\n你还需要一份 Android SDK，可以在 Android Studio 内安装，然后在项目根目录创建 `local.properties`，其中内容如下：\n\n```\nsdk.dir=\u003cAndroid SDK 目录\u003e\n```\n\n默认 Android Studio 会帮你做这件事情，如果你用 Android Studio 打开过这个项目，则不需要配置这个选项。\n\n接下来你还需要安装一份 Android NDK，同样也可以在 Android Studio 内安装，安装完后使用 `cargo install cargo-ndk` 安装\n`cargo-ndk` 工具。\n\n你需要构建两个 podman 镜像：`touchcontroller-linux` and `llvm-mingw-jdk`。确保你已经安装了 podman，然后运行以下命令：\n\n```shell\npodman -t touchcontroller-linux proxy-linux\npodman -t llvm-mingw-jdk proxy-windows\n```\n\n最后运行 `./gradlew build` 就可以编译了，编译好的 mod 文件在 `mod/build/libs` 下。\n\n---\n\n## 添加新的启动器支持\n\n欢迎添加其他启动器的支持！为其他启动器添加支持的步骤有：\n\n1. 添加 TouchController 的 proxy-client 库到启动器内\n\n    - Groovy\n    ```groovy\n    implementation 'top.fifthlight.touchcontroller:proxy-client-android:0.0.2'\n    ```\n    \n    - Kotlin\n    ```kotlin\n    implementation(\"top.fifthlight.touchcontroller:proxy-client-android:0.0.2\")\n    ```\n    \n    - Gradle version catalogs\n    ```toml\n    touchcontroller-proxy-client-android = { group = \"top.fifthlight.touchcontroller\", name = \"proxy-client-android\", version = \"0.0.2\" }\n    ```\n\n2. 创建 MessageTransport\n\n    目前版本的 TouchController 使用 Unix 套接字进行游戏和启动器之间的 IPC，因此需要先创建一个 UnixSocketTransport：\n    \n    ```java\n    private static final String socketName = \"YourLauncher\";\n    \n    /* ... */\n    \n    MessageTransport transport = UnixSocketTransportKt.UnixSocketTransport(socketName);\n    ```\n\n   你还需要在游戏启动时将 Unix Socket 的名称通过 `TOUCH_CONTROLLER_PROXY_SOCKET` 环境变量传递给 mod。\n\n    ```java\n    Os.setenv(\"TOUCH_CONTROLLER_PROXY_SOCKET\", socketName, true);\n    ```\n\n3. 创建一个 LauncherProxyClient\n\n    有了 MessageTransport 后你就可以创建一个 LauncherProxyClient 了，这是实现启动器和游戏之间交互协议的类：\n    \n    ```java\n    LauncherProxyClient client = new LauncherProxyClient(transport);\n    ```\n\n4. 创建一个 VibrationHandler（可选）\n\n    TouchController 从 v0.0.12 版本开始支持震动反馈。首先你需要实现 VibrationHandler：\n    \n    ```kotlin\n    interface VibrationHandler {\n        fun vibrate(kind: VibrateMessage.Kind)\n    }\n    ```\n    \n    在 proxy-client-android 库中的 SimpleVibrationHandler 类实现了一个基本的 VibrationHandler，可以作为参考，但是不建议直接使用这个类，因为这个类缺失震动强度、震动效果的调节：\n    \n    ```kotlin\n    private val TAG = \"SimpleVibrationHandler\"\n    \n    class SimpleVibrationHandler(private val service: Vibrator) : LauncherProxyClient.VibrationHandler {\n        override fun viberate(kind: VibrateMessage.Kind) {\n            try {\n                @Suppress(\"DEPRECATION\")\n                service.vibrate(100)\n            } catch (ex: Exception) {\n                Log.w(TAG, \"Failed to trigger vibration\", ex)\n            }\n        }\n    }\n    ```\n    \n    然后设置 VibrationHandler 到 LauncherProxyClient 中：\n    \n    ```java\n    SimpleVibrationHandler handler = new SimpleVibrationHandler(vibrator);\n    client.setVibrationHandler(handler);\n    ```\n\n5. 启动 LauncherProxyClient，并发送消息：\n\n    调用 LauncherProxyClient 的 run() 方法，否则 LauncherProxyClient 不会发送任何消息到游戏：\n    \n    ```java\n    client.run();\n    ```\n    \n    然后调用 LauncherProxyClient 的以下方法更新触点：\n    \n    - addPointer：添加或者更新一个触点\n    - removePointer：删除一个触点\n    - clearPointer：清除所有的触点\n    \n    如果不想手动做消息处理，库内也提供了一个基于 FrameLayout 的 TouchControllerLayout 类，只要将游戏相关的 View 包含在内，然后将 LauncherProxyClient 设置到 TouchControllerLayout 中即可发送处理触摸消息并发送。\n    \n    要注意的是消息中的 index 必须是单调递增的（与 Android 中可以复用 ID 的行为相反），并且所有坐标的范围是相对于游戏显示区域的 [0.0, 1.0]，而不是屏幕坐标。\n\n## Star 历史\n\n\u003ca href=\"https://star-history.com/#TouchController/TouchController\u0026Date\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=TouchController/TouchController\u0026type=Date\u0026theme=dark\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=TouchController/TouchController\u0026type=Date\" /\u003e\n   \u003cimg alt=\"Star 历史图表\" src=\"https://api.star-history.com/svg?repos=TouchController/TouchController\u0026type=Date\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftouchcontroller%2Ftouchcontroller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftouchcontroller%2Ftouchcontroller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftouchcontroller%2Ftouchcontroller/lists"}