diff options
author | Yasin <LifeIsAParadox@users.noreply.github.com> | 2022-05-03 13:43:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-03 13:43:59 +0200 |
commit | 50566cf7e402094f84ddef998f815ff7a37559db (patch) | |
tree | 8347293277020ae4a9a3ca7617515df7ef052472 /src/main | |
parent | 84c72d8306c433bb73eea9b6e3466f6e8c8e746b (diff) | |
parent | 9a1eebebd9ce9b7b04991fe1940bcad78f509f0b (diff) | |
download | Skyblocker-50566cf7e402094f84ddef998f815ff7a37559db.tar.gz Skyblocker-50566cf7e402094f84ddef998f815ff7a37559db.tar.bz2 Skyblocker-50566cf7e402094f84ddef998f815ff7a37559db.zip |
Merge pull request #66 from TacoMonkey11/fabricapi-events
Replace bootleg events with fabric api events
Diffstat (limited to 'src/main')
6 files changed, 83 insertions, 62 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java index a15b3a96..e9af52f6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java @@ -8,6 +8,7 @@ import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud; 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 { @@ -21,5 +22,7 @@ public class SkyblockerInitializer implements ClientModInitializer { StatsCommand.init(); DwarvenHud.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/Events.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Events.java deleted file mode 100644 index 9c488f34..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Events.java +++ /dev/null @@ -1,35 +0,0 @@ -package me.xmrvizzy.skyblocker.utils; - -import me.xmrvizzy.skyblocker.SkyblockerMod; -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("[Skyblocker] 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); - - if (client.player != null) { - client.player.sendMessage(linkMessage, false); - } - } - } - - public static void onSkyblockDisconnect(){ - LOGGER.info("[Skyblocker] Disconnected from Skyblock"); - SkyblockerMod.getInstance().discordRPCManager.stop(); - Utils.isOnSkyblock = false; - Utils.isInDungeons = false; - } -} 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 5894c9df..46f3a7e1 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java @@ -35,10 +35,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"); } |