diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2023-04-03 17:05:44 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-03 17:05:44 -0400 |
commit | 4f5194cc9d79eccf4d8e2d207f2a231241763e21 (patch) | |
tree | 0e8e1dea021028d8b0a859fdf29843db1ac5f29f /src | |
parent | a6c0dc7cb98882a0d815664d2f54dda4e8ab288a (diff) | |
parent | 38352b7ed91d988d7155e97a668fa01db7749b85 (diff) | |
download | Skyblocker-4f5194cc9d79eccf4d8e2d207f2a231241763e21.tar.gz Skyblocker-4f5194cc9d79eccf4d8e2d207f2a231241763e21.tar.bz2 Skyblocker-4f5194cc9d79eccf4d8e2d207f2a231241763e21.zip |
Merge branch 'SkyblockerMod:master' into dungeon-map-scale-adjustment
Diffstat (limited to 'src')
4 files changed, 74 insertions, 73 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index 8cd71770..f804d90e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -15,12 +15,11 @@ public class SkyblockerMod { public final Scheduler scheduler = new Scheduler(); public final ContainerSolverManager containerSolverManager = new ContainerSolverManager(); - public final DiscordRPCManager discordRPCManager = new DiscordRPCManager(); public final StatusBarTracker statusBarTracker = new StatusBarTracker(); private SkyblockerMod() { scheduler.scheduleCyclic(Utils::sbChecker, 20); - scheduler.scheduleCyclic(discordRPCManager::update, 100); + scheduler.scheduleCyclic(DiscordRPCManager::update, 100); scheduler.scheduleCyclic(DungeonBlaze::update, 4); scheduler.scheduleCyclic(BackpackPreview::tick, 50); scheduler.scheduleCyclic(DwarvenHud::update, 40); diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 6439c32e..253b69cb 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -1,8 +1,5 @@ package me.xmrvizzy.skyblocker.config; -import java.util.ArrayList; -import java.util.List; - import me.shedaniel.autoconfig.AutoConfig; import me.shedaniel.autoconfig.ConfigData; import me.shedaniel.autoconfig.annotation.Config; @@ -10,6 +7,9 @@ import me.shedaniel.autoconfig.annotation.ConfigEntry; import me.shedaniel.autoconfig.serializer.GsonConfigSerializer; import me.xmrvizzy.skyblocker.chat.ChatFilterResult; +import java.util.ArrayList; +import java.util.List; + @Config(name = "skyblocker") public class SkyblockerConfig implements ConfigData { @@ -205,7 +205,7 @@ public class SkyblockerConfig implements ConfigData { @ConfigEntry.Gui.Tooltip() public Info info = Info.LOCATION; public boolean cycleMode = false; - public String customMessage; + public String customMessage = "Playing Skyblock"; } public static class ItemList { diff --git a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java index 87405989..10b88ce8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java @@ -11,52 +11,51 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.text.DecimalFormat; -import java.time.Instant; public class DiscordRPCManager { public static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("###,###.##"); - public static final Logger LOGGER = LoggerFactory.getLogger(DiscordRPCManager.class.getName()); + public static final Logger LOGGER = LoggerFactory.getLogger("Skyblocker Discord RPC"); public static long startTimeStamp; public static int cycleCount; public static void init(){ SkyblockEvents.LEAVE.register(DiscordIPC::stop); + SkyblockEvents.JOIN.register(() -> { + startTimeStamp = System.currentTimeMillis(); + if (DiscordIPC.start(934607927837356052L, null)) { + DiscordIPC.setActivity(buildPresence()); + LOGGER.info("Discord RPC started"); + } else { + LOGGER.error("Discord RPC failed to start"); + } + }); } - public void update(){ - if (SkyblockerConfig.get().richPresence.customMessage != null ) { - if (SkyblockerConfig.get().richPresence.customMessage.isBlank()) { - SkyblockerConfig.get().richPresence.customMessage = "All on Fabric!"; - AutoConfig.getConfigHolder(SkyblockerConfig.class).save(); - } + public static void update(){ + // If the custom message is empty, discord will keep the last message, this is can serve as a default if the user doesn't want a custom message + if (SkyblockerConfig.get().richPresence.customMessage.isEmpty()) { + SkyblockerConfig.get().richPresence.customMessage = "Playing Skyblock"; + AutoConfig.getConfigHolder(SkyblockerConfig.class).save(); } - if (!SkyblockerConfig.get().richPresence.enableRichPresence || !Utils.isOnSkyblock){ - if (DiscordIPC.isConnected()) DiscordIPC.stop(); - } - if (SkyblockerConfig.get().richPresence.enableRichPresence && Utils.isOnSkyblock && !DiscordIPC.isConnected()){ - if (!DiscordIPC.start(934607927837356052L, () -> { - LOGGER.info("Started up rich presence"); - startTimeStamp = Instant.now().getEpochSecond(); - })){ - LOGGER.info("An error occurred while attempting to connect to discord"); - return; - } + if ((!Utils.isOnSkyblock || !SkyblockerConfig.get().richPresence.enableRichPresence) && DiscordIPC.isConnected()){ + DiscordIPC.stop(); + LOGGER.info("Discord RPC stopped"); + return; } - if (SkyblockerConfig.get().richPresence.cycleMode) - cycleCount = (cycleCount + 1) % 3; - buildPresence(); + if (SkyblockerConfig.get().richPresence.cycleMode) cycleCount = (cycleCount + 1) % 3; + DiscordIPC.setActivity(buildPresence()); } - public void buildPresence(){ + public static RichPresence buildPresence(){ RichPresence presence = new RichPresence(); presence.setLargeImage("skyblocker-default", null); presence.setStart(startTimeStamp); presence.setDetails(SkyblockerConfig.get().richPresence.customMessage); presence.setState(getInfo()); - DiscordIPC.setActivity(presence); + return presence; } - public String getInfo(){ + public static String getInfo(){ String info = null; if (!SkyblockerConfig.get().richPresence.cycleMode){ switch (SkyblockerConfig.get().richPresence.info){ 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); } } |