diff options
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/utils')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java | 12 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/utils/events/SkyblockLeaveCallback.java | 21 |
2 files changed, 30 insertions, 3 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java index 66d04b50..045da7fe 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java @@ -1,6 +1,8 @@ package me.xmrvizzy.skyblocker.utils; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; +import me.xmrvizzy.skyblocker.utils.events.SkyblockJoinCallback; +import me.xmrvizzy.skyblocker.utils.events.SkyblockLeaveCallback; import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback; import net.minecraft.client.MinecraftClient; import net.minecraft.scoreboard.Scoreboard; @@ -34,10 +36,14 @@ public class Utils { isInjected = true; ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip); } - Events.onSkyblockJoin(); - + SkyblockJoinCallback.EVENT.invoker().join(); + isOnSkyblock = true; + } + if (!sidebar.get(0).contains("SKYBLOCK") && isOnSkyblock) { + SkyblockLeaveCallback.EVENT.invoker().leave(); + Utils.isOnSkyblock = false; + Utils.isInDungeons = false; } - if (!sidebar.get(0).contains("SKYBLOCK") && isOnSkyblock) Events.onSkyblockDisconnect(); isInDungeons = isOnSkyblock && string.contains("The Catacombs"); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/events/SkyblockLeaveCallback.java b/src/main/java/me/xmrvizzy/skyblocker/utils/events/SkyblockLeaveCallback.java new file mode 100644 index 00000000..c02ddba4 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/events/SkyblockLeaveCallback.java @@ -0,0 +1,21 @@ +package me.xmrvizzy.skyblocker.utils.events; + +import net.fabricmc.fabric.api.event.Event; +import net.fabricmc.fabric.api.event.EventFactory; +import net.minecraft.util.ActionResult; + +public interface SkyblockLeaveCallback { + Event<SkyblockLeaveCallback> EVENT = EventFactory.createArrayBacked(SkyblockLeaveCallback.class, + (listeners) -> () -> { + for (SkyblockLeaveCallback listener : listeners) { + ActionResult result = listener.leave(); + + if(result != ActionResult.PASS) { + return result; + } + } + return ActionResult.PASS; + }); + + ActionResult leave(); +} |