diff options
author | Julienraptor01 <julienraptor01@gmail.com> | 2023-04-07 00:50:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-07 00:50:18 +0200 |
commit | de9d2f3f210a5bb9aad3792666d14e3d5d75ebc2 (patch) | |
tree | 2015098d5c1b0bcd0b0289253e540362b90c56b9 /src/main/java/me/xmrvizzy/skyblocker/utils | |
parent | 1ff677ec7f1afea7417a79bacd07192ed7f516e3 (diff) | |
parent | 38352b7ed91d988d7155e97a668fa01db7749b85 (diff) | |
download | Skyblocker-de9d2f3f210a5bb9aad3792666d14e3d5d75ebc2.tar.gz Skyblocker-de9d2f3f210a5bb9aad3792666d14e3d5d75ebc2.tar.bz2 Skyblocker-de9d2f3f210a5bb9aad3792666d14e3d5d75ebc2.zip |
Merge branch 'master' into fix-tab-matching
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/utils')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java | 87 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java | 21 |
2 files changed, 56 insertions, 52 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java b/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java index 9e4b609f..a2809712 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java @@ -1,64 +1,67 @@ package me.xmrvizzy.skyblocker.utils; -import com.google.gson.*; +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; -import net.minecraft.text.*; +import net.minecraft.text.ClickEvent; +import net.minecraft.text.HoverEvent; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; import org.spongepowered.asm.util.VersionNumber; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.util.concurrent.CompletableFuture; import java.util.regex.Matcher; import java.util.regex.Pattern; public class UpdateChecker { - public static boolean shouldUpdate = false; - public static final Pattern pattern = Pattern.compile("v(\\d+)\\.(\\d+)\\.(\\d+)"); - public static final Pattern localPattern = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)"); + public static final Pattern pattern = Pattern.compile("v(.*)\\+.*"); + public static final Pattern localPattern = Pattern.compile("(.*)\\+.*"); public static Matcher matcher; - public static VersionNumber localVersion = null; - public static VersionNumber latestVersion = null; - public static boolean shouldUpdate(){ - if (SkyblockerConfig.get().general.enableUpdateNotification){ - new Thread(() -> { - try{ - URL url = new URL("https://api.modrinth.com/v2/project/skyblocker-liap/version"); + private static VersionNumber latestVersion = null; + private static VersionNumber localVersion = null; + public static void shouldUpdate(){ + if (!SkyblockerConfig.get().general.enableUpdateNotification) return; + try { + URI uri = new URI("https://api.modrinth.com/v2/project/skyblocker-liap/version"); + HttpRequest request = HttpRequest.newBuilder(uri).GET().build(); + CompletableFuture<HttpResponse<String>> response = HttpClient.newHttpClient().sendAsync(request, HttpResponse.BodyHandlers.ofString()); + response.thenAccept(httpResponse -> { + JsonObject versionJson = new Gson().fromJson(httpResponse.body(), JsonElement.class).getAsJsonArray().get(0).getAsJsonObject(); + matcher = pattern.matcher(versionJson.get("version_number").getAsString()); + if (matcher.find()) { + latestVersion = VersionNumber.parse(matcher.group(1)); + } + matcher = localPattern.matcher(FabricLoader.getInstance().getModContainer(SkyblockerMod.NAMESPACE).get().getMetadata().getVersion().getFriendlyString()); + if (matcher.find()) { + localVersion = VersionNumber.parse(matcher.group(1)); + } + if (latestVersion != null && localVersion != null) { + if (localVersion.compareTo(latestVersion) < 0) { + MutableText linkMessage = Text.translatable("skyblocker.update.update_message"); + MutableText linkMessageEnding = Text.translatable("skyblocker.update.update_message_end"); + MutableText link = Text.translatable("skyblocker.update.update_link"); + MutableText hoverText = Text.translatable("skyblocker.update.hover_text"); + linkMessage.append(link.styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://modrinth.com/mod/skyblocker-liap/versions")).withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverText)))).append(linkMessageEnding); - InputStreamReader reader = new InputStreamReader(url.openStream()); - JsonObject versionJson = new Gson().fromJson(reader, JsonElement.class).getAsJsonArray().get(0).getAsJsonObject(); - matcher = pattern.matcher(versionJson.get("version_number").getAsString()); - if (matcher.find()){ - latestVersion = VersionNumber.parse(matcher.group(1) + "." + matcher.group(2) + "." + matcher.group(3)); - } - matcher = localPattern.matcher(FabricLoader.getInstance().getModContainer(SkyblockerMod.NAMESPACE).get().getMetadata().getVersion().getFriendlyString()); - if (matcher.find()){ - localVersion = VersionNumber.parse(matcher.group(1) + "." + matcher.group(2) + "." + matcher.group(3)); + MinecraftClient.getInstance().player.sendMessage(linkMessage, false); } - if (localVersion != null && latestVersion != null) - if (localVersion.compareTo(latestVersion) < 0) shouldUpdate = true; - - } catch (IOException e) { - e.printStackTrace(); } - }).start(); + }); + } catch (URISyntaxException e) { + e.printStackTrace(); } - return shouldUpdate; } public static void init(){ - SkyblockEvents.JOIN.register(() -> { - if (shouldUpdate()) { - MutableText linkMessage = Text.translatable("skyblocker.update.update_message"); - MutableText linkMessageEnding = Text.translatable("skyblocker.update.update_message_end"); - MutableText link = Text.translatable("skyblocker.update.update_link"); - MutableText hoverText = Text.translatable("skyblocker.update.hover_text"); - linkMessage.append(link.styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://modrinth.com/mod/skyblocker-liap/versions")).withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverText)))).append(linkMessageEnding); - - MinecraftClient.getInstance().player.sendMessage(linkMessage, false); - } - }); + SkyblockEvents.JOIN.register(UpdateChecker::shouldUpdate); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java index d9389b58..532de0dd 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java @@ -31,18 +31,19 @@ public class Utils { String string = sidebar.toString(); if (sidebar.isEmpty()) return; - if (sidebar.get(0).contains("SKYBLOCK") && !isOnSkyblock) { - if (!isInjected) { - isInjected = true; - ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip); + if (sidebar.get(0).contains("SKYBLOCK") || sidebar.get(0).contains("SKIBLOCK")) { + if (!isOnSkyblock) { + if (!isInjected) { + isInjected = true; + ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip); + } + SkyblockEvents.JOIN.invoker().onSkyblockJoin(); + isOnSkyblock = true; } - SkyblockEvents.JOIN.invoker().onSkyblockJoin(); - isOnSkyblock = true; - } - if (!sidebar.get(0).contains("SKYBLOCK") && isOnSkyblock) { + } else if (isOnSkyblock) { SkyblockEvents.LEAVE.invoker().onSkyblockLeave(); - Utils.isOnSkyblock = false; - Utils.isInDungeons = false; + isOnSkyblock = false; + isInDungeons = false; } isInDungeons = isOnSkyblock && string.contains("The Catacombs"); } |