我正在尝试在后台运行的 Windows 上模拟 Minecraft Java 版中的用户输入。具体来说,我想模拟按住鼠标左键。
为了简化,我在
rawMouseInput:false
中设置了options.txt
。
对于鼠标输入,问题是在接收到
WM_LBUTTONDOWN
后,Minecraft 的行为就好像立即跟随 WM_LBUTTONUP
一样,尽管我可以在调试器中看到情况并非如此。结果,诸如挖掘区块之类的操作开始但立即中断。
现在我做了一些调查,看来 Minecraft 使用的是 LWJGL 3 Java 库,而该库又使用 GLFW C 库来处理用户输入。
我克隆了最新的 GLFW 并构建了一个简单的
boing
示例。但是,我无法用该示例重现相同的问题:boing
似乎正确地将WM_LBUTTONDOWN
视为操作的开始,并且在我发送WM_LBUTTONUP
之前不会停止操作。
Minecraft 对导致此类行为的输入做了什么特殊的操作吗?
如何在后台运行的 Minecraft 中模拟按住鼠标左键?
看来你想得有点太多了。 Java 有一个内置的键盘和鼠标模拟器,据我所知,它工作得很好。
java.awt.Robot robot = new Robot();
robot.mousePress(MouseEvent.<your_button_here>);
---<wait however long you want>---
robot.mouseRelease(MouseEvent.<your_button_here>);
抱歉,如果这看起来偏离主题,但它确实避免了一大堆问题......