diff --git a/common/src/main/java/net/endercube/common/utils/CoordinateUtils.java b/common/src/main/java/net/endercube/common/utils/CoordinateUtils.java new file mode 100644 index 0000000..e86334a --- /dev/null +++ b/common/src/main/java/net/endercube/common/utils/CoordinateUtils.java @@ -0,0 +1,31 @@ +package net.endercube.common.utils; + +import net.minestom.server.coordinate.Pos; + +public class CoordinateUtils { + + /** + * Gets the center of a block from a block position + * + * @param blockPos The {@link Pos} with the integer block position + * @return The {@link Pos} with the .5 position + */ + public static Pos posFromBlockpos(Pos blockPos) { + double x = blockPos.blockX(); + double z = blockPos.blockZ(); + + if (x > 0) { + x = x - 0.5; + } else { + x = x + 0.5; + } + + if (z > 0) { + z = z - 0.5; + } else { + z = z + 0.5; + } + + return new Pos(x, blockPos.y(), z, blockPos.yaw(), blockPos.pitch()); + } +} diff --git a/parkour/src/main/java/net/endercube/parkour/ParkourMinigame.java b/parkour/src/main/java/net/endercube/parkour/ParkourMinigame.java index e3c0dd9..01ecb48 100644 --- a/parkour/src/main/java/net/endercube/parkour/ParkourMinigame.java +++ b/parkour/src/main/java/net/endercube/parkour/ParkourMinigame.java @@ -25,6 +25,8 @@ import java.nio.file.Paths; import java.util.ArrayList; +import static net.endercube.common.utils.CoordinateUtils.posFromBlockpos; + /** * This is the entrypoint for Parkour */ @@ -152,7 +154,7 @@ public static void sendToCheckpoint(EndercubePlayer player) { player.teleport(currentInstance.getTag(Tag.Transient("spawnPos"))); player.setTag(Tag.Long("parkour_startTime"), System.currentTimeMillis()); // Reset timer } else { - player.teleport(checkpoints[currentCheckpoint]); + player.teleport(posFromBlockpos(checkpoints[currentCheckpoint])); } }