aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
authormsg-programs <msgdoesstuff@gmail.com>2023-08-15 21:32:50 +0200
committermsg-programs <msgdoesstuff@gmail.com>2023-08-15 21:32:50 +0200
commitdc47feb2137d46bec72b60f3dc3ef9e90fb26a27 (patch)
treea58367c446455f572ae56126e1734311d8939c25 /src/main/java/me
parentb1fc5db77f493b0fb2d09fc26b770f45fd354b89 (diff)
downloadSkyblocker-dc47feb2137d46bec72b60f3dc3ef9e90fb26a27.tar.gz
Skyblocker-dc47feb2137d46bec72b60f3dc3ef9e90fb26a27.tar.bz2
Skyblocker-dc47feb2137d46bec72b60f3dc3ef9e90fb26a27.zip
Add format version file to resource pack for future breaking changes.
Diffstat (limited to 'src/main/java/me')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java36
2 files changed, 33 insertions, 5 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java
index feb351da..76b675ce 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java
@@ -66,7 +66,7 @@ public class ScreenBuilder {
}
} catch (Exception ex) {
// rethrow as unchecked exception so that I don't have to catch anything in the ScreenMaster
- throw new IllegalStateException("Failed to load file " + ident + "Reason: " + ex.getMessage());
+ throw new IllegalStateException("Failed to load file " + ident + ". Reason: " + ex.getMessage());
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
index 5c4351fd..165e875d 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
@@ -1,17 +1,26 @@
package me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder;
+import java.io.BufferedReader;
import java.util.HashMap;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+
import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline.PipelineStage;
import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerLocator;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
import net.fabricmc.fabric.api.resource.ResourcePackActivationType;
import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener;
import net.fabricmc.loader.api.FabricLoader;
+import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.resource.Resource;
import net.minecraft.resource.ResourceManager;
@@ -22,6 +31,8 @@ public class ScreenMaster {
private static final Logger LOGGER = LoggerFactory.getLogger("skyblocker");
+ private static final int VERSION = 1;
+
private static HashMap<String, ScreenBuilder> standardMap = new HashMap<>();
private static HashMap<String, ScreenBuilder> screenAMap = new HashMap<>();
private static HashMap<String, ScreenBuilder> screenBMap = new HashMap<>();
@@ -99,20 +110,37 @@ public class ScreenMaster {
screenAMap.clear();
screenBMap.clear();
- int ex = 0;
+ int excnt = 0;
+
+ for (Map.Entry<Identifier, Resource> entry : manager
+ .findResources("tabhud", path -> path.getPath().endsWith("version.json"))
+ .entrySet()) {
+
+ try (BufferedReader reader = MinecraftClient.getInstance().getResourceManager()
+ .openAsReader(entry.getKey());) {
+ JsonObject json = JsonParser.parseReader(reader).getAsJsonObject();
+ if (json.get("format_version").getAsInt() != VERSION) {
+ throw new IllegalStateException(String.format("Resource pack isn't compatible! Expected version %d, got %d", VERSION, json.get("format_version").getAsInt()));
+ }
+
+ } catch (Exception ex) {
+ throw new IllegalStateException(
+ "Rejected this resource pack. Reason: " + ex.getMessage());
+ }
+ }
for (Map.Entry<Identifier, Resource> entry : manager
- .findResources("tabhud", path -> path.getPath().endsWith(".json"))
+ .findResources("tabhud", path -> path.getPath().endsWith(".json") && !path.getPath().endsWith("version.json"))
.entrySet()) {
try {
load(entry.getKey());
} catch (Exception e) {
LOGGER.error(e.getMessage());
- ex++;
+ excnt++;
}
}
- if (ex > 0) {
+ if (excnt > 0) {
throw new IllegalStateException("This screen definition isn't valid, see above");
}
}