···2626import javax.swing.JOptionPane;
2727import javax.swing.SwingUtilities;
28282929+import org.apache.commons.io.FileExistsException;
2930import org.apache.commons.io.FileUtils;
3031import org.apache.commons.lang3.SystemUtils;
3132import org.yaml.snakeyaml.Yaml;
···378379 // backwards compatibility for Star Rod 0.9.2 and below: move old config to new location
379380 File oldConfigFile = new File(codeSource.getParent(), "cfg/main.cfg");
380381 if (oldConfigFile.exists()) {
381381- FileUtils.moveFile(oldConfigFile, configFile);
382382+ try {
383383+ FileUtils.moveFile(oldConfigFile, configFile);
384384+ } catch (FileExistsException e) {
385385+ // existing configFile takes precedence
386386+ }
382387 }
383388384389 // we may need to create a new config file here
+7-2
src/main/java/common/MouseInput.java
···17171818import javax.swing.SwingUtilities;
19192020+import app.Environment;
2021import util.Logger;
21222223public class MouseInput implements MouseListener, MouseWheelListener
···196197 new Point(),
197198 null);
198199 try {
199199- robot = new Robot();
200200+ if (Environment.isMacOS()) {
201201+ // Moving mouse with Robot on macOS is not supported without enabling accessibility permissions
202202+ } else {
203203+ robot = new Robot();
204204+ }
200205 }
201206 catch (AWTException e) {
202207 robot = null;
···230235 SwingUtilities.convertPointFromScreen(curPos, comp);
231236232237 boolean hadLocation = hasLocation;
233233- hasLocation = comp.contains(curPos);
238238+ hasLocation = comp.contains(curPos) || Environment.isMacOS();
234239235240 if (hasLocation) {
236241 int posX = (int) Math.round(curPos.getX());