diff --git a/src/main/java/com/altnoir/mia/block/entity/AbyssSpawnerBlockEntity.java b/src/main/java/com/altnoir/mia/block/entity/AbyssSpawnerBlockEntity.java index c61891d..acafe7a 100644 --- a/src/main/java/com/altnoir/mia/block/entity/AbyssSpawnerBlockEntity.java +++ b/src/main/java/com/altnoir/mia/block/entity/AbyssSpawnerBlockEntity.java @@ -109,6 +109,7 @@ public void setPatternId(@Nullable ResourceLocation patternId) { } @Nullable + @Override public ResourceLocation getPatternId() { return this.patternId; } @@ -125,10 +126,12 @@ public void refreshPattern() { } @Nullable + @Override public AbyssTrialSpawnerPattern getPattern() { return this.cachedPattern; } + @Override public boolean hasValidPattern() { return this.cachedPattern != null; } diff --git a/src/main/java/com/altnoir/mia/core/spawner/AbyssTrialSpawnerManager.java b/src/main/java/com/altnoir/mia/core/spawner/AbyssTrialSpawnerManager.java index 0512e47..5f5d67f 100644 --- a/src/main/java/com/altnoir/mia/core/spawner/AbyssTrialSpawnerManager.java +++ b/src/main/java/com/altnoir/mia/core/spawner/AbyssTrialSpawnerManager.java @@ -56,8 +56,8 @@ public AbyssTrialSpawnerManager() { var fixedLoc = ResourceLocation.fromNamespaceAndPath(namespace, parts[0]); var res = entry.getValue(); - try (var stream = res.open()) { - var json = GsonHelper.fromJson(GSON, new InputStreamReader(stream), JsonElement.class); + try (var stream = res.open(); var reader = new InputStreamReader(stream)) { + var json = GsonHelper.fromJson(GSON, reader, JsonElement.class); result.put(fixedLoc, json); } catch (IOException | JsonParseException e) { LOGGER.error("Failed to load trial spawner JSON from {}", fileLoc, e); diff --git a/src/main/java/com/altnoir/mia/util/MiaUtil.java b/src/main/java/com/altnoir/mia/util/MiaUtil.java index a9570fc..2363ce1 100644 --- a/src/main/java/com/altnoir/mia/util/MiaUtil.java +++ b/src/main/java/com/altnoir/mia/util/MiaUtil.java @@ -222,6 +222,11 @@ public static boolean isCreativeOrSpectator(Player player) { return null; } + // Ensure there is at least one character after basePath before substring + if (filePath.length() <= basePath.length()) { + return null; + } + var trimmedPath = filePath.substring(basePath.length() + 1); if (trimmedPath.endsWith(".json")) { trimmedPath = trimmedPath.substring(0, trimmedPath.length() - 5);