From a5779a716bfb0d5cfd84eebaf41cd999bd56c021 Mon Sep 17 00:00:00 2001 From: Camotoy <20743703+Camotoy@users.noreply.github.com> Date: Sun, 3 Oct 2021 10:54:00 -0400 Subject: [PATCH] Better handling of invalid items in recipe translator Stonecutter recipes will now be processed correctly, even if an item is modded. Co-authored-by: Setadokalo --- .../java/JavaDeclareRecipesTranslator.java | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareRecipesTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareRecipesTranslator.java index 8d01470e0..4b456c0c4 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareRecipesTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareRecipesTranslator.java @@ -85,6 +85,10 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator { ShapelessRecipeData shapelessRecipeData = (ShapelessRecipeData) recipe.getData(); ItemData output = ItemTranslator.translateToBedrock(session, shapelessRecipeData.getResult()); + if (output.equals(ItemData.AIR)) { + // Likely modded item that Bedrock will complain about if it persists + continue; + } // Strip NBT - tools won't appear in the recipe book otherwise output = output.toBuilder().tag(null).build(); ItemData[][] inputCombinations = combinations(session, shapelessRecipeData.getIngredients()); @@ -98,6 +102,10 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator { ShapedRecipeData shapedRecipeData = (ShapedRecipeData) recipe.getData(); ItemData output = ItemTranslator.translateToBedrock(session, shapedRecipeData.getResult()); + if (output.equals(ItemData.AIR)) { + // Likely modded item that Bedrock will complain about if it persists + continue; + } // See above output = output.toBuilder().tag(null).build(); ItemData[][] inputCombinations = combinations(session, shapedRecipeData.getIngredients()); @@ -136,7 +144,9 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator - session.getItemMappings().getItems().get(stoneCuttingRecipeData.getResult().getId()).getJavaIdentifier()))); + session.getItemMappings().getItems() + .getOrDefault(stoneCuttingRecipeData.getResult().getId(), ItemMapping.AIR) + .getJavaIdentifier()))); // Now that it's sorted, let's translate these recipes for (StoneCuttingRecipeData stoneCuttingData : data.getValue()) { @@ -144,6 +154,10 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator new IntArrayList()); outputs.add(stoneCuttingData.getResult().getId()); } }