
VR Jester 应用程序接口
VR手势识别API
适用于 Minecraft VR 的虚拟现实手势识别 API
喜欢玩 Vivecraft 或 QuestCraft 吗?喜欢模组吗?是否曾希望模组能更好地兼容 VR?无需再等待。这就是为开发者与玩家共同准备的解决方案!
此 API 使 Minecraft 模组开发者能够轻松为其模组添加 VR 兼容性支持。创建任何自定义手势并映射到任何按键绑定以触发事件。您不再需要将控制器按键映射到键盘按键。使用此 API,您的身体即控制器。
演示:
- https://imgur.com/a/UYaVFCj
- https://imgur.com/a/sYXcike
- https://i.imgur.com/kBD1TIU.mp4
- https://imgur.com/a/0fpiQ9a
- https://i.imgur.com/6xUNF6k.mp4
安装:
- 安装必要的依赖模组。请注意,Questbind 仅在使用 QuestCraft 时必需。
- 下载 VR Jester API 模组并将其放入
mods文件夹中。 - 运行 Minecraft。必要的配置文件将在初始化时生成。###
使用方法:
- 在 Minecraft VR 中,将您的控制器按钮之一绑定到“手势监听触发器 (Gesture Listener Trigger)”。我推荐使用抓握按钮。对于 Vivecraft,您必须通过 Steam VR 的控制器绑定菜单进行操作。对于 QuestCraft,您可以通过 QuestBind 进行操作。
- 创建手势有两种方法:
- 使用
/gesture命令 - 直接修改
config/gesture_store.json(手势存储位置)。示例手势存储:
- 使用
"GESTURE 1": {
"RIGHT_CONTROLLER|LEFT_CONTROLLER": [
{
"vrDevice": "RIGHT_CONTROLLER|LEFT_CONTROLLER",
"movement": "forward",
"elapsedTime": 0,
"speed": 0.0,
"direction": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"devicesInProximity": {}
}
]
},
...
- 创建手势后,您可以在
config/VRJesterAPI.cfg中的“GESTURE_KEY_MAPPINGS”字段下创建键值对象,将其映射到按键绑定。您可以在.minecraft/options.txt中找到按键绑定名称。“KEY_ACTION”字段决定识别到的手势是触发一次 点击 键按下,还是 按住 键按下。当您在手势被识别后保持该手势不动的时长达到设定值时,将触发 按住。
"GESTURE_KEY_MAPPINGS": {
"GESTURE 1": {
"KEY_MAPPING": "examplemod.key.ability_1",
"KEY_ACTION": "click"
},
"GESTURE 2": {
"KEY_MAPPING": "key.hotbar.2,key.sneak",
"KEY_ACTION": "hold"
},
"GESTURE 3": {
"KEY_MAPPING": "key.keyboard.j",
"KEY_ACTION": "click"
}
}
下载:

信息:
- 将方括号 [ ] 中的每个对象视为手势的一个片段。您可以添加多个这样的 GestureComponent 对象。此 API 可识别您想要得任意复杂手势!但要知道,手势越复杂,正确执行以匹配您存储的手势的难度就越大。
- “movement”的不同取值包括
forward, back, left, right, up, down。移动方向相对于您点击启动手势监听器的 Jester 触发器时的面向方向。简单的例子是,朝您面向的同一方向出拳会被识别为“forward (向前)”。 - “vrDevice”的不同取值包括
RIGHT_CONTROLLER, LEFT_CONTROLLER, HEAD_MOUNTED_DISPLAY。如果您希望手势在多个 VR 设备上被识别,可以使用竖线|进行“逻辑或”组合,如下所示:RIGHT_CONTROLLER|LEFT_CONTROLLER|HEAD_MOUNTED_DISPLAY。 - “elapsedTime”以毫秒为单位。因此,设置值为
2000表示该部分手势持续 2 秒。这适用于类似充能蓄力的动作。 - “speed”字段是一个浮点值,代表该手势组件的速度。识别出拳速度的一个合理阈值大约是
1500.0-2000.0,您可以随意调整这些数值。 - “direction”字段接受
x,y,z浮点值,用于创建 3D 归一化向量。此字段的用法示例是使用{0.0, 1.0, 0.0}来识别玩家拳头朝向向上的情况。由于存在一定的容差阈值,因此不必完全精确匹配。 - 最后是“devicesInProximity”字段,您可以在下面看到其格式示例。此示例的含义是,此手势组件的 vrDevice 设备必须在左控制器的近距离范围内保持 20 个游戏刻(tick)。
"devicesInProximity": {
"LEFT_CONTROLLER": 20
}
- 订阅事件总线以处理由识别到的手势触发的事件(Forge),或注册到事件回调接口(Fabric)。
Forge:
@SubscribeEvent
public void onGestureEvent(GestureEvent event) {
// 手势处理代码 -- event.getGestureName()
}
Fabric:
public static void init() {
GestureEventCallback.EVENT.register((gestureEvent) → {
// 手势处理代码 -- gestureEvent.getGestureName()
});
}
规划中:
未来我将添加连续手势识别、更多配置选项和优化。
更新于 2025/3/27 - 我知道我已经有一段时间没有更新了,但我完全打算回来继续开发这个模组。我一直在忙于其他项目。对造成的不便深表歉意。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。