From cfd3978411ab7fdd9f0fd46c9243b8cc3cf96b98 Mon Sep 17 00:00:00 2001 From: Husky <39809509+Huskydog9988@users.noreply.github.com> Date: Sat, 4 Apr 2026 17:21:44 -0400 Subject: [PATCH 1/7] bump journeymap version --- mapsync-mod/gradle/libs.versions.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mapsync-mod/gradle/libs.versions.toml b/mapsync-mod/gradle/libs.versions.toml index 0d976dd..9cc383d 100644 --- a/mapsync-mod/gradle/libs.versions.toml +++ b/mapsync-mod/gradle/libs.versions.toml @@ -2,7 +2,7 @@ minecraft = "1.21.11" # https://fabricmc.net/versions.html fabricLoom = "1.15-SNAPSHOT" -fabricLoader = "0.18.4" +fabricLoader = "0.18.6" fabricApi = "0.141.3+1.21.11" [libraries] @@ -19,7 +19,7 @@ modmenu = { group = "maven.modrinth", name = "modmenu", version = "JWQVh32x" } # https://modrinth.com/mod/voxelmap-updated/versions?l=fabric voxelmap = { group = "maven.modrinth", name = "voxelmap-updated", version = "oL15yOzL" } # https://modrinth.com/mod/journeymap/versions?l=fabric -journeymap = { group = "maven.modrinth", name = "journeymap", version = "6vu2HyQi" } +journeymap = { group = "maven.modrinth", name = "journeymap", version = "ajOMv0sc" } # https://modrinth.com/mod/xaeros-world-map/versions?l=fabric xaerosmap = { group = "maven.modrinth", name = "xaeros-world-map", version = "CkZVhVE0" } # https://mvnrepository.com/artifact/org.java-websocket/Java-WebSocket From 0141e813b0c32c2c394b7348d5104b7e61b8a805 Mon Sep 17 00:00:00 2001 From: Husky <39809509+Huskydog9988@users.noreply.github.com> Date: Sat, 4 Apr 2026 17:22:01 -0400 Subject: [PATCH 2/7] use journeymap in testing --- mapsync-mod/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mapsync-mod/build.gradle.kts b/mapsync-mod/build.gradle.kts index 8926c34..61905a4 100644 --- a/mapsync-mod/build.gradle.kts +++ b/mapsync-mod/build.gradle.kts @@ -41,11 +41,11 @@ dependencies { libs.voxelmap.also { modCompileOnly(it) - modLocalDep(it) // Uncomment to test VoxelMap + // modLocalDep(it) // Uncomment to test VoxelMap } libs.journeymap.also { modCompileOnly(it) - //modLocalDep(it) // Uncomment to test JourneyMap + modLocalDep(it) // Uncomment to test JourneyMap } libs.xaerosmap.also { modCompileOnly(it) From d6f7c7bf505df7058f95442c311b0e7b7d9f8866 Mon Sep 17 00:00:00 2001 From: Husky <39809509+Huskydog9988@users.noreply.github.com> Date: Sat, 4 Apr 2026 17:23:43 -0400 Subject: [PATCH 3/7] fix day rendering in journeymap biome rendering still has some issues though --- .../journeymap/JourneyMapHelperReal.java | 124 ++++++++++++------ 1 file changed, 86 insertions(+), 38 deletions(-) diff --git a/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java b/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java index a8f1b83..aa69fb6 100644 --- a/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java +++ b/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java @@ -1,24 +1,23 @@ package gjum.minecraft.mapsync.mod.integrations.journeymap; -import static gjum.minecraft.mapsync.mod.MapSyncMod.logger; -import static gjum.minecraft.mapsync.mod.Utils.mc; - import gjum.minecraft.mapsync.mod.data.BlockColumn; import gjum.minecraft.mapsync.mod.data.BlockInfo; import gjum.minecraft.mapsync.mod.data.ChunkTile; import journeymap.client.JourneymapClient; import journeymap.client.io.FileHandler; -import journeymap.client.model.chunk.NBTChunkMD; +import journeymap.client.model.chunk.ChunkMD; import journeymap.client.model.map.MapType; import journeymap.client.model.region.RegionCoord; -import journeymap.common.nbt.RegionData; -import journeymap.common.nbt.RegionDataStorageHandler; import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.LevelChunk; +import static gjum.minecraft.mapsync.mod.MapSyncMod.logger; +import static gjum.minecraft.mapsync.mod.Utils.mc; + public class JourneyMapHelperReal { static boolean isMapping() { return JourneymapClient.getInstance().isMapping(); @@ -33,41 +32,51 @@ static boolean updateWithChunkTile(ChunkTile chunkTile) { var chunkMd = new TileChunkMD(chunkTile); var rCoord = RegionCoord.fromChunkPos( - FileHandler.getJMWorldDir(mc), - MapType.day(chunkTile.dimension()), // type doesn't matter, only dimension is used - chunkMd.getCoord().x, - chunkMd.getCoord().z); - - var key = new RegionDataStorageHandler.Key(rCoord, MapType.day(chunkTile.dimension())); - RegionData regionData = RegionDataStorageHandler.getInstance().getRegionData(key); - - final boolean renderedDay = renderController.renderChunk(rCoord, - MapType.day(chunkTile.dimension()), chunkMd, regionData); - if (!renderedDay) logger.warn("Failed rendering day at {}", chunkTile.chunkPos()); - - final boolean renderedBiome = renderController.renderChunk(rCoord, - MapType.biome(chunkTile.dimension()), chunkMd, regionData); - if (!renderedBiome) logger.warn("Failed rendering biome at {}", chunkTile.chunkPos()); - - final boolean renderedTopo = renderController.renderChunk(rCoord, - MapType.topo(chunkTile.dimension()), chunkMd, regionData); - if (!renderedTopo) logger.warn("Failed rendering topo at {}", chunkTile.chunkPos()); + FileHandler.getJMWorldDir(mc), + MapType.day(chunkTile.dimension()), // type doesn't matter, only dimension is used + chunkMd.getCoord().x, + chunkMd.getCoord().z); + + final boolean renderedDay = renderWithDiagnostics(rCoord, + MapType.day(chunkTile.dimension()), chunkMd, "day"); + final boolean renderedBiome = renderWithDiagnostics(rCoord, + MapType.biome(chunkTile.dimension()), chunkMd, "biome"); + final boolean renderedTopo = renderWithDiagnostics(rCoord, + MapType.topo(chunkTile.dimension()), chunkMd, "topo"); + + if (!renderedDay || !renderedBiome || !renderedTopo) { + logger.warn("JourneyMap chunk render debug {} -> day={}, biome={}, topo={}", + chunkTile.chunkPos(), renderedDay, renderedBiome, renderedTopo); + } return renderedDay && renderedBiome && renderedTopo; } + private static boolean renderWithDiagnostics( + RegionCoord rCoord, + MapType mapType, + TileChunkMD chunkMd, + String mapName + ) { + try { + // keep this call in one place so failures are logged with context + final boolean rendered = JourneymapClient.getInstance().getChunkRenderController().renderChunk(rCoord, mapType, chunkMd); + if (!rendered) logger.warn("Failed rendering {} at {}", mapName, chunkMd.chunkTile.chunkPos()); + return rendered; + } catch (Throwable t) { + logger.error("Exception rendering {} at {}", mapName, chunkMd.chunkTile.chunkPos(), t); + return false; + } + } + /** * References JourneyMap classes. Check {@link JourneyMapHelper#isJourneyMapNotAvailable} before referencing this. */ - private static class TileChunkMD extends NBTChunkMD { + private static class TileChunkMD extends ChunkMD { private final ChunkTile chunkTile; public TileChunkMD(ChunkTile chunkTile) { - super(new LevelChunk(mc.level, chunkTile.chunkPos()), - chunkTile.chunkPos(), - null, // all accessing methods are overridden - MapType.day(chunkTile.dimension()) // just has to not be `underground` - ); + super(new LevelChunk(mc.level, chunkTile.chunkPos())); this.chunkTile = chunkTile; } @@ -88,7 +97,9 @@ private BlockColumn getCol(BlockPos pos) { @Override public BlockState getBlockState(BlockPos pos) { - var layers = getCol(pos.getX(), pos.getZ()).layers(); + var column = getCol(pos.getX(), pos.getZ()); + if (column == null) return Blocks.AIR.defaultBlockState(); + var layers = column.layers(); BlockInfo prevLayer = null; // note that layers are ordered top-down for (BlockInfo layer : layers) { @@ -107,23 +118,60 @@ public BlockState getBlockState(BlockPos pos) { } @Override - public Integer getGetLightValue(BlockPos pos) { - return getCol(pos.getX(), pos.getZ()).light(); + public BlockState getChunkBlockState(BlockPos pos) { + return getBlockState(pos); } @Override - public Integer getTopY(BlockPos pos) { - return getCol(pos.getX(), pos.getZ()).layers().get(0).y(); + public Holder getBiomeHolder(BlockPos pos) { + var biome = getBiome(pos); + return biome != null ? Holder.direct(biome) : null; + } + + @Override + public boolean canBlockSeeTheSky(int localX, int y, int localZ) { + return getSavedLightValue(localX, y, localZ) > 0; + } + + @Override + public boolean hasLevelChunk() { + return false; + } + + @Override + public int getSavedLightValue(int localX, int y, int localZ) { + var column = getCol(localX, localZ); + if (column == null) return 0; + int light = column.light(); + if (light < 0 || light > 15) return 0; + return light; + } + + + @Override + public int getPrecipitationHeight(BlockPos pos) { + return this.getPrecipitationHeight(pos.getX(), pos.getZ()); + } + + @Override + public int getPrecipitationHeight(int localX, int localZ) { + var column = getCol(localX, localZ); + if (column == null || column.layers().isEmpty()) { + return mc.level != null ? mc.level.getMinY() : 0; + } + return column.layers().get(0).y(); } @Override public int getHeight(BlockPos pos) { - return this.getTopY(pos); + return this.getPrecipitationHeight(pos); } @Override public Biome getBiome(BlockPos pos) { - return getCol(pos).biome(); + var column = getCol(pos); + if (column != null) return column.biome(); + return null; } } } From 9b9e99613fd0844ce50083dd31bc23125d4fecc9 Mon Sep 17 00:00:00 2001 From: Husky <39809509+Huskydog9988@users.noreply.github.com> Date: Sat, 4 Apr 2026 17:46:36 -0400 Subject: [PATCH 4/7] actually return dimension in TileChunkMD --- .../journeymap/JourneyMapHelperReal.java | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java b/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java index aa69fb6..ee4ed62 100644 --- a/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java +++ b/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java @@ -10,6 +10,8 @@ import journeymap.client.model.region.RegionCoord; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.Level; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @@ -53,15 +55,14 @@ static boolean updateWithChunkTile(ChunkTile chunkTile) { } private static boolean renderWithDiagnostics( - RegionCoord rCoord, - MapType mapType, - TileChunkMD chunkMd, - String mapName + RegionCoord rCoord, + MapType mapType, + TileChunkMD chunkMd, + String mapName ) { try { // keep this call in one place so failures are logged with context final boolean rendered = JourneymapClient.getInstance().getChunkRenderController().renderChunk(rCoord, mapType, chunkMd); - if (!rendered) logger.warn("Failed rendering {} at {}", mapName, chunkMd.chunkTile.chunkPos()); return rendered; } catch (Throwable t) { logger.error("Exception rendering {} at {}", mapName, chunkMd.chunkTile.chunkPos(), t); @@ -122,21 +123,11 @@ public BlockState getChunkBlockState(BlockPos pos) { return getBlockState(pos); } - @Override - public Holder getBiomeHolder(BlockPos pos) { - var biome = getBiome(pos); - return biome != null ? Holder.direct(biome) : null; - } - @Override public boolean canBlockSeeTheSky(int localX, int y, int localZ) { return getSavedLightValue(localX, y, localZ) > 0; } - @Override - public boolean hasLevelChunk() { - return false; - } @Override public int getSavedLightValue(int localX, int y, int localZ) { @@ -147,17 +138,21 @@ public int getSavedLightValue(int localX, int y, int localZ) { return light; } - @Override public int getPrecipitationHeight(BlockPos pos) { return this.getPrecipitationHeight(pos.getX(), pos.getZ()); } + @Override + public ResourceKey getDimension() { + return chunkTile.dimension(); + } + @Override public int getPrecipitationHeight(int localX, int localZ) { var column = getCol(localX, localZ); if (column == null || column.layers().isEmpty()) { - return mc.level != null ? mc.level.getMinY() : 0; + return mc.level != null ? this.getMinY() : 0; } return column.layers().get(0).y(); } @@ -167,6 +162,12 @@ public int getHeight(BlockPos pos) { return this.getPrecipitationHeight(pos); } + @Override + public Holder getBiomeHolder(BlockPos pos) { + var biome = getBiome(pos); + return biome != null ? Holder.direct(biome) : null; + } + @Override public Biome getBiome(BlockPos pos) { var column = getCol(pos); From 91481f7cf284296080b56de330621d7e075c92e3 Mon Sep 17 00:00:00 2001 From: Husky <39809509+Huskydog9988@users.noreply.github.com> Date: Sat, 4 Apr 2026 18:15:50 -0400 Subject: [PATCH 5/7] turn chunk missing error into log msg --- .../journeymap/JourneyMapHelperReal.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java b/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java index ee4ed62..513d7b3 100644 --- a/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java +++ b/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java @@ -10,6 +10,7 @@ import journeymap.client.model.region.RegionCoord; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; import net.minecraft.world.level.biome.Biome; @@ -18,6 +19,7 @@ import net.minecraft.world.level.chunk.LevelChunk; import static gjum.minecraft.mapsync.mod.MapSyncMod.logger; +import static gjum.minecraft.mapsync.mod.Utils.getBiomeRegistry; import static gjum.minecraft.mapsync.mod.Utils.mc; public class JourneyMapHelperReal { @@ -64,6 +66,9 @@ private static boolean renderWithDiagnostics( // keep this call in one place so failures are logged with context final boolean rendered = JourneymapClient.getInstance().getChunkRenderController().renderChunk(rCoord, mapType, chunkMd); return rendered; + } catch (ChunkMD.ChunkMissingException e) { + logger.error("Chunk missing for rendering {} at {}", mapName, chunkMd.chunkTile.chunkPos()); + return false; } catch (Throwable t) { logger.error("Exception rendering {} at {}", mapName, chunkMd.chunkTile.chunkPos(), t); return false; @@ -165,7 +170,12 @@ public int getHeight(BlockPos pos) { @Override public Holder getBiomeHolder(BlockPos pos) { var biome = getBiome(pos); - return biome != null ? Holder.direct(biome) : null; + if (biome == null || mc.level == null) return null; + var biomeKey = getBiomeRegistry().getResourceKey(biome).orElse(null); + if (biomeKey == null) return null; + return mc.level.registryAccess() + .lookupOrThrow(Registries.BIOME) + .getOrThrow(biomeKey); } @Override From f957f89a490b5ef924ef0a189fcf723784157f4d Mon Sep 17 00:00:00 2001 From: Husky <39809509+Huskydog9988@users.noreply.github.com> Date: Mon, 6 Apr 2026 14:05:37 -0400 Subject: [PATCH 6/7] Add prefix to JourneyMap log messages --- .../mod/integrations/journeymap/JourneyMapHelperReal.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java b/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java index 513d7b3..76ac5ec 100644 --- a/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java +++ b/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java @@ -49,7 +49,7 @@ static boolean updateWithChunkTile(ChunkTile chunkTile) { MapType.topo(chunkTile.dimension()), chunkMd, "topo"); if (!renderedDay || !renderedBiome || !renderedTopo) { - logger.warn("JourneyMap chunk render debug {} -> day={}, biome={}, topo={}", + logger.warn("[JourneyMap] chunk render debug {} -> day={}, biome={}, topo={}", chunkTile.chunkPos(), renderedDay, renderedBiome, renderedTopo); } @@ -67,10 +67,10 @@ private static boolean renderWithDiagnostics( final boolean rendered = JourneymapClient.getInstance().getChunkRenderController().renderChunk(rCoord, mapType, chunkMd); return rendered; } catch (ChunkMD.ChunkMissingException e) { - logger.error("Chunk missing for rendering {} at {}", mapName, chunkMd.chunkTile.chunkPos()); + logger.error("[JourneyMap] Chunk missing for rendering {} at {}", mapName, chunkMd.chunkTile.chunkPos()); return false; } catch (Throwable t) { - logger.error("Exception rendering {} at {}", mapName, chunkMd.chunkTile.chunkPos(), t); + logger.error("[JourneyMap] Exception rendering {} at {}", mapName, chunkMd.chunkTile.chunkPos(), t); return false; } } From 058f5c075f2fffae741f107a3717b793c892aad7 Mon Sep 17 00:00:00 2001 From: Alexander Date: Mon, 6 Apr 2026 23:08:16 +0100 Subject: [PATCH 7/7] don't catch Throwable --- .../mod/integrations/journeymap/JourneyMapHelperReal.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java b/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java index 76ac5ec..8045e8b 100644 --- a/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java +++ b/mapsync-mod/src/main/java/gjum/minecraft/mapsync/mod/integrations/journeymap/JourneyMapHelperReal.java @@ -69,7 +69,7 @@ private static boolean renderWithDiagnostics( } catch (ChunkMD.ChunkMissingException e) { logger.error("[JourneyMap] Chunk missing for rendering {} at {}", mapName, chunkMd.chunkTile.chunkPos()); return false; - } catch (Throwable t) { + } catch (Exception t) { logger.error("[JourneyMap] Exception rendering {} at {}", mapName, chunkMd.chunkTile.chunkPos(), t); return false; }