diff --git a/src/main/java/me/bionicbeanie/mods/savecoords/INetherCalculator.java b/src/main/java/me/bionicbeanie/mods/savecoords/INetherCalculator.java index 7ac2e6c..1f3ab64 100644 --- a/src/main/java/me/bionicbeanie/mods/savecoords/INetherCalculator.java +++ b/src/main/java/me/bionicbeanie/mods/savecoords/INetherCalculator.java @@ -1,7 +1,7 @@ package me.bionicbeanie.mods.savecoords; -import me.bionicbeanie.mods.savecoords.model.PlayerRawPosition; +import me.bionicbeanie.mods.savecoords.model.PlayerPosition; public interface INetherCalculator { - PlayerRawPosition convert(PlayerRawPosition position); + PlayerPosition convert(PlayerPosition position); } diff --git a/src/main/java/me/bionicbeanie/mods/savecoords/gui/impl/DIContainer.java b/src/main/java/me/bionicbeanie/mods/savecoords/gui/impl/DIContainer.java index c9fe35c..fb813ba 100644 --- a/src/main/java/me/bionicbeanie/mods/savecoords/gui/impl/DIContainer.java +++ b/src/main/java/me/bionicbeanie/mods/savecoords/gui/impl/DIContainer.java @@ -78,9 +78,9 @@ public class DIContainer { MinecraftClient minecraftClient = MinecraftClient.getInstance(); fileStore = Factory.createFileStore(minecraftClient.runDirectory.getAbsolutePath()); guiController = new GuiController(minecraftClient); - playerLocator = Factory.CreatePlayerLocator(minecraftClient); - keyBinds = Factory.CreateKeyBinds(fileStore); dimensionAware = Factory.CreateDimensionAware(minecraftClient); + playerLocator = Factory.CreatePlayerLocator(minecraftClient, dimensionAware); + keyBinds = Factory.CreateKeyBinds(fileStore); netherCalculator = Factory.CreateNetherCalculator(dimensionAware); modGui = new SaveCoordinatesGui(fileStore, playerLocator, dimensionAware, keyBinds, guiController, netherCalculator); diff --git a/src/main/java/me/bionicbeanie/mods/savecoords/gui/impl/ListViewHandler.java b/src/main/java/me/bionicbeanie/mods/savecoords/gui/impl/ListViewHandler.java index 56652a5..324bd92 100644 --- a/src/main/java/me/bionicbeanie/mods/savecoords/gui/impl/ListViewHandler.java +++ b/src/main/java/me/bionicbeanie/mods/savecoords/gui/impl/ListViewHandler.java @@ -179,12 +179,13 @@ class ListViewHandler extends ViewHandlerBase { this.convertButton.setOnClick(() -> setRawPosition(netherCalculator.convert(position))); } - private void setRawPosition(PlayerRawPosition position) { + private void setRawPosition(PlayerPosition position) { this.icon.setImage(ResourceUtils.getIdentifier(position.getWorldDimension())); this.coordinates .setText(new LiteralText(position.getX() + ", " + position.getY() + ", " + position.getZ())); this.convertButton.setOnClick(() -> setRawPosition(netherCalculator.convert(position))); + this.pingButton.setOnClick(() -> onPing.accept(position)); this.coordinateConvertState = !coordinateConvertState; this.convertButton.setIcon(ResourceUtils.createConvertIcon(coordinateConvertState)); } diff --git a/src/main/java/me/bionicbeanie/mods/savecoords/impl/Factory.java b/src/main/java/me/bionicbeanie/mods/savecoords/impl/Factory.java index beb1efa..fac33b5 100644 --- a/src/main/java/me/bionicbeanie/mods/savecoords/impl/Factory.java +++ b/src/main/java/me/bionicbeanie/mods/savecoords/impl/Factory.java @@ -13,8 +13,8 @@ public class Factory { return new FileStore(baseDirectory); } - public static IPlayerLocator CreatePlayerLocator(MinecraftClient client) { - return new PlayerLocator(client); + public static IPlayerLocator CreatePlayerLocator(MinecraftClient client, IDimensionAware dimensionAware) { + return new PlayerLocator(client, dimensionAware); } public static IKeyBinds CreateKeyBinds(IFileStore fileStore) { diff --git a/src/main/java/me/bionicbeanie/mods/savecoords/impl/NetherCalculator.java b/src/main/java/me/bionicbeanie/mods/savecoords/impl/NetherCalculator.java index ecc6c5e..8bc1528 100644 --- a/src/main/java/me/bionicbeanie/mods/savecoords/impl/NetherCalculator.java +++ b/src/main/java/me/bionicbeanie/mods/savecoords/impl/NetherCalculator.java @@ -3,6 +3,7 @@ package me.bionicbeanie.mods.savecoords.impl; import me.bionicbeanie.mods.savecoords.IDimensionAware; import me.bionicbeanie.mods.savecoords.IDimensionAware.IDimension; import me.bionicbeanie.mods.savecoords.INetherCalculator; +import me.bionicbeanie.mods.savecoords.model.PlayerPosition; import me.bionicbeanie.mods.savecoords.model.PlayerRawPosition; class NetherCalculator implements INetherCalculator { @@ -28,19 +29,24 @@ class NetherCalculator implements INetherCalculator { } @Override - public PlayerRawPosition convert(PlayerRawPosition position) { + public PlayerPosition convert(PlayerPosition position) { IDimension dimension = dimensionAware.getDimension(position.getWorldDimension()); - + PlayerRawPosition rawPosition = null; + if (dimensionAware.isOverworld(dimension)) { - return new PlayerRawPosition(position.getX() / MULTIPLIER, position.getY(), position.getZ() / MULTIPLIER, + rawPosition = new PlayerRawPosition(position.getX() / MULTIPLIER, position.getY(), position.getZ() / MULTIPLIER, nether.getName()); } if (dimensionAware.isNether(dimension)) { - return new PlayerRawPosition(position.getX() * MULTIPLIER, position.getY(), position.getZ() * MULTIPLIER, + rawPosition = new PlayerRawPosition(position.getX() * MULTIPLIER, position.getY(), position.getZ() * MULTIPLIER, overworld.getName()); } + if(rawPosition != null) { + return new PlayerPosition(position.getId(), rawPosition, position.getLocationName(), position.getPositionMetadata()); + } + return position; } diff --git a/src/main/java/me/bionicbeanie/mods/savecoords/impl/PlayerLocator.java b/src/main/java/me/bionicbeanie/mods/savecoords/impl/PlayerLocator.java index 40bdfd5..8229f02 100644 --- a/src/main/java/me/bionicbeanie/mods/savecoords/impl/PlayerLocator.java +++ b/src/main/java/me/bionicbeanie/mods/savecoords/impl/PlayerLocator.java @@ -1,5 +1,6 @@ package me.bionicbeanie.mods.savecoords.impl; +import me.bionicbeanie.mods.savecoords.IDimensionAware; import me.bionicbeanie.mods.savecoords.IPlayerLocator; import me.bionicbeanie.mods.savecoords.model.PlayerRawPosition; import net.minecraft.client.MinecraftClient; @@ -8,9 +9,11 @@ import net.minecraft.util.math.Vec3d; class PlayerLocator implements IPlayerLocator { private MinecraftClient client; + private IDimensionAware dimensionAware; - public PlayerLocator(MinecraftClient client) { + public PlayerLocator(MinecraftClient client, IDimensionAware dimensionAware) { this.client = client; + this.dimensionAware = dimensionAware; } public PlayerRawPosition locate() { @@ -19,7 +22,7 @@ class PlayerLocator implements IPlayerLocator { long y = Math.round(pos.y); long z = Math.round(pos.z); - String worldDimension = client.player.getEntityWorld().getRegistryKey().getValue().toString(); + String worldDimension = this.dimensionAware.getCurrentDimension().getName(); return new PlayerRawPosition(x, y, z, worldDimension); } diff --git a/src/main/java/me/bionicbeanie/mods/savecoords/model/PlayerPosition.java b/src/main/java/me/bionicbeanie/mods/savecoords/model/PlayerPosition.java index 9667522..02774fb 100644 --- a/src/main/java/me/bionicbeanie/mods/savecoords/model/PlayerPosition.java +++ b/src/main/java/me/bionicbeanie/mods/savecoords/model/PlayerPosition.java @@ -27,7 +27,7 @@ public class PlayerPosition extends PlayerRawPosition { @Override public String toString() { - return this.locationName + " in [ " + this.getWorldDimension() + " ] at [ " + this.getX() + ", " + this.getY() - + ", " + this.getZ() + " ]"; + return this.locationName + " in " + this.getWorldDimension() + " >>> " + this.getX() + ", " + this.getY() + + ", " + this.getZ(); } } diff --git a/src/main/java/me/bionicbeanie/mods/savecoords/model/PlayerRawPosition.java b/src/main/java/me/bionicbeanie/mods/savecoords/model/PlayerRawPosition.java index bb777f7..c150553 100644 --- a/src/main/java/me/bionicbeanie/mods/savecoords/model/PlayerRawPosition.java +++ b/src/main/java/me/bionicbeanie/mods/savecoords/model/PlayerRawPosition.java @@ -29,7 +29,7 @@ public class PlayerRawPosition { @Override public String toString() { - return "I'm in [ " + worldDimension + " ] at [ " + x + ", " + y + ", " + z + " ]"; + return worldDimension + " >>> " + x + ", " + y + ", " + z; } }