aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
authorExternalTime <84183548+ExternalTime@users.noreply.github.com>2022-02-19 00:05:13 +0100
committerGitHub <noreply@github.com>2022-02-19 00:05:13 +0100
commit71dda851798d908c08c0265449a9954f5fa5319f (patch)
tree1cfb6e4393265de0b0b7e96a250ac9e65ef9e0c6 /src/main/java/me
parentdeccbf3fd4d14577effd5d58180e45ee7d64d079 (diff)
parent885facdc27632c8c93279dce91ba75ce60771ba7 (diff)
downloadSkyblocker-71dda851798d908c08c0265449a9954f5fa5319f.tar.gz
Skyblocker-71dda851798d908c08c0265449a9954f5fa5319f.tar.bz2
Skyblocker-71dda851798d908c08c0265449a9954f5fa5319f.zip
Merge pull request #36 from TacoMonkey11/master
Added Update Notification
Diffstat (limited to 'src/main/java/me')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java8
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java7
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java3
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java14
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java3
-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
17 files changed, 155 insertions, 48 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
index db702e81..e33e9c2d 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
@@ -32,7 +32,7 @@ public class SkyblockerMod {
if(onHypxiel()) {
if (ticks % 4 == 0)
try {
- if (Utils.isDungeons) {
+ if (Utils.isInDungeons) {
DungeonBlaze.DungeonBlaze();
}
} catch (Exception e) {
@@ -41,10 +41,10 @@ public class SkyblockerMod {
if (ticks % 20 == 0) {
rpTimer++;
if (rpTimer == 5) {
- if (discordRPCManager.isConnected && Utils.isSkyblock && SkyblockerConfig.get().richPresence.enableRichPresence) {
+ if (discordRPCManager.isConnected && Utils.isOnSkyblock && SkyblockerConfig.get().richPresence.enableRichPresence) {
discordRPCManager.updatePresence();
}
- if (discordRPCManager.isConnected && Utils.isSkyblock && SkyblockerConfig.get().richPresence.cycleMode) {
+ if (discordRPCManager.isConnected && Utils.isOnSkyblock && SkyblockerConfig.get().richPresence.cycleMode) {
discordRPCManager.cycleCount++;
if (discordRPCManager.cycleCount == 3) discordRPCManager.cycleCount = 0;
}
@@ -52,7 +52,7 @@ public class SkyblockerMod {
}
if (client.world != null && !client.isInSingleplayer())
Utils.sbChecker();
- if (!discordRPCManager.isConnected && Utils.isSkyblock && SkyblockerConfig.get().richPresence.enableRichPresence)
+ if (!discordRPCManager.isConnected && Utils.isOnSkyblock && SkyblockerConfig.get().richPresence.enableRichPresence)
discordRPCManager.start();
if (discordRPCManager.isConnected && !SkyblockerConfig.get().richPresence.enableRichPresence)
discordRPCManager.stop();
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index 9471620b..ad511ff2 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -42,6 +42,8 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Gui.CollapsibleObject(startExpanded = true)
public Quicknav quicknav = new Quicknav();
+ public boolean enableUpdateNotification = true;
+
@ConfigEntry.Gui.Excluded
public List<Integer> lockedSlots = new ArrayList<>();
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
index 43103159..9170f1db 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
@@ -1,20 +1,15 @@
package me.xmrvizzy.skyblocker.mixin;
import me.xmrvizzy.skyblocker.chat.ChatParser;
-import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.utils.Utils;
-import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.hud.ChatHudListener;
-import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.network.MessageType;
-import net.minecraft.text.ClickEvent;
import net.minecraft.text.Text;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import java.util.List;
import java.util.UUID;
@Mixin(ChatHudListener.class)
@@ -24,7 +19,7 @@ public class ChatHudListenerMixin {
@Inject(method = "onChatMessage", at = @At("HEAD"), cancellable = true)
public void onMessage(MessageType messageType, Text message, UUID senderUuid, CallbackInfo ci) {
- if (!Utils.isSkyblock)
+ if (!Utils.isOnSkyblock)
return;
if (parser.shouldFilter(message.getString()))
ci.cancel();
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java
index 5825b394..160c8078 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java
@@ -29,6 +29,6 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity
@Inject(method = "dropSelectedItem", at = @At("HEAD"), cancellable = true)
public void dropSelectedItem(boolean dropEntireStack, CallbackInfoReturnable<Boolean> cir) {
- if (Utils.isSkyblock) HotbarSlotLock.handleDropSelectedItem(this.getInventory().selectedSlot, cir);
+ if (Utils.isOnSkyblock) HotbarSlotLock.handleDropSelectedItem(this.getInventory().selectedSlot, cir);
}
} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java
index 3e6bf16a..d63d17b8 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java
@@ -25,7 +25,7 @@ public abstract class GenericContainerScreenMixin extends HandledScreen<GenericC
@Override
protected void drawForeground(MatrixStack matrices, int mouseX, int mouseY) {
super.drawForeground(matrices, mouseX, mouseY);
- if (Utils.isSkyblock)
+ if (Utils.isOnSkyblock)
SkyblockerMod.getInstance().containerSolverManager.onDraw(matrices, this.handler.slots.subList(0, rows * 9));
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java
index d676dc25..06b74549 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java
@@ -2,7 +2,6 @@ package me.xmrvizzy.skyblocker.mixin;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup;
-import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemListWidget;
import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNav;
import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNavButton;
import me.xmrvizzy.skyblocker.utils.Utils;
@@ -35,7 +34,7 @@ public abstract class HandledScreenMixin extends Screen {
@Inject(method = "init()V", at = @At("TAIL"))
private void init(CallbackInfo ci) {
// quicknav
- if (Utils.isSkyblock && SkyblockerConfig.get().general.quicknav.enableQuicknav) {
+ if (Utils.isOnSkyblock && SkyblockerConfig.get().general.quicknav.enableQuicknav) {
String screenTitle = super.getTitle().getString().trim();
List<QuickNavButton> buttons = QuickNav.init(screenTitle);
for (QuickNavButton button : buttons) super.addDrawableChild(button);
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java
index 2653aeef..19e0d79e 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java
@@ -43,7 +43,7 @@ public abstract class InGameHudMixin extends DrawableHelper {
@Inject(method = "setOverlayMessage(Lnet/minecraft/text/Text;Z)V", at = @At("HEAD"), cancellable = true)
private void onSetOverlayMessage(Text message, boolean tinted, CallbackInfo ci) {
- if(!Utils.isSkyblock)
+ if(!Utils.isOnSkyblock)
return;
String msg = message.getString();
if(statusBars.update(msg))
@@ -52,7 +52,7 @@ public abstract class InGameHudMixin extends DrawableHelper {
@Inject(method = "renderHotbar", at = @At("HEAD"))
public void renderHotbar(float f, MatrixStack matrices, CallbackInfo ci) {
- if (Utils.isSkyblock) {
+ if (Utils.isOnSkyblock) {
hotbarMatrices = matrices;
hotbarSlotIndex = 0;
}
@@ -60,7 +60,7 @@ public abstract class InGameHudMixin extends DrawableHelper {
@Inject(method = "renderHotbarItem", at = @At("HEAD"))
public void renderHotbarItem(int i, int j, float f, PlayerEntity player, ItemStack stack, int seed, CallbackInfo ci) {
- if (Utils.isSkyblock) {
+ if (Utils.isOnSkyblock) {
if (HotbarSlotLock.isLocked(hotbarSlotIndex)) {
RenderSystem.setShaderTexture(0,SLOT_LOCK);
this.drawTexture(hotbarMatrices, i, j, 0, 0,16, 16);
@@ -71,18 +71,18 @@ public abstract class InGameHudMixin extends DrawableHelper {
@Inject(method = "renderExperienceBar", at = @At("HEAD"), cancellable = true)
private void renderExperienceBar(MatrixStack matrices, int x, CallbackInfo ci) {
- if (Utils.isSkyblock && SkyblockerConfig.get().general.bars.enableBars)
+ if (Utils.isOnSkyblock && SkyblockerConfig.get().general.bars.enableBars)
ci.cancel();
}
@Inject(method = "renderStatusBars", at = @At("HEAD"), cancellable = true)
private void renderStatusBars(MatrixStack matrices, CallbackInfo ci) {
- if(!Utils.isSkyblock)
+ if(!Utils.isOnSkyblock)
return;
if(statusBars.render(matrices, scaledWidth, scaledHeight))
ci.cancel();
- if (Utils.isDungeons && SkyblockerConfig.get().locations.dungeons.enableMap)
+ if (Utils.isInDungeons && SkyblockerConfig.get().locations.dungeons.enableMap)
DungeonMap.render(matrices);
RenderSystem.setShaderTexture(0, GUI_ICONS_TEXTURE);
@@ -90,7 +90,7 @@ public abstract class InGameHudMixin extends DrawableHelper {
@Inject(method = "renderMountHealth", at = @At("HEAD"), cancellable = true)
private void renderMountHealth(MatrixStack matrices, CallbackInfo ci) {
- if (Utils.isSkyblock && SkyblockerConfig.get().general.bars.enableBars)
+ if (Utils.isOnSkyblock && SkyblockerConfig.get().general.bars.enableBars)
ci.cancel();
}
} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java
index fcdbf706..4bff2779 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java
@@ -19,7 +19,7 @@ public class InventoryScreenMixin {
)
)
RecipeBookWidget constructor() {
- if (Utils.isSkyblock && SkyblockerConfig.get().general.itemList.enableItemList)
+ if (Utils.isOnSkyblock && SkyblockerConfig.get().general.itemList.enableItemList)
return new ItemListWidget();
else
return new RecipeBookWidget();
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java
index 002497ce..395027bc 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java
@@ -28,7 +28,7 @@ public abstract class ItemRendererMixin {
@Inject(method = "renderGuiItemOverlay(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD"))
public void renderItemBar(TextRenderer renderer, ItemStack stack, int x, int y, @Nullable String countLabel, CallbackInfo ci) {
- if (Utils.isSkyblock && SkyblockerConfig.get().locations.dwarvenMines.enableDrillFuel) {
+ if (Utils.isOnSkyblock && SkyblockerConfig.get().locations.dwarvenMines.enableDrillFuel) {
if (!stack.isEmpty()) {
NbtCompound tag = stack.getNbt();
if (tag != null && tag.contains("ExtraAttributes")) {
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java
index f1c6661d..c3ff287e 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java
@@ -22,7 +22,7 @@ public abstract class LeverBlockMixin extends WallMountedBlock {
@Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true)
public void onGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable<VoxelShape> cir) {
- if (Utils.isSkyblock) {
+ if (Utils.isOnSkyblock) {
VoxelShape shape = OldLever.getShape(state.get(FACE), state.get(FACING));
if (shape != null)
cir.setReturnValue(shape);
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java
index 21730e69..6561eb5b 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java
@@ -27,13 +27,13 @@ public class MinecraftClientMixin {
@Inject(method = "handleInputEvents", at = @At("HEAD"))
public void handleInputEvents(CallbackInfo ci) {
- if (Utils.isSkyblock) HotbarSlotLock.handleInputEvents(player);
+ if (Utils.isOnSkyblock) HotbarSlotLock.handleInputEvents(player);
}
@Inject(method = "setScreen", at = @At("HEAD"))
public void onSetScreen(Screen screen, CallbackInfo ci) {
ContainerSolverManager manager = SkyblockerMod.getInstance().containerSolverManager;
- if(Utils.isSkyblock && screen instanceof GenericContainerScreen)
+ if(Utils.isOnSkyblock && screen instanceof GenericContainerScreen)
manager.onSetScreen((GenericContainerScreen) screen);
else
manager.clearScreen();
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
index 69278023..d4dd7fb0 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
@@ -23,7 +23,7 @@ public class Reparty extends ChatListener {
repartying = false;
ClientCommandManager.DISPATCHER.register(
ClientCommandManager.literal("rp").executes(context -> {
- if (!Utils.isSkyblock || repartying)
+ if (!Utils.isOnSkyblock || repartying)
return 0;
assert client.player != null;
repartying = true;
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java
index a0788126..4e5e7f32 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java
@@ -5,7 +5,6 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import me.xmrvizzy.skyblocker.utils.Utils;
-import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.option.KeyBinding;
@@ -49,7 +48,7 @@ public class WikiLookup {
}
public static void openWiki(Slot slot){
- if (Utils.isSkyblock){
+ if (Utils.isOnSkyblock){
id = getSkyblockId(slot);
try {
//Setting up a connection with the repo
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;