From 198f055a3281f0c7c8c4140bb2b8fab4c867e326 Mon Sep 17 00:00:00 2001 From: LatvianModder Date: Thu, 18 Jul 2024 01:25:57 +0300 Subject: [PATCH] Added log_erroring_parsed_recipes dev option --- .../latvian/mods/kubejs/DevProperties.java | 2 ++ .../mods/kubejs/recipe/KubeRecipe.java | 9 ++++++--- .../mods/kubejs/recipe/RecipeHelper.java | 10 +++++++--- .../recipe/schema/UnknownKubeRecipe.java | 20 +++++++++++++++---- 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/main/java/dev/latvian/mods/kubejs/DevProperties.java b/src/main/java/dev/latvian/mods/kubejs/DevProperties.java index f6856d3ff..ab71a99bf 100644 --- a/src/main/java/dev/latvian/mods/kubejs/DevProperties.java +++ b/src/main/java/dev/latvian/mods/kubejs/DevProperties.java @@ -25,6 +25,7 @@ public static void reload() { public boolean logRecipeDebug; public boolean logSkippedTags; public boolean logErroringRecipes; + public boolean logErroringParsedRecipes; public boolean logInvalidRecipeHandlers; public boolean logSkippedPlugins; public boolean logGeneratedData; @@ -51,6 +52,7 @@ protected void load() { logRecipeDebug = get("log_recipe_debug", false); logSkippedTags = get("log_skipped_tags", false); logErroringRecipes = get("log_erroring_recipes", true); + logErroringParsedRecipes = get("log_erroring_parsed_recipes", false); logInvalidRecipeHandlers = get("log_invalid_recipe_handlers", true); logSkippedPlugins = get("log_skipped_plugins", true); logGeneratedData = get("log_generated_data", false); diff --git a/src/main/java/dev/latvian/mods/kubejs/recipe/KubeRecipe.java b/src/main/java/dev/latvian/mods/kubejs/recipe/KubeRecipe.java index 2321b3c42..45d19266e 100644 --- a/src/main/java/dev/latvian/mods/kubejs/recipe/KubeRecipe.java +++ b/src/main/java/dev/latvian/mods/kubejs/recipe/KubeRecipe.java @@ -36,7 +36,6 @@ import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeSerializer; -import net.neoforged.fml.loading.FMLLoader; import org.apache.commons.lang3.mutable.MutableObject; import org.jetbrains.annotations.Nullable; @@ -505,7 +504,7 @@ public RecipeHolder createRecipe() { return new RecipeHolder<>(getOrCreateId(), originalRecipe.getValue()); } - return RecipeHelper.fromJson(type.event.registries.json(), getSerializationTypeFunction().schemaType.getSerializer(), getOrCreateId(), json, !FMLLoader.isProduction()); + return RecipeHelper.fromJson(type.event.registries.json(), getSerializationTypeFunction().schemaType.getSerializer(), getOrCreateId(), json, DevProperties.get().logErroringParsedRecipes); } @Nullable @@ -514,7 +513,11 @@ public Recipe getOriginalRecipe() { originalRecipe = new MutableObject<>(); try { // todo: this sucks - originalRecipe.setValue(RecipeHelper.fromJson(type.event.registries.json(), type.schemaType.getSerializer(), getOrCreateId(), json, !FMLLoader.isProduction()).value()); + var holder = RecipeHelper.fromJson(type.event.registries.json(), type.schemaType.getSerializer(), getOrCreateId(), json, DevProperties.get().logErroringParsedRecipes); + + if (holder != null) { + originalRecipe.setValue(holder.value()); + } } catch (Throwable e) { ConsoleJS.SERVER.error("Could not create recipe from json for " + this, e); } diff --git a/src/main/java/dev/latvian/mods/kubejs/recipe/RecipeHelper.java b/src/main/java/dev/latvian/mods/kubejs/recipe/RecipeHelper.java index e5e94bcd4..fa0fb7001 100644 --- a/src/main/java/dev/latvian/mods/kubejs/recipe/RecipeHelper.java +++ b/src/main/java/dev/latvian/mods/kubejs/recipe/RecipeHelper.java @@ -39,12 +39,16 @@ static RecipeHolder fromJson(DynamicOps ops, RecipeSerializer try { var recipe = codec.decode(ops, map.get()); - if (recipe.error().isPresent()) { + if (recipe.isSuccess()) { + return new RecipeHolder<>(id, recipe.getOrThrow()); + } else if (recipe.error().isPresent()) { if (errors) { ConsoleJS.SERVER.error("Error parsing recipe " + id + ": " + recipe.error().get().message()); } - } else if (recipe.isSuccess()) { - return new RecipeHolder<>(id, recipe.getOrThrow()); + } else { + if (errors) { + ConsoleJS.SERVER.error("Error parsing recipe " + id + ": Unknown"); + } } } catch (Exception e) { if (errors) { diff --git a/src/main/java/dev/latvian/mods/kubejs/recipe/schema/UnknownKubeRecipe.java b/src/main/java/dev/latvian/mods/kubejs/recipe/schema/UnknownKubeRecipe.java index 48c895b90..a2bd8a869 100644 --- a/src/main/java/dev/latvian/mods/kubejs/recipe/schema/UnknownKubeRecipe.java +++ b/src/main/java/dev/latvian/mods/kubejs/recipe/schema/UnknownKubeRecipe.java @@ -22,8 +22,14 @@ public void serialize() { @Override public boolean hasInput(Context cx, ReplacementMatchInfo match) { - if (CommonProperties.get().matchJsonRecipes && match.match() instanceof ItemMatch m && getOriginalRecipe() != null) { - var arr = getOriginalRecipe().getIngredients(); + if (CommonProperties.get().matchJsonRecipes && match.match() instanceof ItemMatch m) { + var original = getOriginalRecipe(); + + if (original == null) { + return false; + } + + var arr = original.getIngredients(); //noinspection ConstantValue if (arr == null || arr.isEmpty()) { @@ -47,8 +53,14 @@ public boolean replaceInput(Context cx, ReplacementMatchInfo match, Object with) @Override public boolean hasOutput(Context cx, ReplacementMatchInfo match) { - if (CommonProperties.get().matchJsonRecipes && match.match() instanceof ItemMatch m && getOriginalRecipe() != null) { - var result = getOriginalRecipe().getResultItem(type.event.registries.access()); + if (CommonProperties.get().matchJsonRecipes && match.match() instanceof ItemMatch m) { + var original = getOriginalRecipe(); + + if (original == null) { + return false; + } + + var result = original.getResultItem(type.event.registries.access()); //noinspection ConstantValue return result != null && result != ItemStack.EMPTY && !result.isEmpty() && m.matches(cx, result, match.exact()); }