diff --git a/common/src/main/java/com/ultreon/devices/api/utils/OnlineRequest.java b/common/src/main/java/com/ultreon/devices/api/utils/OnlineRequest.java index 7924e5487..88cd1311b 100644 --- a/common/src/main/java/com/ultreon/devices/api/utils/OnlineRequest.java +++ b/common/src/main/java/com/ultreon/devices/api/utils/OnlineRequest.java @@ -1,5 +1,6 @@ package com.ultreon.devices.api.utils; +import com.ultreon.devices.core.Laptop; import com.ultreon.devices.util.StreamUtils; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; @@ -121,6 +122,10 @@ public void run() { while (!requests.isEmpty()) { RequestWrapper wrapper = requests.poll(); + if (Laptop.isOffline()) { + wrapper.handler.handle(false, "Disconnected from the internet."); + return; + } try { URL url = new URL(wrapper.url); checkURLForSuspicions(url); diff --git a/common/src/main/java/com/ultreon/devices/core/Laptop.java b/common/src/main/java/com/ultreon/devices/core/Laptop.java index 9c9c04e5c..b3da7d2c7 100644 --- a/common/src/main/java/com/ultreon/devices/core/Laptop.java +++ b/common/src/main/java/com/ultreon/devices/core/Laptop.java @@ -75,6 +75,8 @@ public class Laptop extends Screen implements System { private static Laptop instance; private Double dragWindowFromX; private Double dragWindowFromY; + @Nullable + private final LaptopBlockEntity blockEntity; @PlatformOnly("fabric") public static List getApplicationsForFabric() { @@ -184,12 +186,27 @@ public boolean add(Window window) { // World-less flag. Laptop.worldLess = worldLess; + this.blockEntity = laptop; } public static Laptop getInstance() { return instance; } + public static boolean isOffline() { + Laptop laptop = instance; + if (laptop == null) { + return false; + } + + LaptopBlockEntity blockEntity = laptop.blockEntity; + if (blockEntity == null) { + return false; + } + + return blockEntity.getConnection() == null; + } + public CompoundTag getModSystemTag(Mod mod) { return getModSystemTag(mod.getModId()); }