aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2023-04-03 17:05:44 -0400
committerGitHub <noreply@github.com>2023-04-03 17:05:44 -0400
commit4f5194cc9d79eccf4d8e2d207f2a231241763e21 (patch)
tree0e8e1dea021028d8b0a859fdf29843db1ac5f29f /src
parenta6c0dc7cb98882a0d815664d2f54dda4e8ab288a (diff)
parent38352b7ed91d988d7155e97a668fa01db7749b85 (diff)
downloadSkyblocker-4f5194cc9d79eccf4d8e2d207f2a231241763e21.tar.gz
Skyblocker-4f5194cc9d79eccf4d8e2d207f2a231241763e21.tar.bz2
Skyblocker-4f5194cc9d79eccf4d8e2d207f2a231241763e21.zip
Merge branch 'SkyblockerMod:master' into dungeon-map-scale-adjustment
Diffstat (limited to 'src')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java3
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java8
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java49
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java87
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);
}
}