From c04e533a61d17edc3058a1cee6bc9361fa4fd893 Mon Sep 17 00:00:00 2001 From: LexManos Date: Wed, 19 Jun 2024 15:09:37 -0700 Subject: [PATCH] Fix conditional checking swallowing decoding errors when loading registry entries from datapacks. Fixes #9995 --- .../resources/RegistryDataLoader.java.patch | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/patches/minecraft/net/minecraft/resources/RegistryDataLoader.java.patch b/patches/minecraft/net/minecraft/resources/RegistryDataLoader.java.patch index 84c872e294..04aa60c2cf 100644 --- a/patches/minecraft/net/minecraft/resources/RegistryDataLoader.java.patch +++ b/patches/minecraft/net/minecraft/resources/RegistryDataLoader.java.patch @@ -40,17 +40,26 @@ RegistryOps p_332135_, ResourceKey p_332850_, Resource p_335244_, -@@ -208,7 +_,14 @@ +@@ -208,7 +_,23 @@ ) throws IOException { try (Reader reader = p_335244_.openAsReader()) { JsonElement jsonelement = JsonParser.parseReader(reader); - DataResult dataresult = p_333909_.parse(p_332135_, jsonelement); + + var result = p_333909_.decode(p_332135_, jsonelement); -+ if (result.result().map(p -> p.getFirst()).isEmpty()) { -+ LOGGER.debug("Skipping {} conditions not met", p_332850_); -+ return; ++ ++ if (result.isError()) { ++ LOGGER.error("Couldn't parse data file {}: {}", p_332850_, result.error().get().message()); ++ throw new IllegalStateException("Couldn't parse data file " + p_332850_ + ": " + result.error().get().message()); + } ++ ++ var mappedResult = result.result().map(a -> a.getFirst()); ++ ++ if (mappedResult.get().isEmpty()) { ++ LOGGER.debug("Skipping {} conditions not met", p_332850_); ++ return; ++ } ++ + DataResult dataresult = result.map(p -> p.mapFirst(Optional::get)).map(p -> p.getFirst()); + E e = dataresult.getOrThrow();