From cd5ffea24d6a501c59b491b8f2b150b71c30f624 Mon Sep 17 00:00:00 2001 From: George Date: Sun, 7 Jun 2026 14:04:34 +0100 Subject: [PATCH] Add Minecraft coordinate boundary mapper --- .../minecraft/MinecraftCoordinateMapper.java | 33 +++++++++++++++++++ .../MinecraftCoordinateMapperTest.java | 25 ++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/main/java/com/livingworld/integration/minecraft/MinecraftCoordinateMapper.java create mode 100644 src/test/java/com/livingworld/integration/minecraft/MinecraftCoordinateMapperTest.java diff --git a/src/main/java/com/livingworld/integration/minecraft/MinecraftCoordinateMapper.java b/src/main/java/com/livingworld/integration/minecraft/MinecraftCoordinateMapper.java new file mode 100644 index 0000000..39784df --- /dev/null +++ b/src/main/java/com/livingworld/integration/minecraft/MinecraftCoordinateMapper.java @@ -0,0 +1,33 @@ +package com.livingworld.integration.minecraft; + +import com.livingworld.regions.RegionCoordinate; + +/** + * Converts platform coordinate values into Living World coordinates. + */ +public final class MinecraftCoordinateMapper { + + public RegionCoordinate fromBlockPos( + String dimensionId, + int blockX, + int blockZ, + int regionSizeChunks) { + return RegionCoordinate.fromBlock( + dimensionId, + blockX, + blockZ, + regionSizeChunks); + } + + public RegionCoordinate fromChunkPos( + String dimensionId, + int chunkX, + int chunkZ, + int regionSizeChunks) { + return RegionCoordinate.fromChunk( + dimensionId, + chunkX, + chunkZ, + regionSizeChunks); + } +} diff --git a/src/test/java/com/livingworld/integration/minecraft/MinecraftCoordinateMapperTest.java b/src/test/java/com/livingworld/integration/minecraft/MinecraftCoordinateMapperTest.java new file mode 100644 index 0000000..eb2e81c --- /dev/null +++ b/src/test/java/com/livingworld/integration/minecraft/MinecraftCoordinateMapperTest.java @@ -0,0 +1,25 @@ +package com.livingworld.integration.minecraft; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import com.livingworld.regions.RegionCoordinate; +import org.junit.jupiter.api.Test; + +class MinecraftCoordinateMapperTest { + + private final MinecraftCoordinateMapper mapper = new MinecraftCoordinateMapper(); + + @Test + void mapsBlockCoordinatesThroughRegionCoordinate() { + assertEquals( + new RegionCoordinate("minecraft:overworld", -2, 1), + mapper.fromBlockPos("minecraft:overworld", -129, 128, 8)); + } + + @Test + void mapsChunkCoordinatesThroughRegionCoordinate() { + assertEquals( + new RegionCoordinate("minecraft:the_nether", -1, 1), + mapper.fromChunkPos("minecraft:the_nether", -1, 8, 8)); + } +}