diff --git a/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/mixin/perf/ingredient_item_deduplication/IngredientMixin.java b/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/mixin/perf/ingredient_item_deduplication/IngredientMixin.java index 3d8129bb..ee1848ac 100644 --- a/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/mixin/perf/ingredient_item_deduplication/IngredientMixin.java +++ b/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/mixin/perf/ingredient_item_deduplication/IngredientMixin.java @@ -14,4 +14,16 @@ public class IngredientMixin { private static Stream injectDeduplicationPass(Stream stream) { return stream.map(IngredientValueDeduplicator::deduplicate); } + + @ModifyVariable(method = "([Lnet/minecraft/world/item/crafting/Ingredient$Value;)V", at = @At("HEAD"), argsOnly = true, ordinal = 0) + private static Ingredient.Value[] injectDeduplicationPassArray(Ingredient.Value[] values) { + if (values.length == 0) { + return values; + } + Ingredient.Value[] newValues = new Ingredient.Value[values.length]; + for (int i = 0; i < values.length; i++) { + newValues[i] = IngredientValueDeduplicator.deduplicate(values[i]); + } + return newValues; + } } diff --git a/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/recipe/IngredientValueDeduplicator.java b/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/recipe/IngredientValueDeduplicator.java index 25e2cebe..55a08e62 100644 --- a/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/recipe/IngredientValueDeduplicator.java +++ b/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/recipe/IngredientValueDeduplicator.java @@ -70,7 +70,7 @@ public class IngredientValueDeduplicator { }); public static Ingredient.Value deduplicate(Ingredient.Value value) { - if (value.getClass() == Ingredient.ItemValue.class) { + if (value != null && value.getClass() == Ingredient.ItemValue.class) { synchronized (VALUES) { return VALUES.addOrGet((Ingredient.ItemValue)value); }