Ich versuche, awt.Robot zu verwenden, um Maus- und Schlüsselereignisse programmgesteuert zu erstellen. Das Problem ist, dass Schlüsselereignisse schlecht oder nicht behandelt werden. Es gibt keine Fehlermeldung. Hier ist der Code:AWT mousePress() und keyPress() funktionieren nicht wie erwartet in Minecraft Forge
package com.ClCH38.CC_Macro.TDI;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
public class Tdi {
Robot robot;
Tdi tdi;
public Tdi() {
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
}
public void directInputKey() {
try {
robot.keyPress(KeyEvent.VK_1); // Choose slot 1. Work fine
Thread.sleep(50);
robot.keyRelease(KeyEvent.VK_1);// Needed to release key
Thread.sleep(50);
robot.keyPress(KeyEvent.VK_2); // Choose slot [email protected]
The item is put in hand, but slot 1 is seems always selected
Thread.sleep(50);
robot.keyRelease(KeyEvent.VK_2);// Needed to release key
Thread.sleep(50);
robot.keyPress(KeyEvent.VK_1); // Choose slot 1 Don’t change anything
Thread.sleep(50);
robot.keyRelease(KeyEvent.VK_1);// Needed to release key
Thread.sleep(50);
robot.keyPress(KeyEvent.VK_S); // Move player back Don’t work
Thread.sleep(50);
robot.keyRelease(KeyEvent.VK_S);// Needed to release key
Thread.sleep(50);
robot.mousePress(MouseEvent.BUTTON3_DOWN_MASK);// Place block
Thread.sleep(50);
robot.mouseRelease(MouseEvent.BUTTON3_DOWN_MASK); // mouse button 3 is for AWT mouse right button
Thread.sleep(50);
robot.mousePress(MouseEvent.BUTTON3_DOWN_MASK);// Don’t work
Thread.sleep(50);
robot.mouseRelease(MouseEvent.BUTTON3_DOWN_MASK);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Ich arbeite auf Mac OS 10.10.9, Java 8
Dies ist sehr interessant. Was mich aber interessiert, ist die Verwendung von AWT Robot keyPress und mousePress Methoden, um physikalische Eingaben zu simulieren. Bisher habe ich Erfolg mit anderen Apps wie TextEdit oder Page (mit Verzögerung Methode, um das erwartete Ergebnis zu bekommen), aber mit Minecraft, Verhalten ist völlig unerwartet. Es ist vielleicht mit der Tatsache verbunden, dass ich einen Mac benutze, da ich festgestellt habe, dass es Probleme mit AWT Robot auf solchen Maschinen geben könnte. Hast du eine Idee? –
Und auch ich möchte Ereignisse an die Welt senden, nicht an eine GUI. Zu guter letzt bin ich nur am Einzelspielermodus interessiert. –
AWT! = Lwjgl. Sie können diese beiden nicht austauschbar mischen. Wenn Sie sie an die Welt senden möchten, senden Sie auch Datenpakete vom Client an die Welt mit den entsprechenden Ereignissen ... http://greyminecraftcoder.blogspot.nl/2013/10/packets-from-client-to -server.html – Tschallacka