diff --git a/pom.xml b/pom.xml
index e6fc3adb6..13d8529b7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -124,5 +124,11 @@
provided
maven-plugin
-
+
+ org.projectlombok
+ lombok
+ RELEASE
+ compile
+
+
\ No newline at end of file
diff --git a/src/main/java/amidst/gui/main/Actions.java b/src/main/java/amidst/gui/main/Actions.java
index 16543ea46..dc60044b4 100644
--- a/src/main/java/amidst/gui/main/Actions.java
+++ b/src/main/java/amidst/gui/main/Actions.java
@@ -39,6 +39,10 @@
import amidst.settings.biomeprofile.BiomeProfileDirectory;
import amidst.settings.biomeprofile.BiomeProfileSelection;
import amidst.util.FileExtensionChecker;
+import amidst.util.Pair;
+import jdk.jfr.BooleanFlag;
+import lombok.AllArgsConstructor;
+import lombok.Data;
@NotThreadSafe
public class Actions {
@@ -136,9 +140,9 @@ public void exit() {
public void goToCoordinate() {
ViewerFacade viewerFacade = viewerFacadeSupplier.get();
if (viewerFacade != null) {
- String input = dialogs.askForCoordinates();
- if (input != null) {
- CoordinatesInWorld coordinates = CoordinatesInWorld.tryParse(input);
+ Pair output = dialogs.askForCoordinates();
+ if (output.getFirst() != null) {
+ CoordinatesInWorld coordinates = CoordinatesInWorld.tryParse(output.getFirst(), output.getSecond());
if (coordinates != null) {
viewerFacade.centerOn(coordinates);
} else {
@@ -424,5 +428,4 @@ public static Path appendFileExtensionIfNecessary(Path file, String fileExtensio
}
return Paths.get(filename);
}
-
}
diff --git a/src/main/java/amidst/gui/main/MainWindowDialogs.java b/src/main/java/amidst/gui/main/MainWindowDialogs.java
index b291d230b..1aef85040 100644
--- a/src/main/java/amidst/gui/main/MainWindowDialogs.java
+++ b/src/main/java/amidst/gui/main/MainWindowDialogs.java
@@ -3,9 +3,7 @@
import java.nio.file.Path;
import java.util.List;
-import javax.swing.JFileChooser;
-import javax.swing.JFrame;
-import javax.swing.JOptionPane;
+import javax.swing.*;
import amidst.AmidstSettings;
import amidst.documentation.AmidstThread;
@@ -16,6 +14,7 @@
import amidst.mojangapi.world.WorldSeed;
import amidst.mojangapi.world.WorldType;
import amidst.mojangapi.world.player.WorldPlayerType;
+import amidst.util.Pair;
@NotThreadSafe
public class MainWindowDialogs {
@@ -147,8 +146,12 @@ public T askForOptions(String title, String message, List choices) {
}
@CalledOnlyBy(AmidstThread.EDT)
- public String askForCoordinates() {
- return askForString("Go To", "Enter coordinates: (Ex. 123,456)");
+ public Pair askForCoordinates() {
+ JCheckBox checkbox = new JCheckBox("Nether");
+ String message = "Enter coordinates: (Ex. 123,456)";
+ Object[] params = {message, checkbox};
+ String answer = JOptionPane.showInputDialog(frame, params, "Go To", JOptionPane.QUESTION_MESSAGE);
+ return Pair.of(answer, checkbox.isSelected());
}
@CalledOnlyBy(AmidstThread.EDT)
@@ -167,10 +170,5 @@ public String askForPlayerHeight(long currentHeight) {
return null;
}
}
-
- @CalledOnlyBy(AmidstThread.EDT)
- private String askForString(String title, String message) {
- return JOptionPane.showInputDialog(frame, message, title, JOptionPane.QUESTION_MESSAGE);
- }
}
diff --git a/src/main/java/amidst/gui/main/viewer/widget/CursorInformationWidget.java b/src/main/java/amidst/gui/main/viewer/widget/CursorInformationWidget.java
index 2241c52e5..77713782a 100644
--- a/src/main/java/amidst/gui/main/viewer/widget/CursorInformationWidget.java
+++ b/src/main/java/amidst/gui/main/viewer/widget/CursorInformationWidget.java
@@ -49,7 +49,7 @@ protected List updateTextLines() {
if (mousePosition != null) {
CoordinatesInWorld coordinates = translator.screenToWorld(mousePosition);
String biomeName = getBiomeNameAt(coordinates);
- return Arrays.asList(biomeName + " " + coordinates.toString());
+ return Arrays.asList(biomeName, "Overworld: " + coordinates.toString(), "Nether: " + CoordinatesInWorld.toNether(coordinates).toString());
} else {
return null;
}
diff --git a/src/main/java/amidst/mojangapi/world/coordinates/CoordinatesInWorld.java b/src/main/java/amidst/mojangapi/world/coordinates/CoordinatesInWorld.java
index 06ab42584..7b8e7e598 100644
--- a/src/main/java/amidst/mojangapi/world/coordinates/CoordinatesInWorld.java
+++ b/src/main/java/amidst/mojangapi/world/coordinates/CoordinatesInWorld.java
@@ -6,13 +6,19 @@
@Immutable
public class CoordinatesInWorld implements Comparable {
- public static CoordinatesInWorld tryParse(String coordinates) {
+ public static CoordinatesInWorld tryParse(String coordinates, Boolean isNether) {
String[] parsedCoordinates = coordinates.replaceAll(" ", "").split(",");
if (parsedCoordinates.length != 2) {
return null;
}
try {
- return CoordinatesInWorld.from(Long.parseLong(parsedCoordinates[0]), Long.parseLong(parsedCoordinates[1]));
+ long x = Long.parseLong(parsedCoordinates[0]);
+ long z = Long.parseLong(parsedCoordinates[1]);
+ if (isNether) {
+ return CoordinatesInWorld.fromNether(x, z);
+ } else {
+ return CoordinatesInWorld.from(x, z);
+ }
} catch (NumberFormatException e) {
return null;
}
@@ -22,6 +28,14 @@ public static CoordinatesInWorld from(long xInWorld, long yInWorld) {
return new CoordinatesInWorld(xInWorld, yInWorld);
}
+ public static CoordinatesInWorld fromNether(long xInWorld, long yInWorld) {
+ return new CoordinatesInWorld(xInWorld * 8, yInWorld * 8);
+ }
+
+ public static CoordinatesInWorld toNether(CoordinatesInWorld coordinates) {
+ return new CoordinatesInWorld(coordinates.xInWorld / 8, coordinates.yInWorld / 8);
+ }
+
public static CoordinatesInWorld from(long xAsResolution, long yAsResolution, Resolution resolution) {
return new CoordinatesInWorld(
resolution.convertFromThisToWorld(xAsResolution),
diff --git a/src/main/java/amidst/util/Pair.java b/src/main/java/amidst/util/Pair.java
new file mode 100644
index 000000000..c90bd3c98
--- /dev/null
+++ b/src/main/java/amidst/util/Pair.java
@@ -0,0 +1,11 @@
+package amidst.util;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor(staticName = "of")
+public class Pair {
+ private F first;
+ private S second;
+}
\ No newline at end of file