aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/utils')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Events.java34
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/ToastBuilder.java34
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java55
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java27
4 files changed, 131 insertions, 19 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Events.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Events.java
new file mode 100644
index 00000000..e3aa4da4
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Events.java
@@ -0,0 +1,34 @@
+package me.xmrvizzy.skyblocker.utils;
+
+import me.xmrvizzy.skyblocker.SkyblockerMod;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.text.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Events {
+ public static MinecraftClient client = MinecraftClient.getInstance();
+ public static Logger logger = LoggerFactory.getLogger(SkyblockerMod.NAMESPACE);
+
+ public static void onSkyblockJoin(){
+ Utils.isOnSkyblock = true;
+ logger.info("Joined Skyblock");
+ if (UpdateChecker.shouldUpdate()){
+ TranslatableText linkMessage = new TranslatableText("skyblocker.update.update_message");
+ TranslatableText linkMessageEnding = new TranslatableText("skyblocker.update.update_message_end");
+ TranslatableText link = new TranslatableText("skyblocker.update.update_link");
+ TranslatableText hoverText = new TranslatableText("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);
+
+ client.player.sendMessage(linkMessage, false);
+ }
+ }
+
+ public static void onSkyblockDisconnect(){
+ logger.info("Disconnected from Skyblock");
+ SkyblockerMod.getInstance().discordRPCManager.stop();
+ Utils.isOnSkyblock = false;
+ Utils.isInDungeons = false;
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/ToastBuilder.java b/src/main/java/me/xmrvizzy/skyblocker/utils/ToastBuilder.java
new file mode 100644
index 00000000..910c8a6c
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/ToastBuilder.java
@@ -0,0 +1,34 @@
+package me.xmrvizzy.skyblocker.utils;
+
+import com.mojang.blaze3d.systems.RenderSystem;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.render.GameRenderer;
+import net.minecraft.client.toast.Toast;
+import net.minecraft.client.toast.ToastManager;
+import net.minecraft.client.util.math.MatrixStack;
+import net.minecraft.text.Text;
+
+@Environment(value= EnvType.CLIENT)
+public class ToastBuilder implements Toast {
+ private final Text title;
+ private final Text description;
+
+ public ToastBuilder(Text title, Text description) {
+ this.title = title;
+ this.description = description;
+ }
+
+ @Override
+ public Toast.Visibility draw(MatrixStack matrices, ToastManager manager, long startTime) {
+ RenderSystem.setShader(GameRenderer::getPositionTexShader);
+ RenderSystem.setShaderTexture(0, TEXTURE);
+ RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
+
+ manager.drawTexture(matrices, 0, 0, 0, 0, this.getWidth(), this.getHeight());
+ manager.getClient().textRenderer.draw(matrices, title, 7.0f, 7.0f, -11534256);
+ manager.getClient().textRenderer.draw(matrices, description, 7.0f, 18.0f, -16777216);
+ return startTime >= 3000L ? Toast.Visibility.HIDE : Toast.Visibility.SHOW;
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java b/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java
new file mode 100644
index 00000000..fd43d8e3
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java
@@ -0,0 +1,55 @@
+package me.xmrvizzy.skyblocker.utils;
+
+import com.google.gson.*;
+import me.xmrvizzy.skyblocker.SkyblockerMod;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import net.fabricmc.loader.api.FabricLoader;
+import org.spongepowered.asm.util.VersionNumber;
+
+import javax.net.ssl.HttpsURLConnection;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class UpdateChecker {
+ public static boolean shouldUpdate = false;
+ public static Pattern pattern = Pattern.compile("v(\\d+)\\.(\\d+)\\.(\\d+)");
+ public static Pattern localPattern = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)");
+ 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(new Runnable() {
+ @Override
+ public void run() {
+ try{
+ URL url = new URL("https://api.modrinth.com/v2/project/skyblocker-liap/version");
+
+ 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));
+ }
+ if (localVersion != null && latestVersion != null)
+ if (localVersion.compareTo(latestVersion) < 0) shouldUpdate = true;
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }).start();
+ }
+ return shouldUpdate;
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
index a4736242..e3623bb4 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
@@ -1,7 +1,5 @@
package me.xmrvizzy.skyblocker.utils;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip;
import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback;
import net.minecraft.client.MinecraftClient;
@@ -12,44 +10,35 @@ import net.minecraft.scoreboard.Team;
import net.minecraft.util.Formatting;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.stream.Collectors;
public class Utils {
- public static boolean isSkyblock = false;
- public static boolean isDungeons = false;
+ public static boolean isOnSkyblock = false;
+ public static boolean isInDungeons = false;
public static boolean isInjected = false;
public static void sbChecker() {
List<String> sidebar = getSidebar();
if (sidebar == null) {
- isSkyblock = false;
- isDungeons = false;
+ isOnSkyblock = false;
+ isInDungeons = false;
return;
}
String string = sidebar.toString();
if (sidebar.isEmpty()) return;
- if (sidebar.get(sidebar.size() - 1).equals("www.hypixel.net")) {
- if (sidebar.get(0).contains("SKYBLOCK")){
+ if (sidebar.get(0).contains("SKYBLOCK") && !isOnSkyblock){
if(!isInjected){
isInjected = true;
ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip);
}
- isSkyblock = true;
+ Events.onSkyblockJoin();
}
- else isSkyblock = false;
-
- isDungeons = isSkyblock && string.contains("The Catacombs");
-
- } else {
- isSkyblock = false;
- isDungeons = false;
+ if (!sidebar.get(0).contains("SKYBLOCK") && isOnSkyblock) Events.onSkyblockDisconnect();
+ isInDungeons = isOnSkyblock && string.contains("The Catacombs");
}
- }
public static String getLocation() {
String location = null;