From dca34b61c70567727f7237b4f7e00f5030dad3af Mon Sep 17 00:00:00 2001 From: Uko Koknevics Date: Sun, 3 Nov 2024 22:07:33 +0200 Subject: BREAK: Fix a bug in recipe-derived EMC calculation. This likely changes EMC values wildly! --- src/main/java/lv/enes/mc/eris_alchemy/Emc.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/lv/enes/mc/eris_alchemy/Emc.java b/src/main/java/lv/enes/mc/eris_alchemy/Emc.java index cb782e5..f0b21db 100644 --- a/src/main/java/lv/enes/mc/eris_alchemy/Emc.java +++ b/src/main/java/lv/enes/mc/eris_alchemy/Emc.java @@ -54,6 +54,8 @@ public final class Emc { return FORMATTER.format(value); } + /** Returns the EMC for one item not the entire stack. + * @see #getTotal(ItemStack) */ public static OptionalDouble get(ItemStack stack) { if (stack.isEmpty()) { return OptionalDouble.empty(); @@ -74,6 +76,14 @@ public final class Emc { .findFirst(); } + /** getTotal = get * count */ + public static OptionalDouble getTotal(ItemStack stack) { + return get(stack).stream() + .map(x -> x * stack.getCount()) + .filter(x -> x > 0) + .findFirst(); + } + public static OptionalDouble get(ResourceLocation itemId) { return VALUES.getOrDefault(itemId, OptionalDouble.empty()); } @@ -133,7 +143,7 @@ public final class Emc { private static OptionalDouble calcEmcForIngredient(Ingredient ingredient) { return Arrays.stream(ingredient.getItems()) - .map(Emc::get) + .map(Emc::getTotal) .flatMapToDouble(OptionalDouble::stream) .average(); } @@ -155,7 +165,7 @@ public final class Emc { var remainderEmcOpt = recipe.remainder() .stream() - .map(Emc::get) + .map(Emc::getTotal) .collect(new OptionalDoubleSummer()); if (remainderEmcOpt.isEmpty()) { -- cgit v1.2.3