piegamesde / BlockMap

An out-of-game map renderer and viewer for Minecraft 1.13–1.18 worlds [unmaintained]
MIT License
92 stars 22 forks source link

1.19 support #80

Closed SpiritOTHawk closed 1 year ago

SpiritOTHawk commented 2 years ago

Do you plan to add support for minecraft 1.19?

piegamesde commented 2 years ago

I'd like to, but honestly, I'm a bit short of motivation right now. It doesn't help that Minecraft 1.19 crashes on my machine and I'd have to investigate that issue first …

I'd be interested in contributions though, and willing to help + review. The instructions for the update process are documented in the README, and there's even more context in the issues regarding previous Minecraft updates.

SpiritOTHawk commented 1 year ago

Where can i find block color instructions?

piegamesde commented 1 year ago

https://github.com/Minecraft-Technik-Wiki/BlockMap/tree/master/BlockMap-internal/src/main/resources

SpiritOTHawk commented 1 year ago

I'm talking about where to get them for version 1.19 :), I searched in minecraft files, I didn't find it.

piegamesde commented 1 year ago

Oh, I have some bad new for you ^^

These are all manual. I usually open the game resources (in the client minecraft .jar file ./resources folder) and then go through them individually. Do the bulk things (new logs, stairs, etc.) first as they are easier.

SpiritOTHawk commented 1 year ago

ok thanks i will try

SpiritOTHawk commented 1 year ago

When i run ./gradlew regenerate

> Task :BlockMap-update-to-1.19:BlockMap-core:compileJava FAILED
D:\Programs\WorkSpaces\BlockMap-update-to-1.19\BlockMap-core\src\main\java\de\piegames\blockmap\renderer\RegionRenderer.java:46: error: cannot find symbol
                renderer19 = new ChunkRenderer_1_19(settings);
                ^
  symbol:   variable renderer19
  location: class RegionRenderer
D:\Programs\WorkSpaces\BlockMap-update-to-1.19\BlockMap-core\src\main\java\de\piegames\blockmap\renderer\RegionRenderer.java:152: error: cannot find symbol
                                                metadata.put(chunkPos, renderer19.renderChunk(chunkPosRegion, chunkPos, root, map, height, regionBiomes));
                                                                       ^
  symbol:   variable renderer19
  location: class RegionRenderer
2 errors

> Task :regenerate FAILED
piegamesde commented 1 year ago

Have you added renderer19 to line 36?

SpiritOTHawk commented 1 year ago

Didn't really add, corrected, and now another error.

22-07-19 14:25:27 INFO  ColorCompiler [183] - Compiling D:\Programs\WorkSpaces\BlockMap-update-to-1.19\BlockMap-internal\build\resources\main\biome-color-instructions.json to color map
22-07-19 14:25:27 DEBUG ColorCompiler [184] - Minecraft jar: D:\Programs\WorkSpaces\BlockMap-update-to-1.19\BlockMap-internal\.\build\generated-resources\BlockMap-internal\generated-resources-cache\client-1_19.jar
Exception in thread "main" 22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762): picocli.CommandLine$ExecutionException: Error while calling command (public void de.piegames.blockmap.generate.Generator.generateData() throws java.lang.Exception): java.nio.file.NoSuchFileException: .\build\generated-resources\BlockMap-internal\generated-resources-test\data-1_19\reports\worldgen\minecraft\worldgen\biome\ocean.json
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at picocli.CommandLine.executeUserObject(CommandLine.java:1986)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at picocli.CommandLine.access$1300(CommandLine.java:145)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at picocli.CommandLine$AbstractParseResultHandler.handleParseResult(CommandLine.java:2172)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at picocli.CommandLine.parseWithHandlers(CommandLine.java:2559)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at picocli.CommandLine.parseWithHandler(CommandLine.java:2494)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at de.piegames.blockmap.generate.Generator.main(Generator.java:260)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762): Caused by: java.nio.file.NoSuchFileException: .\build\generated-resources\BlockMap-internal\generated-resources-test\data-1_19\reports\worldgen\minecraft\worldgen\biome\ocean.json
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:236)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at java.base/java.nio.file.Files.newByteChannel(Files.java:380)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at java.base/java.nio.file.Files.newByteChannel(Files.java:432)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:422)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at java.base/java.nio.file.Files.newInputStream(Files.java:160)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at java.base/java.nio.file.Files.newBufferedReader(Files.java:2923)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at java.base/java.nio.file.Files.newBufferedReader(Files.java:2956)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at de.piegames.blockmap.generate.ColorCompiler.compileBiomeColors(ColorCompiler.java:225)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at de.piegames.blockmap.generate.Generator.generateData(Generator.java:163)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at java.base/java.lang.reflect.Method.invoke(Method.java:577)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       at picocli.CommandLine.executeUserObject(CommandLine.java:1972)
22-07-19 14:25:27 INFO  pl [14] - [STDERR]@.(Throwable.java:762):       ... 8 more

> Task :BlockMap-update-to-1.19:BlockMap-internal:generateData FAILED
> Task :regenerate FAILED

FAILURE: Build failed with an exception.

Full

piegamesde commented 1 year ago

Please check the contents of the .\build\generated-resources\BlockMap-internal\generated-resources-test\data-1_19\reports. If it does not exist, something went wrong during the data extraction. If it does exist and looks correct but .\build\generated-resources\BlockMap-internal\generated-resources-test\data-1_19\reports\worldgen\minecraft\worldgen\biome\ocean.json is still missing, then maybe Minecraft change something on the output format (yet again, sigh) and the extractor will need to be fixed.

Please consider opening a pull request with your WIP changes so that I can more easily keep track of them or try them out.

SpiritOTHawk commented 1 year ago

Both are present image image

piegamesde commented 1 year ago

Add log.debug("Loading file " + biomeDataDirectory.resolve(biomeName + ".json").getAbsolutePath()); to line 225 in ColorCompiler.java (just above where the error happens). Maybe the relative path is resolved against the wrong base for some reason?

SpiritOTHawk commented 1 year ago
D:\Programs\WorkSpaces\BlockMap-update-to-1.19\BlockMap-internal\src\main\java\de\piegames\blockmap\generate\ColorCompiler.java:225: error: cannot find symbol
                                log.debug("Loading file " + biomeDataDirectory.resolve(biomeName + ".json").getAbsolutePath());
                                                                                                           ^
  symbol:   method getAbsolutePath()
  location: interface Path
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error
piegamesde commented 1 year ago

Oops that's the old name, nowadays it's toAbsolutePath.


By the way I tried it out and get the same error. Turns out they changed the paths in the generated output from /reports/worldgen/minecraft/worldgen/ to /reports/minecraft/worldgen/. Since we are only generating the biome colors for the last version anyways, just fixing line 165 in Generator.java should be sufficient.

SpiritOTHawk commented 1 year ago

Edit: it works now

piegamesde commented 1 year ago

The leading / makes it an absolute path, that's a mistake. OUTPUT_INTERNAL_TEST.resolve("data-" + MinecraftVersion.LATEST.fileSuffix).resolve("reports/minecraft/worldgen/biome")); works for me.

SpiritOTHawk commented 1 year ago

Tests failed log

piegamesde commented 1 year ago

The superfluous /worldgen needs to also be removed in BiomesTest.java, line 58 (note that this time we are doing string concatenation and not using the Path.resolve, so the leading / is correct this time).

As for the "Unsupported class file major version", this likely has something to do with your Java installation, I'm afraid I won't be able to help you there. Apart from that, the assertion failures are a good thing: they are the TODO list of missing block colors that still need to be added. Make the testBlockNames tests all run first, before looking at the output of testDetailed.

SpiritOTHawk commented 1 year ago

When I use relief shading, the mangrove swamps look purple.

image

piegamesde commented 1 year ago

This magenta/purple color is used as a placeholder to indicate missing values.

SpiritOTHawk commented 1 year ago

Fixed :)

image

piegamesde commented 1 year ago

1.19 support is merged in develop and will be part of the 2.5 release.