From e29c31dbc0654b8608a12da9bb09992b1cc5858e Mon Sep 17 00:00:00 2001 From: Christian Date: Mon, 8 Mar 2021 02:29:17 +0100 Subject: [PATCH 1/3] Added Nether checkbox and Pair --- pom.xml | 8 +++++++- src/main/java/amidst/gui/main/Actions.java | 11 +++++++---- .../java/amidst/gui/main/MainWindowDialogs.java | 13 ++++++++----- .../world/coordinates/CoordinatesInWorld.java | 10 ++++++++-- src/main/java/amidst/util/Pair.java | 11 +++++++++++ 5 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 src/main/java/amidst/util/Pair.java 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..1abf58d0a 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) diff --git a/src/main/java/amidst/mojangapi/world/coordinates/CoordinatesInWorld.java b/src/main/java/amidst/mojangapi/world/coordinates/CoordinatesInWorld.java index 06ab42584..561fe32f8 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) { + x *= 8; + z *= 8; + } + return CoordinatesInWorld.from(x, z); } catch (NumberFormatException e) { return null; } 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 From 8ab24be1fe1d04e469384ac41be4cf5623ef2fee Mon Sep 17 00:00:00 2001 From: Christian Date: Mon, 8 Mar 2021 03:27:11 +0100 Subject: [PATCH 2/3] Add nether coords to widget --- .../viewer/widget/CursorInformationWidget.java | 2 +- .../world/coordinates/CoordinatesInWorld.java | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) 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 561fe32f8..7b8e7e598 100644 --- a/src/main/java/amidst/mojangapi/world/coordinates/CoordinatesInWorld.java +++ b/src/main/java/amidst/mojangapi/world/coordinates/CoordinatesInWorld.java @@ -15,10 +15,10 @@ public static CoordinatesInWorld tryParse(String coordinates, Boolean isNether) long x = Long.parseLong(parsedCoordinates[0]); long z = Long.parseLong(parsedCoordinates[1]); if (isNether) { - x *= 8; - z *= 8; + return CoordinatesInWorld.fromNether(x, z); + } else { + return CoordinatesInWorld.from(x, z); } - return CoordinatesInWorld.from(x, z); } catch (NumberFormatException e) { return null; } @@ -28,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), From 576a491c61145836277c988f41054d3e983fb042 Mon Sep 17 00:00:00 2001 From: Christian Date: Mon, 8 Mar 2021 03:38:19 +0100 Subject: [PATCH 3/3] Remove unused function --- src/main/java/amidst/gui/main/MainWindowDialogs.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/amidst/gui/main/MainWindowDialogs.java b/src/main/java/amidst/gui/main/MainWindowDialogs.java index 1abf58d0a..1aef85040 100644 --- a/src/main/java/amidst/gui/main/MainWindowDialogs.java +++ b/src/main/java/amidst/gui/main/MainWindowDialogs.java @@ -170,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); - } }