diff options
Diffstat (limited to 'src/main')
5 files changed, 83 insertions, 27 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java index be0bb0dd..b60ae4d1 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java @@ -7,6 +7,7 @@ import me.xmrvizzy.skyblocker.skyblock.api.StatsCommand; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; +import me.xmrvizzy.skyblocker.utils.UpdateChecker; import net.fabricmc.api.ClientModInitializer; public class SkyblockerInitializer implements ClientModInitializer { @@ -19,5 +20,7 @@ public class SkyblockerInitializer implements ClientModInitializer { ItemRegistry.init(); StatsCommand.init(); ChatMessageListener.init(); + UpdateChecker.init(); + SkyblockerMod.getInstance().discordRPCManager.init(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java index e13dfd09..867e16b2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java @@ -7,6 +7,7 @@ import com.jagrosh.discordipc.entities.RichPresence; import com.jagrosh.discordipc.entities.pipe.PipeStatus; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.Utils; +import me.xmrvizzy.skyblocker.utils.SkyblockEvents; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -98,4 +99,8 @@ public class DiscordRPCManager implements IPCListener{ isConnected = false; } + public void init(){ + SkyblockEvents.LEAVE.register(this::stop); + } + } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/SkyblockEvents.java b/src/main/java/me/xmrvizzy/skyblocker/utils/SkyblockEvents.java new file mode 100644 index 00000000..2dd83ffa --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/SkyblockEvents.java @@ -0,0 +1,33 @@ +package me.xmrvizzy.skyblocker.utils; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.event.Event; +import net.fabricmc.fabric.api.event.EventFactory; + +@Environment(EnvType.CLIENT) +public final class SkyblockEvents { + public static final Event<SkyblockEvents.SkyblockJoin> JOIN = EventFactory.createArrayBacked(SkyblockEvents.SkyblockJoin.class, callbacks -> () -> { + for (SkyblockEvents.SkyblockJoin callback : callbacks) { + callback.onSkyblockJoin(); + } + }); + + public static final Event<SkyblockEvents.SkyblockLeave> LEAVE = EventFactory.createArrayBacked(SkyblockEvents.SkyblockLeave.class, callbacks -> () -> { + for (SkyblockEvents.SkyblockLeave callback : callbacks) { + callback.onSkyblockLeave(); + } + }); + + @Environment(EnvType.CLIENT) + @FunctionalInterface + public interface SkyblockJoin { + void onSkyblockJoin(); + } + + @Environment(EnvType.CLIENT) + @FunctionalInterface + public interface SkyblockLeave { + void onSkyblockLeave(); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java b/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java index fd43d8e3..8909b5a9 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java @@ -4,15 +4,15 @@ import com.google.gson.*; 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.ClickEvent; +import net.minecraft.text.HoverEvent; +import net.minecraft.text.TranslatableText; 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; @@ -25,31 +25,42 @@ public class UpdateChecker { 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"); + new Thread(() -> { + 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(); + 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; } + + public static void init(){ + SkyblockEvents.JOIN.register(() -> { + if (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); + + MinecraftClient.getInstance().player.sendMessage(linkMessage, false); + } + }); + } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java index 66d04b50..4551564d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java @@ -34,10 +34,14 @@ public class Utils { isInjected = true; ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip); } - Events.onSkyblockJoin(); - + SkyblockEvents.JOIN.invoker().onSkyblockJoin(); + isOnSkyblock = true; + } + if (!sidebar.get(0).contains("SKYBLOCK") && isOnSkyblock) { + SkyblockEvents.LEAVE.invoker().onSkyblockLeave(); + Utils.isOnSkyblock = false; + Utils.isInDungeons = false; } - if (!sidebar.get(0).contains("SKYBLOCK") && isOnSkyblock) Events.onSkyblockDisconnect(); isInDungeons = isOnSkyblock && string.contains("The Catacombs"); } |