diff --git a/core/src/main/java/org/geysermc/geyser/registry/loader/ResourcePackLoader.java b/core/src/main/java/org/geysermc/geyser/registry/loader/ResourcePackLoader.java index afb5a2fe8d4..452550d878e 100644 --- a/core/src/main/java/org/geysermc/geyser/registry/loader/ResourcePackLoader.java +++ b/core/src/main/java/org/geysermc/geyser/registry/loader/ResourcePackLoader.java @@ -146,7 +146,7 @@ public static GeyserResourcePack readPack(Path path) throws IllegalArgumentExcep // Check if a file exists with the same name as the resource pack suffixed by .key, // and set this as content key. (e.g. test.zip, key file would be test.zip.key) Path keyFile = path.resolveSibling(path.getFileName().toString() + ".key"); - String contentKey = Files.exists(keyFile) ? Files.readString(path, StandardCharsets.UTF_8) : ""; + String contentKey = Files.exists(keyFile) ? Files.readString(keyFile, StandardCharsets.UTF_8) : ""; return new GeyserResourcePack(new GeyserPathPackCodec(path), manifest, contentKey); } catch (Exception e) { diff --git a/core/src/test/java/org/geysermc/geyser/registry/loader/ResourcePackLoaderTest.java b/core/src/test/java/org/geysermc/geyser/registry/loader/ResourcePackLoaderTest.java index 8150ac44635..b66fd0811ad 100644 --- a/core/src/test/java/org/geysermc/geyser/registry/loader/ResourcePackLoaderTest.java +++ b/core/src/test/java/org/geysermc/geyser/registry/loader/ResourcePackLoaderTest.java @@ -25,11 +25,16 @@ package org.geysermc.geyser.registry.loader; +import org.geysermc.geyser.api.pack.ResourcePack; import org.junit.jupiter.api.Test; +import java.net.URISyntaxException; +import java.net.URL; import java.nio.file.Path; import java.nio.file.PathMatcher; +import java.util.Objects; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -54,4 +59,26 @@ public void testPathMatcher() { assertFalse(matcher.matches(Path.of("pack.7zip"))); assertFalse(matcher.matches(Path.of("packs"))); } + + @Test + public void testPack() throws Exception { + // this mcpack only contains a folder, which the manifest is in + Path path = getResource("empty_pack.mcpack"); + ResourcePack pack = ResourcePackLoader.readPack(path); + assertEquals("", pack.contentKey()); + // should probably add some more tests here related to the manifest + } + + @Test + public void testEncryptedPack() throws Exception { + // this zip only contains a contents.json and manifest.json at the root + Path path = getResource("encrypted_pack.zip"); + ResourcePack pack = ResourcePackLoader.readPack(path); + assertEquals("JAGcSXcXwcODc1YS70GzeWAUKEO172UA", pack.contentKey()); + } + + private Path getResource(String name) throws URISyntaxException { + URL url = Objects.requireNonNull(getClass().getClassLoader().getResource(name), "No resource for name: " + name); + return Path.of(url.toURI()); + } } diff --git a/core/src/test/resources/empty_pack.mcpack b/core/src/test/resources/empty_pack.mcpack new file mode 100644 index 00000000000..6891357a58f Binary files /dev/null and b/core/src/test/resources/empty_pack.mcpack differ diff --git a/core/src/test/resources/encrypted_pack.zip b/core/src/test/resources/encrypted_pack.zip new file mode 100644 index 00000000000..6689845428f Binary files /dev/null and b/core/src/test/resources/encrypted_pack.zip differ diff --git a/core/src/test/resources/encrypted_pack.zip.key b/core/src/test/resources/encrypted_pack.zip.key new file mode 100644 index 00000000000..760c4ad7831 --- /dev/null +++ b/core/src/test/resources/encrypted_pack.zip.key @@ -0,0 +1 @@ +JAGcSXcXwcODc1YS70GzeWAUKEO172UA \ No newline at end of file