From cfe2679dab38a5b2b79157e5cdb73d49f093ba1f Mon Sep 17 00:00:00 2001 From: CaptainGummiball <151415484+CptGummiball@users.noreply.github.com> Date: Mon, 21 Sep 2026 10:04:43 +0200 Subject: [PATCH] Refactor container check and improve recipe handling Fix NullPointerException when a Farm & Charm pot recipe contains a container but does not define requireContainer --- .../dev/ninjdai/letsdocompat/RecipeJsonUtil.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/common/src/main/java/dev/ninjdai/letsdocompat/RecipeJsonUtil.java b/common/src/main/java/dev/ninjdai/letsdocompat/RecipeJsonUtil.java index 383582d..a0b3ac5 100644 --- a/common/src/main/java/dev/ninjdai/letsdocompat/RecipeJsonUtil.java +++ b/common/src/main/java/dev/ninjdai/letsdocompat/RecipeJsonUtil.java @@ -21,7 +21,11 @@ public final class RecipeJsonUtil { FDCookingPotRecipe.add("type", new JsonPrimitive("farmersdelight:cooking")); FDCookingPotRecipe.add("recipe_book_tab", new JsonPrimitive("meals")); FDCookingPotRecipe.add("ingredients", ldRecipe.getAsJsonArray("ingredients")); - if (ldRecipe.has("container") && ldRecipe.getAsJsonPrimitive("requireContainer").getAsBoolean()) { + if (ldRecipe.has("container") + && ldRecipe.has("requireContainer") + && ldRecipe.get("requireContainer").isJsonPrimitive() + && ldRecipe.getAsJsonPrimitive("requireContainer").isBoolean() + && ldRecipe.getAsJsonPrimitive("requireContainer").getAsBoolean()) { FDCookingPotRecipe.add("container", ldRecipe.get("container")); } FDCookingPotRecipe.add("result", ldRecipe.get("result")); @@ -29,7 +33,7 @@ public final class RecipeJsonUtil { return FDCookingPotRecipe; }; - @Nullable + @Nullable public static final RecipeConvertor generateLDCookingPotFromFDCookingPot = (fdRecipe) -> { JsonObject letsDoCookingPotRecipe = new JsonObject(); letsDoCookingPotRecipe.add("type", new JsonPrimitive("farm_and_charm:pot_cooking")); @@ -61,7 +65,7 @@ public final class RecipeJsonUtil { return letsDoCookingPotRecipe; }; - public static final RecipeConvertor generateCreateMixerFromFCBowl = (jsonRecipe) -> { + public static final RecipeConvertor generateCreateMixerFromFCBowl = (jsonRecipe) -> { JsonObject createMixerRecipe = new JsonObject(); createMixerRecipe.add("type", new JsonPrimitive("create:mixing")); createMixerRecipe.add("ingredients", jsonRecipe.getAsJsonArray("ingredients")); @@ -72,7 +76,7 @@ public final class RecipeJsonUtil { return createMixerRecipe; }; - + public static final RecipeConvertor generateCreateMillingFromFDMincer = (jsonRecipe) -> { JsonObject createMillingRecipe = new JsonObject(); createMillingRecipe.add("type", new JsonPrimitive("create:milling")); @@ -88,7 +92,7 @@ public final class RecipeJsonUtil { return createMillingRecipe; }; - + static { RECIPE_CONVERSION_MAP.put("farm_and_charm:pot_cooking", List.of( new Tuple<>("farmersdelight", RecipeJsonUtil.generateFDCookingPotFromLDCookingPot) @@ -104,4 +108,4 @@ public final class RecipeJsonUtil { public interface RecipeConvertor { JsonObject generate(JsonObject jsonRecipe); } -} \ No newline at end of file +}