diff --git a/.github/workflows/build_platform.yml b/.github/workflows/build_platform.yml index 059d288..5265fed 100644 --- a/.github/workflows/build_platform.yml +++ b/.github/workflows/build_platform.yml @@ -35,7 +35,7 @@ jobs: distribution: 'temurin' - name: Setup Gradle - uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4 + uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4 - name: Mark Gradle as Executable run: chmod +x gradlew @@ -71,7 +71,7 @@ jobs: distribution: 'temurin' - name: Setup Gradle - uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4 + uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4 - name: Build with Gradle Wrapper run: ./gradlew build -x test @@ -133,7 +133,7 @@ jobs: distribution: 'temurin' - name: Setup Gradle - uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4 + uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4 - name: Mark Gradle as Executable run: chmod +x gradlew diff --git a/.github/workflows/build_test_linux.yml b/.github/workflows/build_test_linux.yml index 9fbc364..a8aaf1f 100644 --- a/.github/workflows/build_test_linux.yml +++ b/.github/workflows/build_test_linux.yml @@ -24,7 +24,7 @@ jobs: distribution: 'temurin' - name: Setup Gradle - uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4 + uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4 - name: Mark Gradle as Executable run: chmod +x gradlew diff --git a/.github/workflows/dependency-submission.yml b/.github/workflows/dependency-submission.yml index 1453a5a..feb225a 100644 --- a/.github/workflows/dependency-submission.yml +++ b/.github/workflows/dependency-submission.yml @@ -24,4 +24,4 @@ jobs: distribution: 'temurin' - name: Generate and submit dependency graph - uses: gradle/actions/dependency-submission@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2 + uses: gradle/actions/dependency-submission@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 83b225a..933c6f6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,7 +28,7 @@ jobs: distribution: 'temurin' - name: Setup Gradle - uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4 + uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4 - name: Mark Gradle as Executable run: chmod +x gradlew @@ -70,7 +70,7 @@ jobs: distribution: 'temurin' - name: Setup Gradle - uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4 + uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4 - name: Build with Gradle Wrapper run: ./gradlew build -x test @@ -131,7 +131,7 @@ jobs: distribution: 'temurin' - name: Setup Gradle - uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4 + uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4 - name: Mark Gradle as Executable run: chmod +x gradlew diff --git a/app/electron/package.json b/app/electron/package.json index 2e7e4ed..2fb9263 100644 --- a/app/electron/package.json +++ b/app/electron/package.json @@ -1,7 +1,7 @@ { "name": "chunker-electron", "private": true, - "version": "1.4.5", + "version": "1.4.6", "description": "Convert worlds between Java and Bedrock.", "main": "src/index.js", "type": "module", diff --git a/app/package-lock.json b/app/package-lock.json index 2a10471..d466010 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -20,7 +20,7 @@ }, "electron": { "name": "chunker-electron", - "version": "1.4.5", + "version": "1.4.6", "license": "MIT", "dependencies": { "archiver": "^7.0.1", diff --git a/cli/build.gradle.kts b/cli/build.gradle.kts index 803b3d4..78a3f86 100644 --- a/cli/build.gradle.kts +++ b/cli/build.gradle.kts @@ -36,7 +36,7 @@ dependencies { } group = "com.hivemc.chunker" -version = "1.4.5" +version = "1.4.6" description = "chunker" base.archivesName = "chunker-cli" java.sourceCompatibility = JavaVersion.VERSION_17 diff --git a/cli/src/main/java/com/hivemc/chunker/cli/messenger/Messenger.java b/cli/src/main/java/com/hivemc/chunker/cli/messenger/Messenger.java index 0e3cbdb..31e5f70 100644 --- a/cli/src/main/java/com/hivemc/chunker/cli/messenger/Messenger.java +++ b/cli/src/main/java/com/hivemc/chunker/cli/messenger/Messenger.java @@ -1,5 +1,6 @@ package com.hivemc.chunker.cli.messenger; +import com.google.common.util.concurrent.ExecutionError; import com.google.gson.*; import com.hivemc.chunker.cli.messenger.messaging.BasicMessage; import com.hivemc.chunker.cli.messenger.messaging.BasicMessageTypeAdapter; @@ -433,6 +434,11 @@ public static boolean startConversionRequest(UUID sessionID, UUID taskID, WorldC throwable = throwable.getCause(); } + // Unwrap execution error + if (throwable instanceof ExecutionError) { + throwable = throwable.getCause(); + } + // Check that it isn't a cancellation if (throwable instanceof CancellationException) { write(new ErrorResponse( diff --git a/cli/src/main/java/com/hivemc/chunker/conversion/encoding/bedrock/base/resolver/biome/BedrockBiomeIDResolver.java b/cli/src/main/java/com/hivemc/chunker/conversion/encoding/bedrock/base/resolver/biome/BedrockBiomeIDResolver.java index f2e7488..a0942fd 100644 --- a/cli/src/main/java/com/hivemc/chunker/conversion/encoding/bedrock/base/resolver/biome/BedrockBiomeIDResolver.java +++ b/cli/src/main/java/com/hivemc/chunker/conversion/encoding/bedrock/base/resolver/biome/BedrockBiomeIDResolver.java @@ -135,27 +135,28 @@ public BedrockBiomeIDResolver(Version bedrockVersion) { @Override public Optional from(ChunkerBiome input) { // Custom biomes aren't supported in this version since they are IDs - ChunkerBiome.ChunkerVanillaBiome ChunkerVanillaBiome; + ChunkerBiome.ChunkerVanillaBiome chunkerVanillaBiome; // Resolve it to a vanilla biome if (input instanceof ChunkerBiome.ChunkerVanillaBiome biome) { - ChunkerVanillaBiome = biome; + chunkerVanillaBiome = biome; } else { - // Custom identifiers aren't supported, so use the fallback - ChunkerVanillaBiome = input.getFallback(); - } - - // First null check - if (ChunkerVanillaBiome == null) { - return Optional.empty(); // Unable to resolve a vanilla biome + // If they're not supported check for a fallback + ChunkerBiome.ChunkerVanillaBiome fallback = input.getFallback(); + if (fallback != null) { + return from(fallback); + } else { + // No possible mapping + return Optional.empty(); + } } // Try to map it - Integer mapped = mapping.forward().get(ChunkerVanillaBiome); + Integer mapped = mapping.forward().get(chunkerVanillaBiome); // It wasn't found, so first we should use the built-in fallbacks if (mapped == null) { - ChunkerBiome.ChunkerVanillaBiome fallback = ChunkerVanillaBiome.getFallback(); + ChunkerBiome.ChunkerVanillaBiome fallback = chunkerVanillaBiome.getFallback(); // Use the fallback if it's present if (fallback != null) { diff --git a/cli/src/main/java/com/hivemc/chunker/conversion/encoding/java/base/resolver/biome/JavaNamedBiomeResolver.java b/cli/src/main/java/com/hivemc/chunker/conversion/encoding/java/base/resolver/biome/JavaNamedBiomeResolver.java index ca7a4c9..ae3017c 100644 --- a/cli/src/main/java/com/hivemc/chunker/conversion/encoding/java/base/resolver/biome/JavaNamedBiomeResolver.java +++ b/cli/src/main/java/com/hivemc/chunker/conversion/encoding/java/base/resolver/biome/JavaNamedBiomeResolver.java @@ -104,8 +104,8 @@ public JavaNamedBiomeResolver(Version javaVersion, boolean customIdentifierSuppo @Override public Optional from(ChunkerBiome input) { - if (input instanceof ChunkerBiome.ChunkerVanillaBiome ChunkerVanillaBiome) { - return from(ChunkerVanillaBiome); + if (input instanceof ChunkerBiome.ChunkerVanillaBiome chunkerVanillaBiome) { + return from(chunkerVanillaBiome); } else if (input instanceof ChunkerCustomBiome customIdentifierBiome) { if (customIdentifierSupported) { return Optional.ofNullable(customIdentifierBiome.getIdentifier()); diff --git a/cli/src/main/java/com/hivemc/chunker/conversion/intermediate/column/biome/layout/ChunkerClusterPaletteBasedBiomes.java b/cli/src/main/java/com/hivemc/chunker/conversion/intermediate/column/biome/layout/ChunkerClusterPaletteBasedBiomes.java index 4c5984c..1056ce8 100644 --- a/cli/src/main/java/com/hivemc/chunker/conversion/intermediate/column/biome/layout/ChunkerClusterPaletteBasedBiomes.java +++ b/cli/src/main/java/com/hivemc/chunker/conversion/intermediate/column/biome/layout/ChunkerClusterPaletteBasedBiomes.java @@ -123,6 +123,10 @@ public List> asPalette() { @Override public Palette as4X4Palette(int chunkY) { + // If there are no chunks return an empty palette + if (chunks.isEmpty()) { + return EmptyPalette.instance(4); + } return chunkY < 0 || chunkY >= chunks.size() ? chunks.get(chunks.size() - 1) : chunks.get(chunkY); } diff --git a/cli/src/main/java/com/hivemc/chunker/conversion/intermediate/column/biome/layout/ChunkerPaletteBasedBiomes.java b/cli/src/main/java/com/hivemc/chunker/conversion/intermediate/column/biome/layout/ChunkerPaletteBasedBiomes.java index 46c7ee8..91bc923 100644 --- a/cli/src/main/java/com/hivemc/chunker/conversion/intermediate/column/biome/layout/ChunkerPaletteBasedBiomes.java +++ b/cli/src/main/java/com/hivemc/chunker/conversion/intermediate/column/biome/layout/ChunkerPaletteBasedBiomes.java @@ -79,8 +79,13 @@ public List> asPalette() { @Override public Palette as4X4Palette(int chunkY) { - Palette oldPalette = chunkY < 0 || chunkY >= chunks.size() ? chunks.get(chunks.size() - 1) : chunks.get(chunkY); + // If there are no chunks return an empty palette + if (chunks.isEmpty()) { + return EmptyPalette.instance(4); + } + // Use the top palette if chunkY is outside the range of chunks + Palette oldPalette = chunkY < 0 || chunkY >= chunks.size() ? chunks.get(chunks.size() - 1) : chunks.get(chunkY); if (oldPalette.isEmpty()) { return EmptyPalette.instance(4); } else if (oldPalette.getKeyCount() == 1) { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 88b012d..eb7c583 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ [versions] picocli = "4.7.6" caffeine = "3.2.0" -gson = "2.11.0" +gson = "2.12.1" guava = "33.4.0-jre" leveldb = "1.0.1" leveldb-api = "1.0.1" @@ -18,7 +18,7 @@ junit = "5.11.4" # Plugins shadow = "8.1.1" gitVersion = "3.1.0" -jpackage = "1.6.0" +jpackage = "1.6.1" node = "7.1.0" [libraries]