diff --git a/pom.xml b/pom.xml index cce5fd6..e0ef36e 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ xyz.mcutils mcutils-java-library - 1.1.1 + 1.2.0 17 diff --git a/src/main/java/xyz/mcutils/McUtilsAPI.java b/src/main/java/xyz/mcutils/McUtilsAPI.java index 380d4ea..0ed6786 100644 --- a/src/main/java/xyz/mcutils/McUtilsAPI.java +++ b/src/main/java/xyz/mcutils/McUtilsAPI.java @@ -3,7 +3,7 @@ package xyz.mcutils; import xyz.mcutils.common.WebRequest; import xyz.mcutils.exception.ErrorResponse; import xyz.mcutils.models.cache.*; -import xyz.mcutils.models.player.CachedPlayerSkinPart; +import xyz.mcutils.models.cache.CachedPlayerSkinPart; import xyz.mcutils.models.player.Skin; import xyz.mcutils.models.server.*; @@ -15,6 +15,7 @@ public class McUtilsAPI { private static final String PLAYER_SKIN_PART_ENDPOINT = API_ENDPOINT + "/player/%s/%s"; private static final String SERVER_ENDPOINT = API_ENDPOINT + "/server/%s/%s"; private static final String SERVER_ICON_ENDPOINT = API_ENDPOINT + "/server/icon/%s"; + private static final String SERVER_PREVIEW_ENDPOINT = API_ENDPOINT + "/server/%s/preview/%s"; private static final String SERVER_BLOCKED_STATUS_ENDPOINT = API_ENDPOINT + "/server/blocked/%s"; /** @@ -107,4 +108,16 @@ public class McUtilsAPI { public static CachedServerBlockedStatus getServerBlockedStatus(String id) throws ErrorResponse { return WebRequest.get(SERVER_BLOCKED_STATUS_ENDPOINT.formatted(id), CachedServerBlockedStatus.class); } + + /** + * Gets the icon of a Java server from the API. + * + * @param id The id of the server to get the icon of. + * @return The server icon. + * @throws ErrorResponse If an error occurs. + */ + public static CachedServerPreview getServerPreview(ServerPlatform platform, String id) throws ErrorResponse { + byte[] bytes = WebRequest.get(SERVER_PREVIEW_ENDPOINT.formatted(platform.name(), id), byte[].class); + return new CachedServerPreview(bytes); + } } \ No newline at end of file diff --git a/src/main/java/xyz/mcutils/models/player/CachedPlayerSkinPart.java b/src/main/java/xyz/mcutils/models/cache/CachedPlayerSkinPart.java similarity index 87% rename from src/main/java/xyz/mcutils/models/player/CachedPlayerSkinPart.java rename to src/main/java/xyz/mcutils/models/cache/CachedPlayerSkinPart.java index 098812a..5e29e96 100644 --- a/src/main/java/xyz/mcutils/models/player/CachedPlayerSkinPart.java +++ b/src/main/java/xyz/mcutils/models/cache/CachedPlayerSkinPart.java @@ -1,4 +1,4 @@ -package xyz.mcutils.models.player; +package xyz.mcutils.models.cache; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/xyz/mcutils/models/cache/CachedServerPreview.java b/src/main/java/xyz/mcutils/models/cache/CachedServerPreview.java new file mode 100644 index 0000000..4c9b85f --- /dev/null +++ b/src/main/java/xyz/mcutils/models/cache/CachedServerPreview.java @@ -0,0 +1,13 @@ +package xyz.mcutils.models.cache; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.ToString; + +@AllArgsConstructor @Getter @ToString +public class CachedServerPreview { + /** + * The bytes for the skin part + */ + private byte[] bytes; +} diff --git a/src/test/java/xyz/mcutils/PlayerTests.java b/src/test/java/xyz/mcutils/PlayerTests.java index 501e708..ac6043a 100644 --- a/src/test/java/xyz/mcutils/PlayerTests.java +++ b/src/test/java/xyz/mcutils/PlayerTests.java @@ -4,7 +4,7 @@ import lombok.SneakyThrows; import org.junit.jupiter.api.Test; import xyz.mcutils.exception.ErrorResponse; import xyz.mcutils.models.cache.CachedPlayer; -import xyz.mcutils.models.player.CachedPlayerSkinPart; +import xyz.mcutils.models.cache.CachedPlayerSkinPart; import xyz.mcutils.models.cache.CachedUsernameToUuid; import xyz.mcutils.models.player.Skin; diff --git a/src/test/java/xyz/mcutils/ServerTests.java b/src/test/java/xyz/mcutils/ServerTests.java index 973c1a2..a2529df 100644 --- a/src/test/java/xyz/mcutils/ServerTests.java +++ b/src/test/java/xyz/mcutils/ServerTests.java @@ -6,7 +6,9 @@ import xyz.mcutils.exception.ErrorResponse; import xyz.mcutils.models.cache.CachedBedrockMinecraftServer; import xyz.mcutils.models.cache.CachedJavaMinecraftServer; import xyz.mcutils.models.cache.CachedServerBlockedStatus; +import xyz.mcutils.models.cache.CachedServerPreview; import xyz.mcutils.models.server.CachedServerIcon; +import xyz.mcutils.models.server.ServerPlatform; public class ServerTests { @@ -71,4 +73,38 @@ public class ServerTests { assert ex.getCode() == 400; } } + + @Test + @SneakyThrows + public void ensureBedrockServerIconLookupSuccess() { + CachedServerIcon icon = McUtilsAPI.getServerIcon(testBedrockServer); + assert icon.getBytes() != null; + } + + @Test + @SneakyThrows + public void ensureBedrockServerIconLookupFailure() { + try { + McUtilsAPI.getServerIcon(testInvalidServer); + } catch (ErrorResponse ex) { + assert ex.getCode() == 400; + } + } + + @Test + @SneakyThrows + public void ensureServerPreviewLookupSuccess() { + CachedServerPreview icon = McUtilsAPI.getServerPreview(ServerPlatform.JAVA, testJavaServer); + assert icon.getBytes() != null; + } + + @Test + @SneakyThrows + public void ensureServerPreviewLookupFailure() { + try { + McUtilsAPI.getServerPreview(ServerPlatform.JAVA, testInvalidServer); + } catch (ErrorResponse ex) { + assert ex.getCode() == 400; + } + } }